content: {-
     Kubernetes
  
     No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
  
     OpenAPI Version: 3.0.1
     Kubernetes API version: release-1.24
     Generated by OpenAPI Generator (https://openapi-generator.tech)
  -}
  
  {-|
  Module : Kubernetes.OpenAPI.API.RbacAuthorizationV1
  -}
  
  {-# LANGUAGE FlexibleContexts #-}
  {-# LANGUAGE FlexibleInstances #-}
  {-# LANGUAGE MonoLocalBinds #-}
  {-# LANGUAGE MultiParamTypeClasses #-}
  {-# LANGUAGE OverloadedStrings #-}
  {-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-imports #-}
  
  module Kubernetes.OpenAPI.API.RbacAuthorizationV1 where
  
  import Kubernetes.OpenAPI.Core
  import Kubernetes.OpenAPI.MimeTypes
  import Kubernetes.OpenAPI.Model as M
  
  import qualified Data.Aeson as A
  import qualified Data.ByteString as B
  import qualified Data.ByteString.Lazy as BL
  import qualified Data.Data as P (Typeable, TypeRep, typeOf, typeRep)
  import qualified Data.Foldable as P
  import qualified Data.Map as Map
  import qualified Data.Maybe as P
  import qualified Data.Proxy as P (Proxy(..))
  import qualified Data.Set as Set
  import qualified Data.String as P
  import qualified Data.Text as T
  import qualified Data.Text.Encoding as T
  import qualified Data.Text.Lazy as TL
  import qualified Data.Text.Lazy.Encoding as TL
  import qualified Data.Time as TI
  import qualified Network.HTTP.Client.MultipartFormData as NH
  import qualified Network.HTTP.Media as ME
  import qualified Network.HTTP.Types as NH
  import qualified Web.FormUrlEncoded as WH
  import qualified Web.HttpApiData as WH
  
  import Data.Text (Text)
  import GHC.Base ((<|>))
  
  import Prelude ((==),(/=),($), (.),(<$>),(<*>),(>>=),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty,maybe,pure,Monad,Applicative,Functor)
  import qualified Prelude as P
  
  -- * Operations
  
  
  -- ** RbacAuthorizationV1
  
  -- *** createClusterRole
  
  -- | @POST \/apis\/rbac.authorization.k8s.io\/v1\/clusterroles@
  -- 
  -- create a ClusterRole
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  createClusterRole
    :: (Consumes CreateClusterRole contentType, MimeRender contentType V1ClusterRole)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> V1ClusterRole -- ^ "body"
    -> KubernetesRequest CreateClusterRole contentType V1ClusterRole accept
  createClusterRole _  _ body =
    _mkRequest "POST" ["/apis/rbac.authorization.k8s.io/v1/clusterroles"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
      `setBodyParam` body
  
  data CreateClusterRole 
  instance HasBodyParam CreateClusterRole V1ClusterRole 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam CreateClusterRole Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam CreateClusterRole DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "fieldManager" - fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.
  instance HasOptionalParam CreateClusterRole FieldManager where
    applyOptionalParam req (FieldManager xs) =
      req `addQuery` toQuery ("fieldManager", Just xs)
  
  -- | /Optional Param/ "fieldValidation" - fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.
  instance HasOptionalParam CreateClusterRole FieldValidation where
    applyOptionalParam req (FieldValidation xs) =
      req `addQuery` toQuery ("fieldValidation", Just xs)
  
  -- | @*/*@
  instance MimeType mtype => Consumes CreateClusterRole mtype
  
  -- | @application/json@
  instance Produces CreateClusterRole MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces CreateClusterRole MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces CreateClusterRole MimeYaml
  
  
  -- *** createClusterRoleBinding
  
  -- | @POST \/apis\/rbac.authorization.k8s.io\/v1\/clusterrolebindings@
  -- 
  -- create a ClusterRoleBinding
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  createClusterRoleBinding
    :: (Consumes CreateClusterRoleBinding contentType, MimeRender contentType V1ClusterRoleBinding)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> V1ClusterRoleBinding -- ^ "body"
    -> KubernetesRequest CreateClusterRoleBinding contentType V1ClusterRoleBinding accept
  createClusterRoleBinding _  _ body =
    _mkRequest "POST" ["/apis/rbac.authorization.k8s.io/v1/clusterrolebindings"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
      `setBodyParam` body
  
  data CreateClusterRoleBinding 
  instance HasBodyParam CreateClusterRoleBinding V1ClusterRoleBinding 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam CreateClusterRoleBinding Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam CreateClusterRoleBinding DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "fieldManager" - fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.
  instance HasOptionalParam CreateClusterRoleBinding FieldManager where
    applyOptionalParam req (FieldManager xs) =
      req `addQuery` toQuery ("fieldManager", Just xs)
  
  -- | /Optional Param/ "fieldValidation" - fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.
  instance HasOptionalParam CreateClusterRoleBinding FieldValidation where
    applyOptionalParam req (FieldValidation xs) =
      req `addQuery` toQuery ("fieldValidation", Just xs)
  
  -- | @*/*@
  instance MimeType mtype => Consumes CreateClusterRoleBinding mtype
  
  -- | @application/json@
  instance Produces CreateClusterRoleBinding MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces CreateClusterRoleBinding MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces CreateClusterRoleBinding MimeYaml
  
  
  -- *** createNamespacedRole
  
  -- | @POST \/apis\/rbac.authorization.k8s.io\/v1\/namespaces\/{namespace}\/roles@
  -- 
  -- create a Role
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  createNamespacedRole
    :: (Consumes CreateNamespacedRole contentType, MimeRender contentType V1Role)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> V1Role -- ^ "body"
    -> Namespace -- ^ "namespace" -  object name and auth scope, such as for teams and projects
    -> KubernetesRequest CreateNamespacedRole contentType V1Role accept
  createNamespacedRole _  _ body (Namespace namespace) =
    _mkRequest "POST" ["/apis/rbac.authorization.k8s.io/v1/namespaces/",toPath namespace,"/roles"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
      `setBodyParam` body
  
  data CreateNamespacedRole 
  instance HasBodyParam CreateNamespacedRole V1Role 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam CreateNamespacedRole Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam CreateNamespacedRole DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "fieldManager" - fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.
  instance HasOptionalParam CreateNamespacedRole FieldManager where
    applyOptionalParam req (FieldManager xs) =
      req `addQuery` toQuery ("fieldManager", Just xs)
  
  -- | /Optional Param/ "fieldValidation" - fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.
  instance HasOptionalParam CreateNamespacedRole FieldValidation where
    applyOptionalParam req (FieldValidation xs) =
      req `addQuery` toQuery ("fieldValidation", Just xs)
  
  -- | @*/*@
  instance MimeType mtype => Consumes CreateNamespacedRole mtype
  
  -- | @application/json@
  instance Produces CreateNamespacedRole MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces CreateNamespacedRole MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces CreateNamespacedRole MimeYaml
  
  
  -- *** createNamespacedRoleBinding
  
  -- | @POST \/apis\/rbac.authorization.k8s.io\/v1\/namespaces\/{namespace}\/rolebindings@
  -- 
  -- create a RoleBinding
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  createNamespacedRoleBinding
    :: (Consumes CreateNamespacedRoleBinding contentType, MimeRender contentType V1RoleBinding)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> V1RoleBinding -- ^ "body"
    -> Namespace -- ^ "namespace" -  object name and auth scope, such as for teams and projects
    -> KubernetesRequest CreateNamespacedRoleBinding contentType V1RoleBinding accept
  createNamespacedRoleBinding _  _ body (Namespace namespace) =
    _mkRequest "POST" ["/apis/rbac.authorization.k8s.io/v1/namespaces/",toPath namespace,"/rolebindings"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
      `setBodyParam` body
  
  data CreateNamespacedRoleBinding 
  instance HasBodyParam CreateNamespacedRoleBinding V1RoleBinding 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam CreateNamespacedRoleBinding Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam CreateNamespacedRoleBinding DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "fieldManager" - fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.
  instance HasOptionalParam CreateNamespacedRoleBinding FieldManager where
    applyOptionalParam req (FieldManager xs) =
      req `addQuery` toQuery ("fieldManager", Just xs)
  
  -- | /Optional Param/ "fieldValidation" - fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.
  instance HasOptionalParam CreateNamespacedRoleBinding FieldValidation where
    applyOptionalParam req (FieldValidation xs) =
      req `addQuery` toQuery ("fieldValidation", Just xs)
  
  -- | @*/*@
  instance MimeType mtype => Consumes CreateNamespacedRoleBinding mtype
  
  -- | @application/json@
  instance Produces CreateNamespacedRoleBinding MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces CreateNamespacedRoleBinding MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces CreateNamespacedRoleBinding MimeYaml
  
  
  -- *** deleteClusterRole
  
  -- | @DELETE \/apis\/rbac.authorization.k8s.io\/v1\/clusterroles\/{name}@
  -- 
  -- delete a ClusterRole
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  deleteClusterRole
    :: (Consumes DeleteClusterRole contentType)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> Name -- ^ "name" -  name of the ClusterRole
    -> KubernetesRequest DeleteClusterRole contentType V1Status accept
  deleteClusterRole _  _ (Name name) =
    _mkRequest "DELETE" ["/apis/rbac.authorization.k8s.io/v1/clusterroles/",toPath name]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data DeleteClusterRole 
  instance HasBodyParam DeleteClusterRole V1DeleteOptions 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam DeleteClusterRole Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam DeleteClusterRole DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "gracePeriodSeconds" - The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
  instance HasOptionalParam DeleteClusterRole GracePeriodSeconds where
    applyOptionalParam req (GracePeriodSeconds xs) =
      req `addQuery` toQuery ("gracePeriodSeconds", Just xs)
  
  -- | /Optional Param/ "orphanDependents" - Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.
  instance HasOptionalParam DeleteClusterRole OrphanDependents where
    applyOptionalParam req (OrphanDependents xs) =
      req `addQuery` toQuery ("orphanDependents", Just xs)
  
  -- | /Optional Param/ "propagationPolicy" - Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.
  instance HasOptionalParam DeleteClusterRole PropagationPolicy where
    applyOptionalParam req (PropagationPolicy xs) =
      req `addQuery` toQuery ("propagationPolicy", Just xs)
  
  -- | @*/*@
  instance MimeType mtype => Consumes DeleteClusterRole mtype
  
  -- | @application/json@
  instance Produces DeleteClusterRole MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces DeleteClusterRole MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces DeleteClusterRole MimeYaml
  
  
  -- *** deleteClusterRoleBinding
  
  -- | @DELETE \/apis\/rbac.authorization.k8s.io\/v1\/clusterrolebindings\/{name}@
  -- 
  -- delete a ClusterRoleBinding
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  deleteClusterRoleBinding
    :: (Consumes DeleteClusterRoleBinding contentType)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> Name -- ^ "name" -  name of the ClusterRoleBinding
    -> KubernetesRequest DeleteClusterRoleBinding contentType V1Status accept
  deleteClusterRoleBinding _  _ (Name name) =
    _mkRequest "DELETE" ["/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/",toPath name]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data DeleteClusterRoleBinding 
  instance HasBodyParam DeleteClusterRoleBinding V1DeleteOptions 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam DeleteClusterRoleBinding Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam DeleteClusterRoleBinding DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "gracePeriodSeconds" - The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
  instance HasOptionalParam DeleteClusterRoleBinding GracePeriodSeconds where
    applyOptionalParam req (GracePeriodSeconds xs) =
      req `addQuery` toQuery ("gracePeriodSeconds", Just xs)
  
  -- | /Optional Param/ "orphanDependents" - Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.
  instance HasOptionalParam DeleteClusterRoleBinding OrphanDependents where
    applyOptionalParam req (OrphanDependents xs) =
      req `addQuery` toQuery ("orphanDependents", Just xs)
  
  -- | /Optional Param/ "propagationPolicy" - Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.
  instance HasOptionalParam DeleteClusterRoleBinding PropagationPolicy where
    applyOptionalParam req (PropagationPolicy xs) =
      req `addQuery` toQuery ("propagationPolicy", Just xs)
  
  -- | @*/*@
  instance MimeType mtype => Consumes DeleteClusterRoleBinding mtype
  
  -- | @application/json@
  instance Produces DeleteClusterRoleBinding MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces DeleteClusterRoleBinding MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces DeleteClusterRoleBinding MimeYaml
  
  
  -- *** deleteCollectionClusterRole
  
  -- | @DELETE \/apis\/rbac.authorization.k8s.io\/v1\/clusterroles@
  -- 
  -- delete collection of ClusterRole
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  deleteCollectionClusterRole
    :: (Consumes DeleteCollectionClusterRole contentType)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> KubernetesRequest DeleteCollectionClusterRole contentType V1Status accept
  deleteCollectionClusterRole _  _ =
    _mkRequest "DELETE" ["/apis/rbac.authorization.k8s.io/v1/clusterroles"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data DeleteCollectionClusterRole 
  instance HasBodyParam DeleteCollectionClusterRole V1DeleteOptions 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam DeleteCollectionClusterRole Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "continue" - The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".  This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.
  instance HasOptionalParam DeleteCollectionClusterRole Continue where
    applyOptionalParam req (Continue xs) =
      req `addQuery` toQuery ("continue", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam DeleteCollectionClusterRole DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "fieldSelector" - A selector to restrict the list of returned objects by their fields. Defaults to everything.
  instance HasOptionalParam DeleteCollectionClusterRole FieldSelector where
    applyOptionalParam req (FieldSelector xs) =
      req `addQuery` toQuery ("fieldSelector", Just xs)
  
  -- | /Optional Param/ "gracePeriodSeconds" - The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
  instance HasOptionalParam DeleteCollectionClusterRole GracePeriodSeconds where
    applyOptionalParam req (GracePeriodSeconds xs) =
      req `addQuery` toQuery ("gracePeriodSeconds", Just xs)
  
  -- | /Optional Param/ "labelSelector" - A selector to restrict the list of returned objects by their labels. Defaults to everything.
  instance HasOptionalParam DeleteCollectionClusterRole LabelSelector where
    applyOptionalParam req (LabelSelector xs) =
      req `addQuery` toQuery ("labelSelector", Just xs)
  
  -- | /Optional Param/ "limit" - limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.  The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.
  instance HasOptionalParam DeleteCollectionClusterRole Limit where
    applyOptionalParam req (Limit xs) =
      req `addQuery` toQuery ("limit", Just xs)
  
  -- | /Optional Param/ "orphanDependents" - Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.
  instance HasOptionalParam DeleteCollectionClusterRole OrphanDependents where
    applyOptionalParam req (OrphanDependents xs) =
      req `addQuery` toQuery ("orphanDependents", Just xs)
  
  -- | /Optional Param/ "propagationPolicy" - Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.
  instance HasOptionalParam DeleteCollectionClusterRole PropagationPolicy where
    applyOptionalParam req (PropagationPolicy xs) =
      req `addQuery` toQuery ("propagationPolicy", Just xs)
  
  -- | /Optional Param/ "resourceVersion" - resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam DeleteCollectionClusterRole ResourceVersion where
    applyOptionalParam req (ResourceVersion xs) =
      req `addQuery` toQuery ("resourceVersion", Just xs)
  
  -- | /Optional Param/ "resourceVersionMatch" - resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam DeleteCollectionClusterRole ResourceVersionMatch where
    applyOptionalParam req (ResourceVersionMatch xs) =
      req `addQuery` toQuery ("resourceVersionMatch", Just xs)
  
  -- | /Optional Param/ "timeoutSeconds" - Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.
  instance HasOptionalParam DeleteCollectionClusterRole TimeoutSeconds where
    applyOptionalParam req (TimeoutSeconds xs) =
      req `addQuery` toQuery ("timeoutSeconds", Just xs)
  
  -- | @*/*@
  instance MimeType mtype => Consumes DeleteCollectionClusterRole mtype
  
  -- | @application/json@
  instance Produces DeleteCollectionClusterRole MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces DeleteCollectionClusterRole MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces DeleteCollectionClusterRole MimeYaml
  
  
  -- *** deleteCollectionClusterRoleBinding
  
  -- | @DELETE \/apis\/rbac.authorization.k8s.io\/v1\/clusterrolebindings@
  -- 
  -- delete collection of ClusterRoleBinding
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  deleteCollectionClusterRoleBinding
    :: (Consumes DeleteCollectionClusterRoleBinding contentType)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> KubernetesRequest DeleteCollectionClusterRoleBinding contentType V1Status accept
  deleteCollectionClusterRoleBinding _  _ =
    _mkRequest "DELETE" ["/apis/rbac.authorization.k8s.io/v1/clusterrolebindings"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data DeleteCollectionClusterRoleBinding 
  instance HasBodyParam DeleteCollectionClusterRoleBinding V1DeleteOptions 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam DeleteCollectionClusterRoleBinding Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "continue" - The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".  This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.
  instance HasOptionalParam DeleteCollectionClusterRoleBinding Continue where
    applyOptionalParam req (Continue xs) =
      req `addQuery` toQuery ("continue", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam DeleteCollectionClusterRoleBinding DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "fieldSelector" - A selector to restrict the list of returned objects by their fields. Defaults to everything.
  instance HasOptionalParam DeleteCollectionClusterRoleBinding FieldSelector where
    applyOptionalParam req (FieldSelector xs) =
      req `addQuery` toQuery ("fieldSelector", Just xs)
  
  -- | /Optional Param/ "gracePeriodSeconds" - The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
  instance HasOptionalParam DeleteCollectionClusterRoleBinding GracePeriodSeconds where
    applyOptionalParam req (GracePeriodSeconds xs) =
      req `addQuery` toQuery ("gracePeriodSeconds", Just xs)
  
  -- | /Optional Param/ "labelSelector" - A selector to restrict the list of returned objects by their labels. Defaults to everything.
  instance HasOptionalParam DeleteCollectionClusterRoleBinding LabelSelector where
    applyOptionalParam req (LabelSelector xs) =
      req `addQuery` toQuery ("labelSelector", Just xs)
  
  -- | /Optional Param/ "limit" - limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.  The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.
  instance HasOptionalParam DeleteCollectionClusterRoleBinding Limit where
    applyOptionalParam req (Limit xs) =
      req `addQuery` toQuery ("limit", Just xs)
  
  -- | /Optional Param/ "orphanDependents" - Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.
  instance HasOptionalParam DeleteCollectionClusterRoleBinding OrphanDependents where
    applyOptionalParam req (OrphanDependents xs) =
      req `addQuery` toQuery ("orphanDependents", Just xs)
  
  -- | /Optional Param/ "propagationPolicy" - Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.
  instance HasOptionalParam DeleteCollectionClusterRoleBinding PropagationPolicy where
    applyOptionalParam req (PropagationPolicy xs) =
      req `addQuery` toQuery ("propagationPolicy", Just xs)
  
  -- | /Optional Param/ "resourceVersion" - resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam DeleteCollectionClusterRoleBinding ResourceVersion where
    applyOptionalParam req (ResourceVersion xs) =
      req `addQuery` toQuery ("resourceVersion", Just xs)
  
  -- | /Optional Param/ "resourceVersionMatch" - resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam DeleteCollectionClusterRoleBinding ResourceVersionMatch where
    applyOptionalParam req (ResourceVersionMatch xs) =
      req `addQuery` toQuery ("resourceVersionMatch", Just xs)
  
  -- | /Optional Param/ "timeoutSeconds" - Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.
  instance HasOptionalParam DeleteCollectionClusterRoleBinding TimeoutSeconds where
    applyOptionalParam req (TimeoutSeconds xs) =
      req `addQuery` toQuery ("timeoutSeconds", Just xs)
  
  -- | @*/*@
  instance MimeType mtype => Consumes DeleteCollectionClusterRoleBinding mtype
  
  -- | @application/json@
  instance Produces DeleteCollectionClusterRoleBinding MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces DeleteCollectionClusterRoleBinding MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces DeleteCollectionClusterRoleBinding MimeYaml
  
  
  -- *** deleteCollectionNamespacedRole
  
  -- | @DELETE \/apis\/rbac.authorization.k8s.io\/v1\/namespaces\/{namespace}\/roles@
  -- 
  -- delete collection of Role
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  deleteCollectionNamespacedRole
    :: (Consumes DeleteCollectionNamespacedRole contentType)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> Namespace -- ^ "namespace" -  object name and auth scope, such as for teams and projects
    -> KubernetesRequest DeleteCollectionNamespacedRole contentType V1Status accept
  deleteCollectionNamespacedRole _  _ (Namespace namespace) =
    _mkRequest "DELETE" ["/apis/rbac.authorization.k8s.io/v1/namespaces/",toPath namespace,"/roles"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data DeleteCollectionNamespacedRole 
  instance HasBodyParam DeleteCollectionNamespacedRole V1DeleteOptions 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam DeleteCollectionNamespacedRole Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "continue" - The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".  This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.
  instance HasOptionalParam DeleteCollectionNamespacedRole Continue where
    applyOptionalParam req (Continue xs) =
      req `addQuery` toQuery ("continue", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam DeleteCollectionNamespacedRole DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "fieldSelector" - A selector to restrict the list of returned objects by their fields. Defaults to everything.
  instance HasOptionalParam DeleteCollectionNamespacedRole FieldSelector where
    applyOptionalParam req (FieldSelector xs) =
      req `addQuery` toQuery ("fieldSelector", Just xs)
  
  -- | /Optional Param/ "gracePeriodSeconds" - The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
  instance HasOptionalParam DeleteCollectionNamespacedRole GracePeriodSeconds where
    applyOptionalParam req (GracePeriodSeconds xs) =
      req `addQuery` toQuery ("gracePeriodSeconds", Just xs)
  
  -- | /Optional Param/ "labelSelector" - A selector to restrict the list of returned objects by their labels. Defaults to everything.
  instance HasOptionalParam DeleteCollectionNamespacedRole LabelSelector where
    applyOptionalParam req (LabelSelector xs) =
      req `addQuery` toQuery ("labelSelector", Just xs)
  
  -- | /Optional Param/ "limit" - limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.  The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.
  instance HasOptionalParam DeleteCollectionNamespacedRole Limit where
    applyOptionalParam req (Limit xs) =
      req `addQuery` toQuery ("limit", Just xs)
  
  -- | /Optional Param/ "orphanDependents" - Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.
  instance HasOptionalParam DeleteCollectionNamespacedRole OrphanDependents where
    applyOptionalParam req (OrphanDependents xs) =
      req `addQuery` toQuery ("orphanDependents", Just xs)
  
  -- | /Optional Param/ "propagationPolicy" - Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.
  instance HasOptionalParam DeleteCollectionNamespacedRole PropagationPolicy where
    applyOptionalParam req (PropagationPolicy xs) =
      req `addQuery` toQuery ("propagationPolicy", Just xs)
  
  -- | /Optional Param/ "resourceVersion" - resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam DeleteCollectionNamespacedRole ResourceVersion where
    applyOptionalParam req (ResourceVersion xs) =
      req `addQuery` toQuery ("resourceVersion", Just xs)
  
  -- | /Optional Param/ "resourceVersionMatch" - resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam DeleteCollectionNamespacedRole ResourceVersionMatch where
    applyOptionalParam req (ResourceVersionMatch xs) =
      req `addQuery` toQuery ("resourceVersionMatch", Just xs)
  
  -- | /Optional Param/ "timeoutSeconds" - Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.
  instance HasOptionalParam DeleteCollectionNamespacedRole TimeoutSeconds where
    applyOptionalParam req (TimeoutSeconds xs) =
      req `addQuery` toQuery ("timeoutSeconds", Just xs)
  
  -- | @*/*@
  instance MimeType mtype => Consumes DeleteCollectionNamespacedRole mtype
  
  -- | @application/json@
  instance Produces DeleteCollectionNamespacedRole MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces DeleteCollectionNamespacedRole MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces DeleteCollectionNamespacedRole MimeYaml
  
  
  -- *** deleteCollectionNamespacedRoleBinding
  
  -- | @DELETE \/apis\/rbac.authorization.k8s.io\/v1\/namespaces\/{namespace}\/rolebindings@
  -- 
  -- delete collection of RoleBinding
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  deleteCollectionNamespacedRoleBinding
    :: (Consumes DeleteCollectionNamespacedRoleBinding contentType)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> Namespace -- ^ "namespace" -  object name and auth scope, such as for teams and projects
    -> KubernetesRequest DeleteCollectionNamespacedRoleBinding contentType V1Status accept
  deleteCollectionNamespacedRoleBinding _  _ (Namespace namespace) =
    _mkRequest "DELETE" ["/apis/rbac.authorization.k8s.io/v1/namespaces/",toPath namespace,"/rolebindings"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data DeleteCollectionNamespacedRoleBinding 
  instance HasBodyParam DeleteCollectionNamespacedRoleBinding V1DeleteOptions 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam DeleteCollectionNamespacedRoleBinding Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "continue" - The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".  This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.
  instance HasOptionalParam DeleteCollectionNamespacedRoleBinding Continue where
    applyOptionalParam req (Continue xs) =
      req `addQuery` toQuery ("continue", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam DeleteCollectionNamespacedRoleBinding DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "fieldSelector" - A selector to restrict the list of returned objects by their fields. Defaults to everything.
  instance HasOptionalParam DeleteCollectionNamespacedRoleBinding FieldSelector where
    applyOptionalParam req (FieldSelector xs) =
      req `addQuery` toQuery ("fieldSelector", Just xs)
  
  -- | /Optional Param/ "gracePeriodSeconds" - The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
  instance HasOptionalParam DeleteCollectionNamespacedRoleBinding GracePeriodSeconds where
    applyOptionalParam req (GracePeriodSeconds xs) =
      req `addQuery` toQuery ("gracePeriodSeconds", Just xs)
  
  -- | /Optional Param/ "labelSelector" - A selector to restrict the list of returned objects by their labels. Defaults to everything.
  instance HasOptionalParam DeleteCollectionNamespacedRoleBinding LabelSelector where
    applyOptionalParam req (LabelSelector xs) =
      req `addQuery` toQuery ("labelSelector", Just xs)
  
  -- | /Optional Param/ "limit" - limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.  The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.
  instance HasOptionalParam DeleteCollectionNamespacedRoleBinding Limit where
    applyOptionalParam req (Limit xs) =
      req `addQuery` toQuery ("limit", Just xs)
  
  -- | /Optional Param/ "orphanDependents" - Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.
  instance HasOptionalParam DeleteCollectionNamespacedRoleBinding OrphanDependents where
    applyOptionalParam req (OrphanDependents xs) =
      req `addQuery` toQuery ("orphanDependents", Just xs)
  
  -- | /Optional Param/ "propagationPolicy" - Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.
  instance HasOptionalParam DeleteCollectionNamespacedRoleBinding PropagationPolicy where
    applyOptionalParam req (PropagationPolicy xs) =
      req `addQuery` toQuery ("propagationPolicy", Just xs)
  
  -- | /Optional Param/ "resourceVersion" - resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam DeleteCollectionNamespacedRoleBinding ResourceVersion where
    applyOptionalParam req (ResourceVersion xs) =
      req `addQuery` toQuery ("resourceVersion", Just xs)
  
  -- | /Optional Param/ "resourceVersionMatch" - resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam DeleteCollectionNamespacedRoleBinding ResourceVersionMatch where
    applyOptionalParam req (ResourceVersionMatch xs) =
      req `addQuery` toQuery ("resourceVersionMatch", Just xs)
  
  -- | /Optional Param/ "timeoutSeconds" - Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.
  instance HasOptionalParam DeleteCollectionNamespacedRoleBinding TimeoutSeconds where
    applyOptionalParam req (TimeoutSeconds xs) =
      req `addQuery` toQuery ("timeoutSeconds", Just xs)
  
  -- | @*/*@
  instance MimeType mtype => Consumes DeleteCollectionNamespacedRoleBinding mtype
  
  -- | @application/json@
  instance Produces DeleteCollectionNamespacedRoleBinding MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces DeleteCollectionNamespacedRoleBinding MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces DeleteCollectionNamespacedRoleBinding MimeYaml
  
  
  -- *** deleteNamespacedRole
  
  -- | @DELETE \/apis\/rbac.authorization.k8s.io\/v1\/namespaces\/{namespace}\/roles\/{name}@
  -- 
  -- delete a Role
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  deleteNamespacedRole
    :: (Consumes DeleteNamespacedRole contentType)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> Name -- ^ "name" -  name of the Role
    -> Namespace -- ^ "namespace" -  object name and auth scope, such as for teams and projects
    -> KubernetesRequest DeleteNamespacedRole contentType V1Status accept
  deleteNamespacedRole _  _ (Name name) (Namespace namespace) =
    _mkRequest "DELETE" ["/apis/rbac.authorization.k8s.io/v1/namespaces/",toPath namespace,"/roles/",toPath name]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data DeleteNamespacedRole 
  instance HasBodyParam DeleteNamespacedRole V1DeleteOptions 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam DeleteNamespacedRole Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam DeleteNamespacedRole DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "gracePeriodSeconds" - The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
  instance HasOptionalParam DeleteNamespacedRole GracePeriodSeconds where
    applyOptionalParam req (GracePeriodSeconds xs) =
      req `addQuery` toQuery ("gracePeriodSeconds", Just xs)
  
  -- | /Optional Param/ "orphanDependents" - Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.
  instance HasOptionalParam DeleteNamespacedRole OrphanDependents where
    applyOptionalParam req (OrphanDependents xs) =
      req `addQuery` toQuery ("orphanDependents", Just xs)
  
  -- | /Optional Param/ "propagationPolicy" - Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.
  instance HasOptionalParam DeleteNamespacedRole PropagationPolicy where
    applyOptionalParam req (PropagationPolicy xs) =
      req `addQuery` toQuery ("propagationPolicy", Just xs)
  
  -- | @*/*@
  instance MimeType mtype => Consumes DeleteNamespacedRole mtype
  
  -- | @application/json@
  instance Produces DeleteNamespacedRole MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces DeleteNamespacedRole MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces DeleteNamespacedRole MimeYaml
  
  
  -- *** deleteNamespacedRoleBinding
  
  -- | @DELETE \/apis\/rbac.authorization.k8s.io\/v1\/namespaces\/{namespace}\/rolebindings\/{name}@
  -- 
  -- delete a RoleBinding
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  deleteNamespacedRoleBinding
    :: (Consumes DeleteNamespacedRoleBinding contentType)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> Name -- ^ "name" -  name of the RoleBinding
    -> Namespace -- ^ "namespace" -  object name and auth scope, such as for teams and projects
    -> KubernetesRequest DeleteNamespacedRoleBinding contentType V1Status accept
  deleteNamespacedRoleBinding _  _ (Name name) (Namespace namespace) =
    _mkRequest "DELETE" ["/apis/rbac.authorization.k8s.io/v1/namespaces/",toPath namespace,"/rolebindings/",toPath name]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data DeleteNamespacedRoleBinding 
  instance HasBodyParam DeleteNamespacedRoleBinding V1DeleteOptions 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam DeleteNamespacedRoleBinding Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam DeleteNamespacedRoleBinding DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "gracePeriodSeconds" - The duration in seconds before the object should be deleted. Value must be non-negative integer. The value zero indicates delete immediately. If this value is nil, the default grace period for the specified type will be used. Defaults to a per object value if not specified. zero means delete immediately.
  instance HasOptionalParam DeleteNamespacedRoleBinding GracePeriodSeconds where
    applyOptionalParam req (GracePeriodSeconds xs) =
      req `addQuery` toQuery ("gracePeriodSeconds", Just xs)
  
  -- | /Optional Param/ "orphanDependents" - Deprecated: please use the PropagationPolicy, this field will be deprecated in 1.7. Should the dependent objects be orphaned. If true/false, the \"orphan\" finalizer will be added to/removed from the object's finalizers list. Either this field or PropagationPolicy may be set, but not both.
  instance HasOptionalParam DeleteNamespacedRoleBinding OrphanDependents where
    applyOptionalParam req (OrphanDependents xs) =
      req `addQuery` toQuery ("orphanDependents", Just xs)
  
  -- | /Optional Param/ "propagationPolicy" - Whether and how garbage collection will be performed. Either this field or OrphanDependents may be set, but not both. The default policy is decided by the existing finalizer set in the metadata.finalizers and the resource-specific default policy. Acceptable values are: 'Orphan' - orphan the dependents; 'Background' - allow the garbage collector to delete the dependents in the background; 'Foreground' - a cascading policy that deletes all dependents in the foreground.
  instance HasOptionalParam DeleteNamespacedRoleBinding PropagationPolicy where
    applyOptionalParam req (PropagationPolicy xs) =
      req `addQuery` toQuery ("propagationPolicy", Just xs)
  
  -- | @*/*@
  instance MimeType mtype => Consumes DeleteNamespacedRoleBinding mtype
  
  -- | @application/json@
  instance Produces DeleteNamespacedRoleBinding MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces DeleteNamespacedRoleBinding MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces DeleteNamespacedRoleBinding MimeYaml
  
  
  -- *** getAPIResources
  
  -- | @GET \/apis\/rbac.authorization.k8s.io\/v1\/@
  -- 
  -- get available resources
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  getAPIResources
    :: Accept accept -- ^ request accept ('MimeType')
    -> KubernetesRequest GetAPIResources MimeNoContent V1APIResourceList accept
  getAPIResources  _ =
    _mkRequest "GET" ["/apis/rbac.authorization.k8s.io/v1/"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data GetAPIResources  
  -- | @application/json@
  instance Produces GetAPIResources MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces GetAPIResources MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces GetAPIResources MimeYaml
  
  
  -- *** listClusterRole
  
  -- | @GET \/apis\/rbac.authorization.k8s.io\/v1\/clusterroles@
  -- 
  -- list or watch objects of kind ClusterRole
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  listClusterRole
    :: Accept accept -- ^ request accept ('MimeType')
    -> KubernetesRequest ListClusterRole MimeNoContent V1ClusterRoleList accept
  listClusterRole  _ =
    _mkRequest "GET" ["/apis/rbac.authorization.k8s.io/v1/clusterroles"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data ListClusterRole  
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam ListClusterRole Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "allowWatchBookmarks" - allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored.
  instance HasOptionalParam ListClusterRole AllowWatchBookmarks where
    applyOptionalParam req (AllowWatchBookmarks xs) =
      req `addQuery` toQuery ("allowWatchBookmarks", Just xs)
  
  -- | /Optional Param/ "continue" - The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".  This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.
  instance HasOptionalParam ListClusterRole Continue where
    applyOptionalParam req (Continue xs) =
      req `addQuery` toQuery ("continue", Just xs)
  
  -- | /Optional Param/ "fieldSelector" - A selector to restrict the list of returned objects by their fields. Defaults to everything.
  instance HasOptionalParam ListClusterRole FieldSelector where
    applyOptionalParam req (FieldSelector xs) =
      req `addQuery` toQuery ("fieldSelector", Just xs)
  
  -- | /Optional Param/ "labelSelector" - A selector to restrict the list of returned objects by their labels. Defaults to everything.
  instance HasOptionalParam ListClusterRole LabelSelector where
    applyOptionalParam req (LabelSelector xs) =
      req `addQuery` toQuery ("labelSelector", Just xs)
  
  -- | /Optional Param/ "limit" - limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.  The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.
  instance HasOptionalParam ListClusterRole Limit where
    applyOptionalParam req (Limit xs) =
      req `addQuery` toQuery ("limit", Just xs)
  
  -- | /Optional Param/ "resourceVersion" - resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam ListClusterRole ResourceVersion where
    applyOptionalParam req (ResourceVersion xs) =
      req `addQuery` toQuery ("resourceVersion", Just xs)
  
  -- | /Optional Param/ "resourceVersionMatch" - resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam ListClusterRole ResourceVersionMatch where
    applyOptionalParam req (ResourceVersionMatch xs) =
      req `addQuery` toQuery ("resourceVersionMatch", Just xs)
  
  -- | /Optional Param/ "timeoutSeconds" - Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.
  instance HasOptionalParam ListClusterRole TimeoutSeconds where
    applyOptionalParam req (TimeoutSeconds xs) =
      req `addQuery` toQuery ("timeoutSeconds", Just xs)
  
  -- | /Optional Param/ "watch" - Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
  instance HasOptionalParam ListClusterRole Watch where
    applyOptionalParam req (Watch xs) =
      req `addQuery` toQuery ("watch", Just xs)
  -- | @application/json@
  instance Produces ListClusterRole MimeJSON
  -- | @application/json;stream=watch@
  instance Produces ListClusterRole MimeJsonstreamwatch
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces ListClusterRole MimeVndKubernetesProtobuf
  -- | @application/vnd.kubernetes.protobuf;stream=watch@
  instance Produces ListClusterRole MimeVndKubernetesProtobufstreamwatch
  -- | @application/yaml@
  instance Produces ListClusterRole MimeYaml
  
  
  -- *** listClusterRoleBinding
  
  -- | @GET \/apis\/rbac.authorization.k8s.io\/v1\/clusterrolebindings@
  -- 
  -- list or watch objects of kind ClusterRoleBinding
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  listClusterRoleBinding
    :: Accept accept -- ^ request accept ('MimeType')
    -> KubernetesRequest ListClusterRoleBinding MimeNoContent V1ClusterRoleBindingList accept
  listClusterRoleBinding  _ =
    _mkRequest "GET" ["/apis/rbac.authorization.k8s.io/v1/clusterrolebindings"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data ListClusterRoleBinding  
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam ListClusterRoleBinding Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "allowWatchBookmarks" - allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored.
  instance HasOptionalParam ListClusterRoleBinding AllowWatchBookmarks where
    applyOptionalParam req (AllowWatchBookmarks xs) =
      req `addQuery` toQuery ("allowWatchBookmarks", Just xs)
  
  -- | /Optional Param/ "continue" - The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".  This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.
  instance HasOptionalParam ListClusterRoleBinding Continue where
    applyOptionalParam req (Continue xs) =
      req `addQuery` toQuery ("continue", Just xs)
  
  -- | /Optional Param/ "fieldSelector" - A selector to restrict the list of returned objects by their fields. Defaults to everything.
  instance HasOptionalParam ListClusterRoleBinding FieldSelector where
    applyOptionalParam req (FieldSelector xs) =
      req `addQuery` toQuery ("fieldSelector", Just xs)
  
  -- | /Optional Param/ "labelSelector" - A selector to restrict the list of returned objects by their labels. Defaults to everything.
  instance HasOptionalParam ListClusterRoleBinding LabelSelector where
    applyOptionalParam req (LabelSelector xs) =
      req `addQuery` toQuery ("labelSelector", Just xs)
  
  -- | /Optional Param/ "limit" - limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.  The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.
  instance HasOptionalParam ListClusterRoleBinding Limit where
    applyOptionalParam req (Limit xs) =
      req `addQuery` toQuery ("limit", Just xs)
  
  -- | /Optional Param/ "resourceVersion" - resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam ListClusterRoleBinding ResourceVersion where
    applyOptionalParam req (ResourceVersion xs) =
      req `addQuery` toQuery ("resourceVersion", Just xs)
  
  -- | /Optional Param/ "resourceVersionMatch" - resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam ListClusterRoleBinding ResourceVersionMatch where
    applyOptionalParam req (ResourceVersionMatch xs) =
      req `addQuery` toQuery ("resourceVersionMatch", Just xs)
  
  -- | /Optional Param/ "timeoutSeconds" - Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.
  instance HasOptionalParam ListClusterRoleBinding TimeoutSeconds where
    applyOptionalParam req (TimeoutSeconds xs) =
      req `addQuery` toQuery ("timeoutSeconds", Just xs)
  
  -- | /Optional Param/ "watch" - Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
  instance HasOptionalParam ListClusterRoleBinding Watch where
    applyOptionalParam req (Watch xs) =
      req `addQuery` toQuery ("watch", Just xs)
  -- | @application/json@
  instance Produces ListClusterRoleBinding MimeJSON
  -- | @application/json;stream=watch@
  instance Produces ListClusterRoleBinding MimeJsonstreamwatch
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces ListClusterRoleBinding MimeVndKubernetesProtobuf
  -- | @application/vnd.kubernetes.protobuf;stream=watch@
  instance Produces ListClusterRoleBinding MimeVndKubernetesProtobufstreamwatch
  -- | @application/yaml@
  instance Produces ListClusterRoleBinding MimeYaml
  
  
  -- *** listNamespacedRole
  
  -- | @GET \/apis\/rbac.authorization.k8s.io\/v1\/namespaces\/{namespace}\/roles@
  -- 
  -- list or watch objects of kind Role
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  listNamespacedRole
    :: Accept accept -- ^ request accept ('MimeType')
    -> Namespace -- ^ "namespace" -  object name and auth scope, such as for teams and projects
    -> KubernetesRequest ListNamespacedRole MimeNoContent V1RoleList accept
  listNamespacedRole  _ (Namespace namespace) =
    _mkRequest "GET" ["/apis/rbac.authorization.k8s.io/v1/namespaces/",toPath namespace,"/roles"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data ListNamespacedRole  
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam ListNamespacedRole Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "allowWatchBookmarks" - allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored.
  instance HasOptionalParam ListNamespacedRole AllowWatchBookmarks where
    applyOptionalParam req (AllowWatchBookmarks xs) =
      req `addQuery` toQuery ("allowWatchBookmarks", Just xs)
  
  -- | /Optional Param/ "continue" - The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".  This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.
  instance HasOptionalParam ListNamespacedRole Continue where
    applyOptionalParam req (Continue xs) =
      req `addQuery` toQuery ("continue", Just xs)
  
  -- | /Optional Param/ "fieldSelector" - A selector to restrict the list of returned objects by their fields. Defaults to everything.
  instance HasOptionalParam ListNamespacedRole FieldSelector where
    applyOptionalParam req (FieldSelector xs) =
      req `addQuery` toQuery ("fieldSelector", Just xs)
  
  -- | /Optional Param/ "labelSelector" - A selector to restrict the list of returned objects by their labels. Defaults to everything.
  instance HasOptionalParam ListNamespacedRole LabelSelector where
    applyOptionalParam req (LabelSelector xs) =
      req `addQuery` toQuery ("labelSelector", Just xs)
  
  -- | /Optional Param/ "limit" - limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.  The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.
  instance HasOptionalParam ListNamespacedRole Limit where
    applyOptionalParam req (Limit xs) =
      req `addQuery` toQuery ("limit", Just xs)
  
  -- | /Optional Param/ "resourceVersion" - resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam ListNamespacedRole ResourceVersion where
    applyOptionalParam req (ResourceVersion xs) =
      req `addQuery` toQuery ("resourceVersion", Just xs)
  
  -- | /Optional Param/ "resourceVersionMatch" - resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam ListNamespacedRole ResourceVersionMatch where
    applyOptionalParam req (ResourceVersionMatch xs) =
      req `addQuery` toQuery ("resourceVersionMatch", Just xs)
  
  -- | /Optional Param/ "timeoutSeconds" - Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.
  instance HasOptionalParam ListNamespacedRole TimeoutSeconds where
    applyOptionalParam req (TimeoutSeconds xs) =
      req `addQuery` toQuery ("timeoutSeconds", Just xs)
  
  -- | /Optional Param/ "watch" - Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
  instance HasOptionalParam ListNamespacedRole Watch where
    applyOptionalParam req (Watch xs) =
      req `addQuery` toQuery ("watch", Just xs)
  -- | @application/json@
  instance Produces ListNamespacedRole MimeJSON
  -- | @application/json;stream=watch@
  instance Produces ListNamespacedRole MimeJsonstreamwatch
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces ListNamespacedRole MimeVndKubernetesProtobuf
  -- | @application/vnd.kubernetes.protobuf;stream=watch@
  instance Produces ListNamespacedRole MimeVndKubernetesProtobufstreamwatch
  -- | @application/yaml@
  instance Produces ListNamespacedRole MimeYaml
  
  
  -- *** listNamespacedRoleBinding
  
  -- | @GET \/apis\/rbac.authorization.k8s.io\/v1\/namespaces\/{namespace}\/rolebindings@
  -- 
  -- list or watch objects of kind RoleBinding
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  listNamespacedRoleBinding
    :: Accept accept -- ^ request accept ('MimeType')
    -> Namespace -- ^ "namespace" -  object name and auth scope, such as for teams and projects
    -> KubernetesRequest ListNamespacedRoleBinding MimeNoContent V1RoleBindingList accept
  listNamespacedRoleBinding  _ (Namespace namespace) =
    _mkRequest "GET" ["/apis/rbac.authorization.k8s.io/v1/namespaces/",toPath namespace,"/rolebindings"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data ListNamespacedRoleBinding  
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam ListNamespacedRoleBinding Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "allowWatchBookmarks" - allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored.
  instance HasOptionalParam ListNamespacedRoleBinding AllowWatchBookmarks where
    applyOptionalParam req (AllowWatchBookmarks xs) =
      req `addQuery` toQuery ("allowWatchBookmarks", Just xs)
  
  -- | /Optional Param/ "continue" - The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".  This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.
  instance HasOptionalParam ListNamespacedRoleBinding Continue where
    applyOptionalParam req (Continue xs) =
      req `addQuery` toQuery ("continue", Just xs)
  
  -- | /Optional Param/ "fieldSelector" - A selector to restrict the list of returned objects by their fields. Defaults to everything.
  instance HasOptionalParam ListNamespacedRoleBinding FieldSelector where
    applyOptionalParam req (FieldSelector xs) =
      req `addQuery` toQuery ("fieldSelector", Just xs)
  
  -- | /Optional Param/ "labelSelector" - A selector to restrict the list of returned objects by their labels. Defaults to everything.
  instance HasOptionalParam ListNamespacedRoleBinding LabelSelector where
    applyOptionalParam req (LabelSelector xs) =
      req `addQuery` toQuery ("labelSelector", Just xs)
  
  -- | /Optional Param/ "limit" - limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.  The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.
  instance HasOptionalParam ListNamespacedRoleBinding Limit where
    applyOptionalParam req (Limit xs) =
      req `addQuery` toQuery ("limit", Just xs)
  
  -- | /Optional Param/ "resourceVersion" - resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam ListNamespacedRoleBinding ResourceVersion where
    applyOptionalParam req (ResourceVersion xs) =
      req `addQuery` toQuery ("resourceVersion", Just xs)
  
  -- | /Optional Param/ "resourceVersionMatch" - resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam ListNamespacedRoleBinding ResourceVersionMatch where
    applyOptionalParam req (ResourceVersionMatch xs) =
      req `addQuery` toQuery ("resourceVersionMatch", Just xs)
  
  -- | /Optional Param/ "timeoutSeconds" - Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.
  instance HasOptionalParam ListNamespacedRoleBinding TimeoutSeconds where
    applyOptionalParam req (TimeoutSeconds xs) =
      req `addQuery` toQuery ("timeoutSeconds", Just xs)
  
  -- | /Optional Param/ "watch" - Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
  instance HasOptionalParam ListNamespacedRoleBinding Watch where
    applyOptionalParam req (Watch xs) =
      req `addQuery` toQuery ("watch", Just xs)
  -- | @application/json@
  instance Produces ListNamespacedRoleBinding MimeJSON
  -- | @application/json;stream=watch@
  instance Produces ListNamespacedRoleBinding MimeJsonstreamwatch
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces ListNamespacedRoleBinding MimeVndKubernetesProtobuf
  -- | @application/vnd.kubernetes.protobuf;stream=watch@
  instance Produces ListNamespacedRoleBinding MimeVndKubernetesProtobufstreamwatch
  -- | @application/yaml@
  instance Produces ListNamespacedRoleBinding MimeYaml
  
  
  -- *** listRoleBindingForAllNamespaces
  
  -- | @GET \/apis\/rbac.authorization.k8s.io\/v1\/rolebindings@
  -- 
  -- list or watch objects of kind RoleBinding
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  listRoleBindingForAllNamespaces
    :: Accept accept -- ^ request accept ('MimeType')
    -> KubernetesRequest ListRoleBindingForAllNamespaces MimeNoContent V1RoleBindingList accept
  listRoleBindingForAllNamespaces  _ =
    _mkRequest "GET" ["/apis/rbac.authorization.k8s.io/v1/rolebindings"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data ListRoleBindingForAllNamespaces  
  
  -- | /Optional Param/ "allowWatchBookmarks" - allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored.
  instance HasOptionalParam ListRoleBindingForAllNamespaces AllowWatchBookmarks where
    applyOptionalParam req (AllowWatchBookmarks xs) =
      req `addQuery` toQuery ("allowWatchBookmarks", Just xs)
  
  -- | /Optional Param/ "continue" - The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".  This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.
  instance HasOptionalParam ListRoleBindingForAllNamespaces Continue where
    applyOptionalParam req (Continue xs) =
      req `addQuery` toQuery ("continue", Just xs)
  
  -- | /Optional Param/ "fieldSelector" - A selector to restrict the list of returned objects by their fields. Defaults to everything.
  instance HasOptionalParam ListRoleBindingForAllNamespaces FieldSelector where
    applyOptionalParam req (FieldSelector xs) =
      req `addQuery` toQuery ("fieldSelector", Just xs)
  
  -- | /Optional Param/ "labelSelector" - A selector to restrict the list of returned objects by their labels. Defaults to everything.
  instance HasOptionalParam ListRoleBindingForAllNamespaces LabelSelector where
    applyOptionalParam req (LabelSelector xs) =
      req `addQuery` toQuery ("labelSelector", Just xs)
  
  -- | /Optional Param/ "limit" - limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.  The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.
  instance HasOptionalParam ListRoleBindingForAllNamespaces Limit where
    applyOptionalParam req (Limit xs) =
      req `addQuery` toQuery ("limit", Just xs)
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam ListRoleBindingForAllNamespaces Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "resourceVersion" - resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam ListRoleBindingForAllNamespaces ResourceVersion where
    applyOptionalParam req (ResourceVersion xs) =
      req `addQuery` toQuery ("resourceVersion", Just xs)
  
  -- | /Optional Param/ "resourceVersionMatch" - resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam ListRoleBindingForAllNamespaces ResourceVersionMatch where
    applyOptionalParam req (ResourceVersionMatch xs) =
      req `addQuery` toQuery ("resourceVersionMatch", Just xs)
  
  -- | /Optional Param/ "timeoutSeconds" - Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.
  instance HasOptionalParam ListRoleBindingForAllNamespaces TimeoutSeconds where
    applyOptionalParam req (TimeoutSeconds xs) =
      req `addQuery` toQuery ("timeoutSeconds", Just xs)
  
  -- | /Optional Param/ "watch" - Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
  instance HasOptionalParam ListRoleBindingForAllNamespaces Watch where
    applyOptionalParam req (Watch xs) =
      req `addQuery` toQuery ("watch", Just xs)
  -- | @application/json@
  instance Produces ListRoleBindingForAllNamespaces MimeJSON
  -- | @application/json;stream=watch@
  instance Produces ListRoleBindingForAllNamespaces MimeJsonstreamwatch
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces ListRoleBindingForAllNamespaces MimeVndKubernetesProtobuf
  -- | @application/vnd.kubernetes.protobuf;stream=watch@
  instance Produces ListRoleBindingForAllNamespaces MimeVndKubernetesProtobufstreamwatch
  -- | @application/yaml@
  instance Produces ListRoleBindingForAllNamespaces MimeYaml
  
  
  -- *** listRoleForAllNamespaces
  
  -- | @GET \/apis\/rbac.authorization.k8s.io\/v1\/roles@
  -- 
  -- list or watch objects of kind Role
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  listRoleForAllNamespaces
    :: Accept accept -- ^ request accept ('MimeType')
    -> KubernetesRequest ListRoleForAllNamespaces MimeNoContent V1RoleList accept
  listRoleForAllNamespaces  _ =
    _mkRequest "GET" ["/apis/rbac.authorization.k8s.io/v1/roles"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data ListRoleForAllNamespaces  
  
  -- | /Optional Param/ "allowWatchBookmarks" - allowWatchBookmarks requests watch events with type \"BOOKMARK\". Servers that do not implement bookmarks may ignore this flag and bookmarks are sent at the server's discretion. Clients should not assume bookmarks are returned at any specific interval, nor may they assume the server will send any BOOKMARK event during a session. If this is not a watch, this field is ignored.
  instance HasOptionalParam ListRoleForAllNamespaces AllowWatchBookmarks where
    applyOptionalParam req (AllowWatchBookmarks xs) =
      req `addQuery` toQuery ("allowWatchBookmarks", Just xs)
  
  -- | /Optional Param/ "continue" - The continue option should be set when retrieving more results from the server. Since this value is server defined, clients may only use the continue value from a previous query result with identical query parameters (except for the value of continue) and the server may reject a continue value it does not recognize. If the specified continue value is no longer valid whether due to expiration (generally five to fifteen minutes) or a configuration change on the server, the server will respond with a 410 ResourceExpired error together with a continue token. If the client needs a consistent list, it must restart their list without the continue field. Otherwise, the client may send another list request with the token received with the 410 error, the server will respond with a list starting from the next key, but from the latest snapshot, which is inconsistent from the previous list results - objects that are created, modified, or deleted after the first list request will be included in the response, as long as their keys are after the \"next key\".  This field is not supported when watch is true. Clients may start a watch from the last resourceVersion value returned by the server and not miss any modifications.
  instance HasOptionalParam ListRoleForAllNamespaces Continue where
    applyOptionalParam req (Continue xs) =
      req `addQuery` toQuery ("continue", Just xs)
  
  -- | /Optional Param/ "fieldSelector" - A selector to restrict the list of returned objects by their fields. Defaults to everything.
  instance HasOptionalParam ListRoleForAllNamespaces FieldSelector where
    applyOptionalParam req (FieldSelector xs) =
      req `addQuery` toQuery ("fieldSelector", Just xs)
  
  -- | /Optional Param/ "labelSelector" - A selector to restrict the list of returned objects by their labels. Defaults to everything.
  instance HasOptionalParam ListRoleForAllNamespaces LabelSelector where
    applyOptionalParam req (LabelSelector xs) =
      req `addQuery` toQuery ("labelSelector", Just xs)
  
  -- | /Optional Param/ "limit" - limit is a maximum number of responses to return for a list call. If more items exist, the server will set the `continue` field on the list metadata to a value that can be used with the same initial query to retrieve the next set of results. Setting a limit may return fewer than the requested amount of items (up to zero items) in the event all requested objects are filtered out and clients should only use the presence of the continue field to determine whether more results are available. Servers may choose not to support the limit argument and will return all of the available results. If limit is specified and the continue field is empty, clients may assume that no more results are available. This field is not supported if watch is true.  The server guarantees that the objects returned when using continue will be identical to issuing a single list call without a limit - that is, no objects created, modified, or deleted after the first request is issued will be included in any subsequent continued requests. This is sometimes referred to as a consistent snapshot, and ensures that a client that is using limit to receive smaller chunks of a very large result can ensure they see all possible objects. If objects are updated during a chunked list the version of the object that was present at the time the first list result was calculated is returned.
  instance HasOptionalParam ListRoleForAllNamespaces Limit where
    applyOptionalParam req (Limit xs) =
      req `addQuery` toQuery ("limit", Just xs)
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam ListRoleForAllNamespaces Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "resourceVersion" - resourceVersion sets a constraint on what resource versions a request may be served from. See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam ListRoleForAllNamespaces ResourceVersion where
    applyOptionalParam req (ResourceVersion xs) =
      req `addQuery` toQuery ("resourceVersion", Just xs)
  
  -- | /Optional Param/ "resourceVersionMatch" - resourceVersionMatch determines how resourceVersion is applied to list calls. It is highly recommended that resourceVersionMatch be set for list calls where resourceVersion is set See https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions for details.  Defaults to unset
  instance HasOptionalParam ListRoleForAllNamespaces ResourceVersionMatch where
    applyOptionalParam req (ResourceVersionMatch xs) =
      req `addQuery` toQuery ("resourceVersionMatch", Just xs)
  
  -- | /Optional Param/ "timeoutSeconds" - Timeout for the list/watch call. This limits the duration of the call, regardless of any activity or inactivity.
  instance HasOptionalParam ListRoleForAllNamespaces TimeoutSeconds where
    applyOptionalParam req (TimeoutSeconds xs) =
      req `addQuery` toQuery ("timeoutSeconds", Just xs)
  
  -- | /Optional Param/ "watch" - Watch for changes to the described resources and return them as a stream of add, update, and remove notifications. Specify resourceVersion.
  instance HasOptionalParam ListRoleForAllNamespaces Watch where
    applyOptionalParam req (Watch xs) =
      req `addQuery` toQuery ("watch", Just xs)
  -- | @application/json@
  instance Produces ListRoleForAllNamespaces MimeJSON
  -- | @application/json;stream=watch@
  instance Produces ListRoleForAllNamespaces MimeJsonstreamwatch
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces ListRoleForAllNamespaces MimeVndKubernetesProtobuf
  -- | @application/vnd.kubernetes.protobuf;stream=watch@
  instance Produces ListRoleForAllNamespaces MimeVndKubernetesProtobufstreamwatch
  -- | @application/yaml@
  instance Produces ListRoleForAllNamespaces MimeYaml
  
  
  -- *** patchClusterRole
  
  -- | @PATCH \/apis\/rbac.authorization.k8s.io\/v1\/clusterroles\/{name}@
  -- 
  -- partially update the specified ClusterRole
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  patchClusterRole
    :: (Consumes PatchClusterRole contentType, MimeRender contentType Body)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> Body -- ^ "body"
    -> Name -- ^ "name" -  name of the ClusterRole
    -> KubernetesRequest PatchClusterRole contentType V1ClusterRole accept
  patchClusterRole _  _ body (Name name) =
    _mkRequest "PATCH" ["/apis/rbac.authorization.k8s.io/v1/clusterroles/",toPath name]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
      `setBodyParam` body
  
  data PatchClusterRole 
  instance HasBodyParam PatchClusterRole Body 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam PatchClusterRole Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam PatchClusterRole DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "fieldManager" - fieldManager is a name associated with the actor or entity that is making these changes. 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).
  instance HasOptionalParam PatchClusterRole FieldManager where
    applyOptionalParam req (FieldManager xs) =
      req `addQuery` toQuery ("fieldManager", Just xs)
  
  -- | /Optional Param/ "fieldValidation" - fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.
  instance HasOptionalParam PatchClusterRole FieldValidation where
    applyOptionalParam req (FieldValidation xs) =
      req `addQuery` toQuery ("fieldValidation", Just xs)
  
  -- | /Optional Param/ "force" - 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.
  instance HasOptionalParam PatchClusterRole Force where
    applyOptionalParam req (Force xs) =
      req `addQuery` toQuery ("force", Just xs)
  
  -- | @application/apply-patch+yaml@
  instance Consumes PatchClusterRole MimeApplyPatchyaml
  -- | @application/json-patch+json@
  instance Consumes PatchClusterRole MimeJsonPatchjson
  -- | @application/merge-patch+json@
  instance Consumes PatchClusterRole MimeMergePatchjson
  -- | @application/strategic-merge-patch+json@
  instance Consumes PatchClusterRole MimeStrategicMergePatchjson
  
  -- | @application/json@
  instance Produces PatchClusterRole MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces PatchClusterRole MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces PatchClusterRole MimeYaml
  
  
  -- *** patchClusterRoleBinding
  
  -- | @PATCH \/apis\/rbac.authorization.k8s.io\/v1\/clusterrolebindings\/{name}@
  -- 
  -- partially update the specified ClusterRoleBinding
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  patchClusterRoleBinding
    :: (Consumes PatchClusterRoleBinding contentType, MimeRender contentType Body)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> Body -- ^ "body"
    -> Name -- ^ "name" -  name of the ClusterRoleBinding
    -> KubernetesRequest PatchClusterRoleBinding contentType V1ClusterRoleBinding accept
  patchClusterRoleBinding _  _ body (Name name) =
    _mkRequest "PATCH" ["/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/",toPath name]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
      `setBodyParam` body
  
  data PatchClusterRoleBinding 
  instance HasBodyParam PatchClusterRoleBinding Body 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam PatchClusterRoleBinding Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam PatchClusterRoleBinding DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "fieldManager" - fieldManager is a name associated with the actor or entity that is making these changes. 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).
  instance HasOptionalParam PatchClusterRoleBinding FieldManager where
    applyOptionalParam req (FieldManager xs) =
      req `addQuery` toQuery ("fieldManager", Just xs)
  
  -- | /Optional Param/ "fieldValidation" - fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.
  instance HasOptionalParam PatchClusterRoleBinding FieldValidation where
    applyOptionalParam req (FieldValidation xs) =
      req `addQuery` toQuery ("fieldValidation", Just xs)
  
  -- | /Optional Param/ "force" - 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.
  instance HasOptionalParam PatchClusterRoleBinding Force where
    applyOptionalParam req (Force xs) =
      req `addQuery` toQuery ("force", Just xs)
  
  -- | @application/apply-patch+yaml@
  instance Consumes PatchClusterRoleBinding MimeApplyPatchyaml
  -- | @application/json-patch+json@
  instance Consumes PatchClusterRoleBinding MimeJsonPatchjson
  -- | @application/merge-patch+json@
  instance Consumes PatchClusterRoleBinding MimeMergePatchjson
  -- | @application/strategic-merge-patch+json@
  instance Consumes PatchClusterRoleBinding MimeStrategicMergePatchjson
  
  -- | @application/json@
  instance Produces PatchClusterRoleBinding MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces PatchClusterRoleBinding MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces PatchClusterRoleBinding MimeYaml
  
  
  -- *** patchNamespacedRole
  
  -- | @PATCH \/apis\/rbac.authorization.k8s.io\/v1\/namespaces\/{namespace}\/roles\/{name}@
  -- 
  -- partially update the specified Role
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  patchNamespacedRole
    :: (Consumes PatchNamespacedRole contentType, MimeRender contentType Body)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> Body -- ^ "body"
    -> Name -- ^ "name" -  name of the Role
    -> Namespace -- ^ "namespace" -  object name and auth scope, such as for teams and projects
    -> KubernetesRequest PatchNamespacedRole contentType V1Role accept
  patchNamespacedRole _  _ body (Name name) (Namespace namespace) =
    _mkRequest "PATCH" ["/apis/rbac.authorization.k8s.io/v1/namespaces/",toPath namespace,"/roles/",toPath name]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
      `setBodyParam` body
  
  data PatchNamespacedRole 
  instance HasBodyParam PatchNamespacedRole Body 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam PatchNamespacedRole Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam PatchNamespacedRole DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "fieldManager" - fieldManager is a name associated with the actor or entity that is making these changes. 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).
  instance HasOptionalParam PatchNamespacedRole FieldManager where
    applyOptionalParam req (FieldManager xs) =
      req `addQuery` toQuery ("fieldManager", Just xs)
  
  -- | /Optional Param/ "fieldValidation" - fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.
  instance HasOptionalParam PatchNamespacedRole FieldValidation where
    applyOptionalParam req (FieldValidation xs) =
      req `addQuery` toQuery ("fieldValidation", Just xs)
  
  -- | /Optional Param/ "force" - 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.
  instance HasOptionalParam PatchNamespacedRole Force where
    applyOptionalParam req (Force xs) =
      req `addQuery` toQuery ("force", Just xs)
  
  -- | @application/apply-patch+yaml@
  instance Consumes PatchNamespacedRole MimeApplyPatchyaml
  -- | @application/json-patch+json@
  instance Consumes PatchNamespacedRole MimeJsonPatchjson
  -- | @application/merge-patch+json@
  instance Consumes PatchNamespacedRole MimeMergePatchjson
  -- | @application/strategic-merge-patch+json@
  instance Consumes PatchNamespacedRole MimeStrategicMergePatchjson
  
  -- | @application/json@
  instance Produces PatchNamespacedRole MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces PatchNamespacedRole MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces PatchNamespacedRole MimeYaml
  
  
  -- *** patchNamespacedRoleBinding
  
  -- | @PATCH \/apis\/rbac.authorization.k8s.io\/v1\/namespaces\/{namespace}\/rolebindings\/{name}@
  -- 
  -- partially update the specified RoleBinding
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  patchNamespacedRoleBinding
    :: (Consumes PatchNamespacedRoleBinding contentType, MimeRender contentType Body)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> Body -- ^ "body"
    -> Name -- ^ "name" -  name of the RoleBinding
    -> Namespace -- ^ "namespace" -  object name and auth scope, such as for teams and projects
    -> KubernetesRequest PatchNamespacedRoleBinding contentType V1RoleBinding accept
  patchNamespacedRoleBinding _  _ body (Name name) (Namespace namespace) =
    _mkRequest "PATCH" ["/apis/rbac.authorization.k8s.io/v1/namespaces/",toPath namespace,"/rolebindings/",toPath name]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
      `setBodyParam` body
  
  data PatchNamespacedRoleBinding 
  instance HasBodyParam PatchNamespacedRoleBinding Body 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam PatchNamespacedRoleBinding Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam PatchNamespacedRoleBinding DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "fieldManager" - fieldManager is a name associated with the actor or entity that is making these changes. 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).
  instance HasOptionalParam PatchNamespacedRoleBinding FieldManager where
    applyOptionalParam req (FieldManager xs) =
      req `addQuery` toQuery ("fieldManager", Just xs)
  
  -- | /Optional Param/ "fieldValidation" - fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.
  instance HasOptionalParam PatchNamespacedRoleBinding FieldValidation where
    applyOptionalParam req (FieldValidation xs) =
      req `addQuery` toQuery ("fieldValidation", Just xs)
  
  -- | /Optional Param/ "force" - 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.
  instance HasOptionalParam PatchNamespacedRoleBinding Force where
    applyOptionalParam req (Force xs) =
      req `addQuery` toQuery ("force", Just xs)
  
  -- | @application/apply-patch+yaml@
  instance Consumes PatchNamespacedRoleBinding MimeApplyPatchyaml
  -- | @application/json-patch+json@
  instance Consumes PatchNamespacedRoleBinding MimeJsonPatchjson
  -- | @application/merge-patch+json@
  instance Consumes PatchNamespacedRoleBinding MimeMergePatchjson
  -- | @application/strategic-merge-patch+json@
  instance Consumes PatchNamespacedRoleBinding MimeStrategicMergePatchjson
  
  -- | @application/json@
  instance Produces PatchNamespacedRoleBinding MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces PatchNamespacedRoleBinding MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces PatchNamespacedRoleBinding MimeYaml
  
  
  -- *** readClusterRole
  
  -- | @GET \/apis\/rbac.authorization.k8s.io\/v1\/clusterroles\/{name}@
  -- 
  -- read the specified ClusterRole
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  readClusterRole
    :: Accept accept -- ^ request accept ('MimeType')
    -> Name -- ^ "name" -  name of the ClusterRole
    -> KubernetesRequest ReadClusterRole MimeNoContent V1ClusterRole accept
  readClusterRole  _ (Name name) =
    _mkRequest "GET" ["/apis/rbac.authorization.k8s.io/v1/clusterroles/",toPath name]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data ReadClusterRole  
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam ReadClusterRole Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  -- | @application/json@
  instance Produces ReadClusterRole MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces ReadClusterRole MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces ReadClusterRole MimeYaml
  
  
  -- *** readClusterRoleBinding
  
  -- | @GET \/apis\/rbac.authorization.k8s.io\/v1\/clusterrolebindings\/{name}@
  -- 
  -- read the specified ClusterRoleBinding
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  readClusterRoleBinding
    :: Accept accept -- ^ request accept ('MimeType')
    -> Name -- ^ "name" -  name of the ClusterRoleBinding
    -> KubernetesRequest ReadClusterRoleBinding MimeNoContent V1ClusterRoleBinding accept
  readClusterRoleBinding  _ (Name name) =
    _mkRequest "GET" ["/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/",toPath name]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data ReadClusterRoleBinding  
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam ReadClusterRoleBinding Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  -- | @application/json@
  instance Produces ReadClusterRoleBinding MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces ReadClusterRoleBinding MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces ReadClusterRoleBinding MimeYaml
  
  
  -- *** readNamespacedRole
  
  -- | @GET \/apis\/rbac.authorization.k8s.io\/v1\/namespaces\/{namespace}\/roles\/{name}@
  -- 
  -- read the specified Role
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  readNamespacedRole
    :: Accept accept -- ^ request accept ('MimeType')
    -> Name -- ^ "name" -  name of the Role
    -> Namespace -- ^ "namespace" -  object name and auth scope, such as for teams and projects
    -> KubernetesRequest ReadNamespacedRole MimeNoContent V1Role accept
  readNamespacedRole  _ (Name name) (Namespace namespace) =
    _mkRequest "GET" ["/apis/rbac.authorization.k8s.io/v1/namespaces/",toPath namespace,"/roles/",toPath name]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data ReadNamespacedRole  
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam ReadNamespacedRole Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  -- | @application/json@
  instance Produces ReadNamespacedRole MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces ReadNamespacedRole MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces ReadNamespacedRole MimeYaml
  
  
  -- *** readNamespacedRoleBinding
  
  -- | @GET \/apis\/rbac.authorization.k8s.io\/v1\/namespaces\/{namespace}\/rolebindings\/{name}@
  -- 
  -- read the specified RoleBinding
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  readNamespacedRoleBinding
    :: Accept accept -- ^ request accept ('MimeType')
    -> Name -- ^ "name" -  name of the RoleBinding
    -> Namespace -- ^ "namespace" -  object name and auth scope, such as for teams and projects
    -> KubernetesRequest ReadNamespacedRoleBinding MimeNoContent V1RoleBinding accept
  readNamespacedRoleBinding  _ (Name name) (Namespace namespace) =
    _mkRequest "GET" ["/apis/rbac.authorization.k8s.io/v1/namespaces/",toPath namespace,"/rolebindings/",toPath name]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
  
  data ReadNamespacedRoleBinding  
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam ReadNamespacedRoleBinding Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  -- | @application/json@
  instance Produces ReadNamespacedRoleBinding MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces ReadNamespacedRoleBinding MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces ReadNamespacedRoleBinding MimeYaml
  
  
  -- *** replaceClusterRole
  
  -- | @PUT \/apis\/rbac.authorization.k8s.io\/v1\/clusterroles\/{name}@
  -- 
  -- replace the specified ClusterRole
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  replaceClusterRole
    :: (Consumes ReplaceClusterRole contentType, MimeRender contentType V1ClusterRole)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> V1ClusterRole -- ^ "body"
    -> Name -- ^ "name" -  name of the ClusterRole
    -> KubernetesRequest ReplaceClusterRole contentType V1ClusterRole accept
  replaceClusterRole _  _ body (Name name) =
    _mkRequest "PUT" ["/apis/rbac.authorization.k8s.io/v1/clusterroles/",toPath name]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
      `setBodyParam` body
  
  data ReplaceClusterRole 
  instance HasBodyParam ReplaceClusterRole V1ClusterRole 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam ReplaceClusterRole Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam ReplaceClusterRole DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "fieldManager" - fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.
  instance HasOptionalParam ReplaceClusterRole FieldManager where
    applyOptionalParam req (FieldManager xs) =
      req `addQuery` toQuery ("fieldManager", Just xs)
  
  -- | /Optional Param/ "fieldValidation" - fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.
  instance HasOptionalParam ReplaceClusterRole FieldValidation where
    applyOptionalParam req (FieldValidation xs) =
      req `addQuery` toQuery ("fieldValidation", Just xs)
  
  -- | @*/*@
  instance MimeType mtype => Consumes ReplaceClusterRole mtype
  
  -- | @application/json@
  instance Produces ReplaceClusterRole MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces ReplaceClusterRole MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces ReplaceClusterRole MimeYaml
  
  
  -- *** replaceClusterRoleBinding
  
  -- | @PUT \/apis\/rbac.authorization.k8s.io\/v1\/clusterrolebindings\/{name}@
  -- 
  -- replace the specified ClusterRoleBinding
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  replaceClusterRoleBinding
    :: (Consumes ReplaceClusterRoleBinding contentType, MimeRender contentType V1ClusterRoleBinding)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> V1ClusterRoleBinding -- ^ "body"
    -> Name -- ^ "name" -  name of the ClusterRoleBinding
    -> KubernetesRequest ReplaceClusterRoleBinding contentType V1ClusterRoleBinding accept
  replaceClusterRoleBinding _  _ body (Name name) =
    _mkRequest "PUT" ["/apis/rbac.authorization.k8s.io/v1/clusterrolebindings/",toPath name]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
      `setBodyParam` body
  
  data ReplaceClusterRoleBinding 
  instance HasBodyParam ReplaceClusterRoleBinding V1ClusterRoleBinding 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam ReplaceClusterRoleBinding Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam ReplaceClusterRoleBinding DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "fieldManager" - fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.
  instance HasOptionalParam ReplaceClusterRoleBinding FieldManager where
    applyOptionalParam req (FieldManager xs) =
      req `addQuery` toQuery ("fieldManager", Just xs)
  
  -- | /Optional Param/ "fieldValidation" - fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.
  instance HasOptionalParam ReplaceClusterRoleBinding FieldValidation where
    applyOptionalParam req (FieldValidation xs) =
      req `addQuery` toQuery ("fieldValidation", Just xs)
  
  -- | @*/*@
  instance MimeType mtype => Consumes ReplaceClusterRoleBinding mtype
  
  -- | @application/json@
  instance Produces ReplaceClusterRoleBinding MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces ReplaceClusterRoleBinding MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces ReplaceClusterRoleBinding MimeYaml
  
  
  -- *** replaceNamespacedRole
  
  -- | @PUT \/apis\/rbac.authorization.k8s.io\/v1\/namespaces\/{namespace}\/roles\/{name}@
  -- 
  -- replace the specified Role
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  replaceNamespacedRole
    :: (Consumes ReplaceNamespacedRole contentType, MimeRender contentType V1Role)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> V1Role -- ^ "body"
    -> Name -- ^ "name" -  name of the Role
    -> Namespace -- ^ "namespace" -  object name and auth scope, such as for teams and projects
    -> KubernetesRequest ReplaceNamespacedRole contentType V1Role accept
  replaceNamespacedRole _  _ body (Name name) (Namespace namespace) =
    _mkRequest "PUT" ["/apis/rbac.authorization.k8s.io/v1/namespaces/",toPath namespace,"/roles/",toPath name]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
      `setBodyParam` body
  
  data ReplaceNamespacedRole 
  instance HasBodyParam ReplaceNamespacedRole V1Role 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam ReplaceNamespacedRole Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam ReplaceNamespacedRole DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "fieldManager" - fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.
  instance HasOptionalParam ReplaceNamespacedRole FieldManager where
    applyOptionalParam req (FieldManager xs) =
      req `addQuery` toQuery ("fieldManager", Just xs)
  
  -- | /Optional Param/ "fieldValidation" - fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.
  instance HasOptionalParam ReplaceNamespacedRole FieldValidation where
    applyOptionalParam req (FieldValidation xs) =
      req `addQuery` toQuery ("fieldValidation", Just xs)
  
  -- | @*/*@
  instance MimeType mtype => Consumes ReplaceNamespacedRole mtype
  
  -- | @application/json@
  instance Produces ReplaceNamespacedRole MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces ReplaceNamespacedRole MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces ReplaceNamespacedRole MimeYaml
  
  
  -- *** replaceNamespacedRoleBinding
  
  -- | @PUT \/apis\/rbac.authorization.k8s.io\/v1\/namespaces\/{namespace}\/rolebindings\/{name}@
  -- 
  -- replace the specified RoleBinding
  -- 
  -- AuthMethod: 'AuthApiKeyBearerToken'
  -- 
  replaceNamespacedRoleBinding
    :: (Consumes ReplaceNamespacedRoleBinding contentType, MimeRender contentType V1RoleBinding)
    => ContentType contentType -- ^ request content-type ('MimeType')
    -> Accept accept -- ^ request accept ('MimeType')
    -> V1RoleBinding -- ^ "body"
    -> Name -- ^ "name" -  name of the RoleBinding
    -> Namespace -- ^ "namespace" -  object name and auth scope, such as for teams and projects
    -> KubernetesRequest ReplaceNamespacedRoleBinding contentType V1RoleBinding accept
  replaceNamespacedRoleBinding _  _ body (Name name) (Namespace namespace) =
    _mkRequest "PUT" ["/apis/rbac.authorization.k8s.io/v1/namespaces/",toPath namespace,"/rolebindings/",toPath name]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyBearerToken)
      `setBodyParam` body
  
  data ReplaceNamespacedRoleBinding 
  instance HasBodyParam ReplaceNamespacedRoleBinding V1RoleBinding 
  
  -- | /Optional Param/ "pretty" - If 'true', then the output is pretty printed.
  instance HasOptionalParam ReplaceNamespacedRoleBinding Pretty where
    applyOptionalParam req (Pretty xs) =
      req `addQuery` toQuery ("pretty", Just xs)
  
  -- | /Optional Param/ "dryRun" - When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
  instance HasOptionalParam ReplaceNamespacedRoleBinding DryRun where
    applyOptionalParam req (DryRun xs) =
      req `addQuery` toQuery ("dryRun", Just xs)
  
  -- | /Optional Param/ "fieldManager" - fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint.
  instance HasOptionalParam ReplaceNamespacedRoleBinding FieldManager where
    applyOptionalParam req (FieldManager xs) =
      req `addQuery` toQuery ("fieldManager", Just xs)
  
  -- | /Optional Param/ "fieldValidation" - fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields, provided that the `ServerSideFieldValidation` feature gate is also enabled. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23 and is the default behavior when the `ServerSideFieldValidation` feature gate is disabled. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default when the `ServerSideFieldValidation` feature gate is enabled. - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered.
  instance HasOptionalParam ReplaceNamespacedRoleBinding FieldValidation where
    applyOptionalParam req (FieldValidation xs) =
      req `addQuery` toQuery ("fieldValidation", Just xs)
  
  -- | @*/*@
  instance MimeType mtype => Consumes ReplaceNamespacedRoleBinding mtype
  
  -- | @application/json@
  instance Produces ReplaceNamespacedRoleBinding MimeJSON
  -- | @application/vnd.kubernetes.protobuf@
  instance Produces ReplaceNamespacedRoleBinding MimeVndKubernetesProtobuf
  -- | @application/yaml@
  instance Produces ReplaceNamespacedRoleBinding MimeYaml
  
  