<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="gkehub_v1beta.html">GKE Hub</a> . <a href="gkehub_v1beta.projects.html">projects</a> . <a href="gkehub_v1beta.projects.locations.html">locations</a> . <a href="gkehub_v1beta.projects.locations.features.html">features</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, featureId=None, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Adds a new Feature.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, force=None, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Removes a Feature.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets details of a single Feature.</p>
<p class="toc_element">
  <code><a href="#getIamPolicy">getIamPolicy(resource, options_requestedPolicyVersion=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists Features in a given project and location.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, requestId=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing Feature.</p>
<p class="toc_element">
  <code><a href="#setIamPolicy">setIamPolicy(resource, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.</p>
<p class="toc_element">
  <code><a href="#testIamPermissions">testIamPermissions(resource, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may "fail open" without warning.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, featureId=None, requestId=None, x__xgafv=None)</code>
  <pre>Adds a new Feature.

Args:
  parent: string, The parent (project and location) where the Feature will be created. Specified in the format `projects/*/locations/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Feature represents the settings and status of any Hub Feature.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. When the Feature resource was created.
  &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. When the Feature resource was deleted.
  &quot;labels&quot;: { # GCP labels for this Feature.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;membershipSpecs&quot;: { # Optional. Membership-specific configuration for this Feature. If this Feature does not support any per-Membership configuration, this field may be unused. The keys indicate which Membership the configuration is for, in the form: projects/{p}/locations/{l}/memberships/{m} Where {p} is the project, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} WILL match the Feature&#x27;s project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Membership is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature.
    &quot;a_key&quot;: { # MembershipFeatureSpec contains configuration information for a single Membership.
      &quot;configmanagement&quot;: { # **Anthos Config Management**: Configuration for a single cluster. Intended to parallel the ConfigManagement CR. # Config Management-specific spec.
        &quot;binauthz&quot;: { # Configuration for Binauthz # Binauthz conifguration for the cluster.
          &quot;enabled&quot;: True or False, # Whether binauthz is enabled in this cluster.
        },
        &quot;configSync&quot;: { # Configuration for Config Sync # Config Sync configuration for the cluster.
          &quot;git&quot;: { # Git repo configuration for a single cluster. # Git repo configuration for the cluster.
            &quot;gcpServiceAccountEmail&quot;: &quot;A String&quot;, # The GCP Service Account Email used for auth when secret_type is gcpServiceAccount.
            &quot;httpsProxy&quot;: &quot;A String&quot;, # URL for the HTTPS proxy to be used when communicating with the Git repo.
            &quot;policyDir&quot;: &quot;A String&quot;, # The path within the Git repository that represents the top level of the repo to sync. Default: the root directory of the repository.
            &quot;secretType&quot;: &quot;A String&quot;, # Type of secret configured for access to the Git repo.
            &quot;syncBranch&quot;: &quot;A String&quot;, # The branch of the repository to sync from. Default: master.
            &quot;syncRepo&quot;: &quot;A String&quot;, # The URL of the Git repository to use as the source of truth.
            &quot;syncRev&quot;: &quot;A String&quot;, # Git revision (tag or hash) to check out. Default HEAD.
            &quot;syncWaitSecs&quot;: &quot;A String&quot;, # Period in seconds between consecutive syncs. Default: 15.
          },
          &quot;sourceFormat&quot;: &quot;A String&quot;, # Specifies whether the Config Sync Repo is in “hierarchical” or “unstructured” mode.
        },
        &quot;hierarchyController&quot;: { # Configuration for Hierarchy Controller # Hierarchy Controller configuration for the cluster.
          &quot;enableHierarchicalResourceQuota&quot;: True or False, # Whether hierarchical resource quota is enabled in this cluster.
          &quot;enablePodTreeLabels&quot;: True or False, # Whether pod tree labels are enabled in this cluster.
          &quot;enabled&quot;: True or False, # Whether Hierarchy Controller is enabled in this cluster.
        },
        &quot;policyController&quot;: { # Configuration for Policy Controller # Policy Controller configuration for the cluster.
          &quot;auditIntervalSeconds&quot;: &quot;A String&quot;, # Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether.
          &quot;enabled&quot;: True or False, # Enables the installation of Policy Controller. If false, the rest of PolicyController fields take no effect.
          &quot;exemptableNamespaces&quot;: [ # The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster.
            &quot;A String&quot;,
          ],
          &quot;logDeniesEnabled&quot;: True or False, # Logs all denies and dry run failures.
          &quot;referentialRulesEnabled&quot;: True or False, # Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated.
          &quot;templateLibraryInstalled&quot;: True or False, # Installs the default template library along with Policy Controller.
        },
        &quot;version&quot;: &quot;A String&quot;, # Version of ACM installed.
      },
    },
  },
  &quot;membershipStates&quot;: { # Output only. Membership-specific Feature status. If this Feature does report any per-Membership status, this field may be unused. The keys indicate which Membership the state is for, in the form: projects/{p}/locations/{l}/memberships/{m} Where {p} is the project number, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} MUST match the Feature&#x27;s project number.
    &quot;a_key&quot;: { # MembershipFeatureState contains Feature status information for a single Membership.
      &quot;configmanagement&quot;: { # **Anthos Config Management**: State for a single cluster. # Config Management-specific state.
        &quot;binauthzState&quot;: { # State for Binauthz # Binauthz status
          &quot;version&quot;: { # The version of binauthz. # The version of binauthz that is installed.
            &quot;webhookVersion&quot;: &quot;A String&quot;, # The version of the binauthz webhook.
          },
          &quot;webhook&quot;: &quot;A String&quot;, # The state of the binauthz webhook.
        },
        &quot;clusterName&quot;: &quot;A String&quot;, # The user-defined name for the cluster used by ClusterSelectors to group clusters together. This should match Membership&#x27;s membership_name, unless the user installed ACM on the cluster manually prior to enabling the ACM hub feature. Unique within a Anthos Config Management installation.
        &quot;configSyncState&quot;: { # State information for ConfigSync # Current sync status
          &quot;deploymentState&quot;: { # The state of ConfigSync&#x27;s deployment on a cluster # Information about the deployment of ConfigSync, including the version of the various Pods deployed
            &quot;gitSync&quot;: &quot;A String&quot;, # Deployment state of the git-sync pod
            &quot;importer&quot;: &quot;A String&quot;, # Deployment state of the importer pod
            &quot;monitor&quot;: &quot;A String&quot;, # Deployment state of the monitor pod
            &quot;reconcilerManager&quot;: &quot;A String&quot;, # Deployment state of reconciler-manager pod
            &quot;rootReconciler&quot;: &quot;A String&quot;, # Deployment state of root-reconciler
            &quot;syncer&quot;: &quot;A String&quot;, # Deployment state of the syncer pod
          },
          &quot;syncState&quot;: { # State indicating an ACM&#x27;s progress syncing configurations to a cluster # The state of ConfigSync&#x27;s process to sync configs to a cluster
            &quot;code&quot;: &quot;A String&quot;, # Sync status code
            &quot;errors&quot;: [ # A list of errors resulting from problematic configs. This list will be truncated after 100 errors, although it is unlikely for that many errors to simultaneously exist.
              { # An ACM created error representing a problem syncing configurations
                &quot;code&quot;: &quot;A String&quot;, # An ACM defined error code
                &quot;errorMessage&quot;: &quot;A String&quot;, # A description of the error
                &quot;errorResources&quot;: [ # A list of config(s) associated with the error, if any
                  { # Model for a config file in the git repo with an associated Sync error
                    &quot;resourceGvk&quot;: { # A Kubernetes object&#x27;s GVK # Group/version/kind of the resource that is causing an error
                      &quot;group&quot;: &quot;A String&quot;, # Kubernetes Group
                      &quot;kind&quot;: &quot;A String&quot;, # Kubernetes Kind
                      &quot;version&quot;: &quot;A String&quot;, # Kubernetes Version
                    },
                    &quot;resourceName&quot;: &quot;A String&quot;, # Metadata name of the resource that is causing an error
                    &quot;resourceNamespace&quot;: &quot;A String&quot;, # Namespace of the resource that is causing an error
                    &quot;sourcePath&quot;: &quot;A String&quot;, # Path in the git repo of the erroneous config
                  },
                ],
              },
            ],
            &quot;importToken&quot;: &quot;A String&quot;, # Token indicating the state of the importer.
            &quot;lastSync&quot;: &quot;A String&quot;, # Timestamp of when ACM last successfully synced the repo The time format is specified in https://golang.org/pkg/time/#Time.String This field is being deprecated. Use last_sync_time instead. (b/154053616)
            &quot;lastSyncTime&quot;: &quot;A String&quot;, # Timestamp type of when ACM last successfully synced the repo
            &quot;sourceToken&quot;: &quot;A String&quot;, # Token indicating the state of the repo.
            &quot;syncToken&quot;: &quot;A String&quot;, # Token indicating the state of the syncer.
          },
          &quot;version&quot;: { # Specific versioning information pertaining to ConfigSync&#x27;s Pods # The version of ConfigSync deployed
            &quot;gitSync&quot;: &quot;A String&quot;, # Version of the deployed git-sync pod
            &quot;importer&quot;: &quot;A String&quot;, # Version of the deployed importer pod
            &quot;monitor&quot;: &quot;A String&quot;, # Version of the deployed monitor pod
            &quot;reconcilerManager&quot;: &quot;A String&quot;, # Version of the deployed reconciler-manager pod
            &quot;rootReconciler&quot;: &quot;A String&quot;, # Version of the deployed reconciler container in root-reconciler pod
            &quot;syncer&quot;: &quot;A String&quot;, # Version of the deployed syncer pod
          },
        },
        &quot;hierarchyControllerState&quot;: { # State for Hierarchy Controller # Hierarchy Controller status
          &quot;state&quot;: { # Deployment state for Hierarchy Controller # The deployment state for Hierarchy Controller
            &quot;extension&quot;: &quot;A String&quot;, # The deployment state for Hierarchy Controller extension (e.g. v0.7.0-hc.1)
            &quot;hnc&quot;: &quot;A String&quot;, # The deployment state for open source HNC (e.g. v0.7.0-hc.0)
          },
          &quot;version&quot;: { # Version for Hierarchy Controller # The version for Hierarchy Controller
            &quot;extension&quot;: &quot;A String&quot;, # Version for Hierarchy Controller extension
            &quot;hnc&quot;: &quot;A String&quot;, # Version for open source HNC
          },
        },
        &quot;membershipSpec&quot;: { # **Anthos Config Management**: Configuration for a single cluster. Intended to parallel the ConfigManagement CR. # Membership configuration in the cluster. This represents the actual state in the cluster, while the MembershipSpec in the FeatureSpec represents the intended state
          &quot;binauthz&quot;: { # Configuration for Binauthz # Binauthz conifguration for the cluster.
            &quot;enabled&quot;: True or False, # Whether binauthz is enabled in this cluster.
          },
          &quot;configSync&quot;: { # Configuration for Config Sync # Config Sync configuration for the cluster.
            &quot;git&quot;: { # Git repo configuration for a single cluster. # Git repo configuration for the cluster.
              &quot;gcpServiceAccountEmail&quot;: &quot;A String&quot;, # The GCP Service Account Email used for auth when secret_type is gcpServiceAccount.
              &quot;httpsProxy&quot;: &quot;A String&quot;, # URL for the HTTPS proxy to be used when communicating with the Git repo.
              &quot;policyDir&quot;: &quot;A String&quot;, # The path within the Git repository that represents the top level of the repo to sync. Default: the root directory of the repository.
              &quot;secretType&quot;: &quot;A String&quot;, # Type of secret configured for access to the Git repo.
              &quot;syncBranch&quot;: &quot;A String&quot;, # The branch of the repository to sync from. Default: master.
              &quot;syncRepo&quot;: &quot;A String&quot;, # The URL of the Git repository to use as the source of truth.
              &quot;syncRev&quot;: &quot;A String&quot;, # Git revision (tag or hash) to check out. Default HEAD.
              &quot;syncWaitSecs&quot;: &quot;A String&quot;, # Period in seconds between consecutive syncs. Default: 15.
            },
            &quot;sourceFormat&quot;: &quot;A String&quot;, # Specifies whether the Config Sync Repo is in “hierarchical” or “unstructured” mode.
          },
          &quot;hierarchyController&quot;: { # Configuration for Hierarchy Controller # Hierarchy Controller configuration for the cluster.
            &quot;enableHierarchicalResourceQuota&quot;: True or False, # Whether hierarchical resource quota is enabled in this cluster.
            &quot;enablePodTreeLabels&quot;: True or False, # Whether pod tree labels are enabled in this cluster.
            &quot;enabled&quot;: True or False, # Whether Hierarchy Controller is enabled in this cluster.
          },
          &quot;policyController&quot;: { # Configuration for Policy Controller # Policy Controller configuration for the cluster.
            &quot;auditIntervalSeconds&quot;: &quot;A String&quot;, # Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether.
            &quot;enabled&quot;: True or False, # Enables the installation of Policy Controller. If false, the rest of PolicyController fields take no effect.
            &quot;exemptableNamespaces&quot;: [ # The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster.
              &quot;A String&quot;,
            ],
            &quot;logDeniesEnabled&quot;: True or False, # Logs all denies and dry run failures.
            &quot;referentialRulesEnabled&quot;: True or False, # Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated.
            &quot;templateLibraryInstalled&quot;: True or False, # Installs the default template library along with Policy Controller.
          },
          &quot;version&quot;: &quot;A String&quot;, # Version of ACM installed.
        },
        &quot;operatorState&quot;: { # State information for an ACM&#x27;s Operator # Current install status of ACM&#x27;s Operator
          &quot;deploymentState&quot;: &quot;A String&quot;, # The state of the Operator&#x27;s deployment
          &quot;errors&quot;: [ # Install errors.
            { # Errors pertaining to the installation of ACM
              &quot;errorMessage&quot;: &quot;A String&quot;, # A string representing the user facing error message
            },
          ],
          &quot;version&quot;: &quot;A String&quot;, # The semenatic version number of the operator
        },
        &quot;policyControllerState&quot;: { # State for PolicyControllerState. # PolicyController status
          &quot;deploymentState&quot;: { # State of Policy Controller installation. # The state about the policy controller installation.
            &quot;gatekeeperAudit&quot;: &quot;A String&quot;, # Status of gatekeeper-audit deployment.
            &quot;gatekeeperControllerManagerState&quot;: &quot;A String&quot;, # Status of gatekeeper-controller-manager pod.
          },
          &quot;version&quot;: { # The build version of Gatekeeper Policy Controller is using. # The version of Gatekeeper Policy Controller deployed.
            &quot;version&quot;: &quot;A String&quot;, # The gatekeeper image tag that is composed of ACM version, git tag, build number.
          },
        },
      },
      &quot;metering&quot;: { # **Metering**: Per-Membership Feature State. # Metering-specific spec.
        &quot;lastMeasurementTime&quot;: &quot;A String&quot;, # The time stamp of the most recent measurement of the number of vCPUs in the cluster.
        &quot;preciseLastMeasuredClusterVcpuCapacity&quot;: 3.14, # The vCPUs capacity in the cluster according to the most recent measurement (1/1000 precision).
      },
      &quot;state&quot;: { # FeatureState describes the high-level state of a Feature. It may be used to describe a Feature&#x27;s state at the environ-level, or per-membershop, depending on the context. # The high-level state of this Feature for a single membership.
        &quot;code&quot;: &quot;A String&quot;, # The high-level, machine-readable status of this Feature.
        &quot;description&quot;: &quot;A String&quot;, # A human-readable description of the current status.
        &quot;updateTime&quot;: &quot;A String&quot;, # The time this status and any related Feature-specific details were updated.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The full, unique name of this Feature resource in the format `projects/*/locations/*/features/*`.
  &quot;resourceState&quot;: { # FeatureResourceState describes the state of a Feature *resource* in the GkeHub API. See `FeatureState` for the &quot;running state&quot; of the Feature in the Hub and across Memberships. # Output only. State of the Feature resource itself.
    &quot;state&quot;: &quot;A String&quot;, # The current state of the Feature resource in the Hub API.
  },
  &quot;spec&quot;: { # CommonFeatureSpec contains Hub-wide configuration information # Optional. Hub-wide Feature configuration. If this Feature does not support any Hub-wide configuration, this field may be unused.
    &quot;multiclusteringress&quot;: { # **Multi-cluster Ingress**: The configuration for the MultiClusterIngress feature. # Multicluster Ingress-specific spec.
      &quot;billing&quot;: &quot;A String&quot;, # Customer&#x27;s billing structure
      &quot;configMembership&quot;: &quot;A String&quot;, # Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: `projects/foo-proj/locations/global/memberships/bar`
    },
  },
  &quot;state&quot;: { # CommonFeatureState contains Hub-wide Feature status information. # Output only. The Hub-wide Feature state.
    &quot;state&quot;: { # FeatureState describes the high-level state of a Feature. It may be used to describe a Feature&#x27;s state at the environ-level, or per-membershop, depending on the context. # Output only. The &quot;running state&quot; of the Feature in this Hub.
      &quot;code&quot;: &quot;A String&quot;, # The high-level, machine-readable status of this Feature.
      &quot;description&quot;: &quot;A String&quot;, # A human-readable description of the current status.
      &quot;updateTime&quot;: &quot;A String&quot;, # The time this status and any related Feature-specific details were updated.
    },
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. When the Feature resource was last updated.
}

  featureId: string, The ID of the feature to create.
  requestId: string, Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, force=None, requestId=None, x__xgafv=None)</code>
  <pre>Removes a Feature.

Args:
  name: string, The Feature resource name in the format `projects/*/locations/*/features/*`. (required)
  force: boolean, If set to true, the delete will ignore any outstanding resources for this Feature (that is, `FeatureState.has_resources` is set to true). These resources will NOT be cleaned up or modified in any way.
  requestId: string, Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets details of a single Feature.

Args:
  name: string, The Feature resource name in the format `projects/*/locations/*/features/*` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Feature represents the settings and status of any Hub Feature.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. When the Feature resource was created.
  &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. When the Feature resource was deleted.
  &quot;labels&quot;: { # GCP labels for this Feature.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;membershipSpecs&quot;: { # Optional. Membership-specific configuration for this Feature. If this Feature does not support any per-Membership configuration, this field may be unused. The keys indicate which Membership the configuration is for, in the form: projects/{p}/locations/{l}/memberships/{m} Where {p} is the project, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} WILL match the Feature&#x27;s project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Membership is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature.
    &quot;a_key&quot;: { # MembershipFeatureSpec contains configuration information for a single Membership.
      &quot;configmanagement&quot;: { # **Anthos Config Management**: Configuration for a single cluster. Intended to parallel the ConfigManagement CR. # Config Management-specific spec.
        &quot;binauthz&quot;: { # Configuration for Binauthz # Binauthz conifguration for the cluster.
          &quot;enabled&quot;: True or False, # Whether binauthz is enabled in this cluster.
        },
        &quot;configSync&quot;: { # Configuration for Config Sync # Config Sync configuration for the cluster.
          &quot;git&quot;: { # Git repo configuration for a single cluster. # Git repo configuration for the cluster.
            &quot;gcpServiceAccountEmail&quot;: &quot;A String&quot;, # The GCP Service Account Email used for auth when secret_type is gcpServiceAccount.
            &quot;httpsProxy&quot;: &quot;A String&quot;, # URL for the HTTPS proxy to be used when communicating with the Git repo.
            &quot;policyDir&quot;: &quot;A String&quot;, # The path within the Git repository that represents the top level of the repo to sync. Default: the root directory of the repository.
            &quot;secretType&quot;: &quot;A String&quot;, # Type of secret configured for access to the Git repo.
            &quot;syncBranch&quot;: &quot;A String&quot;, # The branch of the repository to sync from. Default: master.
            &quot;syncRepo&quot;: &quot;A String&quot;, # The URL of the Git repository to use as the source of truth.
            &quot;syncRev&quot;: &quot;A String&quot;, # Git revision (tag or hash) to check out. Default HEAD.
            &quot;syncWaitSecs&quot;: &quot;A String&quot;, # Period in seconds between consecutive syncs. Default: 15.
          },
          &quot;sourceFormat&quot;: &quot;A String&quot;, # Specifies whether the Config Sync Repo is in “hierarchical” or “unstructured” mode.
        },
        &quot;hierarchyController&quot;: { # Configuration for Hierarchy Controller # Hierarchy Controller configuration for the cluster.
          &quot;enableHierarchicalResourceQuota&quot;: True or False, # Whether hierarchical resource quota is enabled in this cluster.
          &quot;enablePodTreeLabels&quot;: True or False, # Whether pod tree labels are enabled in this cluster.
          &quot;enabled&quot;: True or False, # Whether Hierarchy Controller is enabled in this cluster.
        },
        &quot;policyController&quot;: { # Configuration for Policy Controller # Policy Controller configuration for the cluster.
          &quot;auditIntervalSeconds&quot;: &quot;A String&quot;, # Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether.
          &quot;enabled&quot;: True or False, # Enables the installation of Policy Controller. If false, the rest of PolicyController fields take no effect.
          &quot;exemptableNamespaces&quot;: [ # The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster.
            &quot;A String&quot;,
          ],
          &quot;logDeniesEnabled&quot;: True or False, # Logs all denies and dry run failures.
          &quot;referentialRulesEnabled&quot;: True or False, # Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated.
          &quot;templateLibraryInstalled&quot;: True or False, # Installs the default template library along with Policy Controller.
        },
        &quot;version&quot;: &quot;A String&quot;, # Version of ACM installed.
      },
    },
  },
  &quot;membershipStates&quot;: { # Output only. Membership-specific Feature status. If this Feature does report any per-Membership status, this field may be unused. The keys indicate which Membership the state is for, in the form: projects/{p}/locations/{l}/memberships/{m} Where {p} is the project number, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} MUST match the Feature&#x27;s project number.
    &quot;a_key&quot;: { # MembershipFeatureState contains Feature status information for a single Membership.
      &quot;configmanagement&quot;: { # **Anthos Config Management**: State for a single cluster. # Config Management-specific state.
        &quot;binauthzState&quot;: { # State for Binauthz # Binauthz status
          &quot;version&quot;: { # The version of binauthz. # The version of binauthz that is installed.
            &quot;webhookVersion&quot;: &quot;A String&quot;, # The version of the binauthz webhook.
          },
          &quot;webhook&quot;: &quot;A String&quot;, # The state of the binauthz webhook.
        },
        &quot;clusterName&quot;: &quot;A String&quot;, # The user-defined name for the cluster used by ClusterSelectors to group clusters together. This should match Membership&#x27;s membership_name, unless the user installed ACM on the cluster manually prior to enabling the ACM hub feature. Unique within a Anthos Config Management installation.
        &quot;configSyncState&quot;: { # State information for ConfigSync # Current sync status
          &quot;deploymentState&quot;: { # The state of ConfigSync&#x27;s deployment on a cluster # Information about the deployment of ConfigSync, including the version of the various Pods deployed
            &quot;gitSync&quot;: &quot;A String&quot;, # Deployment state of the git-sync pod
            &quot;importer&quot;: &quot;A String&quot;, # Deployment state of the importer pod
            &quot;monitor&quot;: &quot;A String&quot;, # Deployment state of the monitor pod
            &quot;reconcilerManager&quot;: &quot;A String&quot;, # Deployment state of reconciler-manager pod
            &quot;rootReconciler&quot;: &quot;A String&quot;, # Deployment state of root-reconciler
            &quot;syncer&quot;: &quot;A String&quot;, # Deployment state of the syncer pod
          },
          &quot;syncState&quot;: { # State indicating an ACM&#x27;s progress syncing configurations to a cluster # The state of ConfigSync&#x27;s process to sync configs to a cluster
            &quot;code&quot;: &quot;A String&quot;, # Sync status code
            &quot;errors&quot;: [ # A list of errors resulting from problematic configs. This list will be truncated after 100 errors, although it is unlikely for that many errors to simultaneously exist.
              { # An ACM created error representing a problem syncing configurations
                &quot;code&quot;: &quot;A String&quot;, # An ACM defined error code
                &quot;errorMessage&quot;: &quot;A String&quot;, # A description of the error
                &quot;errorResources&quot;: [ # A list of config(s) associated with the error, if any
                  { # Model for a config file in the git repo with an associated Sync error
                    &quot;resourceGvk&quot;: { # A Kubernetes object&#x27;s GVK # Group/version/kind of the resource that is causing an error
                      &quot;group&quot;: &quot;A String&quot;, # Kubernetes Group
                      &quot;kind&quot;: &quot;A String&quot;, # Kubernetes Kind
                      &quot;version&quot;: &quot;A String&quot;, # Kubernetes Version
                    },
                    &quot;resourceName&quot;: &quot;A String&quot;, # Metadata name of the resource that is causing an error
                    &quot;resourceNamespace&quot;: &quot;A String&quot;, # Namespace of the resource that is causing an error
                    &quot;sourcePath&quot;: &quot;A String&quot;, # Path in the git repo of the erroneous config
                  },
                ],
              },
            ],
            &quot;importToken&quot;: &quot;A String&quot;, # Token indicating the state of the importer.
            &quot;lastSync&quot;: &quot;A String&quot;, # Timestamp of when ACM last successfully synced the repo The time format is specified in https://golang.org/pkg/time/#Time.String This field is being deprecated. Use last_sync_time instead. (b/154053616)
            &quot;lastSyncTime&quot;: &quot;A String&quot;, # Timestamp type of when ACM last successfully synced the repo
            &quot;sourceToken&quot;: &quot;A String&quot;, # Token indicating the state of the repo.
            &quot;syncToken&quot;: &quot;A String&quot;, # Token indicating the state of the syncer.
          },
          &quot;version&quot;: { # Specific versioning information pertaining to ConfigSync&#x27;s Pods # The version of ConfigSync deployed
            &quot;gitSync&quot;: &quot;A String&quot;, # Version of the deployed git-sync pod
            &quot;importer&quot;: &quot;A String&quot;, # Version of the deployed importer pod
            &quot;monitor&quot;: &quot;A String&quot;, # Version of the deployed monitor pod
            &quot;reconcilerManager&quot;: &quot;A String&quot;, # Version of the deployed reconciler-manager pod
            &quot;rootReconciler&quot;: &quot;A String&quot;, # Version of the deployed reconciler container in root-reconciler pod
            &quot;syncer&quot;: &quot;A String&quot;, # Version of the deployed syncer pod
          },
        },
        &quot;hierarchyControllerState&quot;: { # State for Hierarchy Controller # Hierarchy Controller status
          &quot;state&quot;: { # Deployment state for Hierarchy Controller # The deployment state for Hierarchy Controller
            &quot;extension&quot;: &quot;A String&quot;, # The deployment state for Hierarchy Controller extension (e.g. v0.7.0-hc.1)
            &quot;hnc&quot;: &quot;A String&quot;, # The deployment state for open source HNC (e.g. v0.7.0-hc.0)
          },
          &quot;version&quot;: { # Version for Hierarchy Controller # The version for Hierarchy Controller
            &quot;extension&quot;: &quot;A String&quot;, # Version for Hierarchy Controller extension
            &quot;hnc&quot;: &quot;A String&quot;, # Version for open source HNC
          },
        },
        &quot;membershipSpec&quot;: { # **Anthos Config Management**: Configuration for a single cluster. Intended to parallel the ConfigManagement CR. # Membership configuration in the cluster. This represents the actual state in the cluster, while the MembershipSpec in the FeatureSpec represents the intended state
          &quot;binauthz&quot;: { # Configuration for Binauthz # Binauthz conifguration for the cluster.
            &quot;enabled&quot;: True or False, # Whether binauthz is enabled in this cluster.
          },
          &quot;configSync&quot;: { # Configuration for Config Sync # Config Sync configuration for the cluster.
            &quot;git&quot;: { # Git repo configuration for a single cluster. # Git repo configuration for the cluster.
              &quot;gcpServiceAccountEmail&quot;: &quot;A String&quot;, # The GCP Service Account Email used for auth when secret_type is gcpServiceAccount.
              &quot;httpsProxy&quot;: &quot;A String&quot;, # URL for the HTTPS proxy to be used when communicating with the Git repo.
              &quot;policyDir&quot;: &quot;A String&quot;, # The path within the Git repository that represents the top level of the repo to sync. Default: the root directory of the repository.
              &quot;secretType&quot;: &quot;A String&quot;, # Type of secret configured for access to the Git repo.
              &quot;syncBranch&quot;: &quot;A String&quot;, # The branch of the repository to sync from. Default: master.
              &quot;syncRepo&quot;: &quot;A String&quot;, # The URL of the Git repository to use as the source of truth.
              &quot;syncRev&quot;: &quot;A String&quot;, # Git revision (tag or hash) to check out. Default HEAD.
              &quot;syncWaitSecs&quot;: &quot;A String&quot;, # Period in seconds between consecutive syncs. Default: 15.
            },
            &quot;sourceFormat&quot;: &quot;A String&quot;, # Specifies whether the Config Sync Repo is in “hierarchical” or “unstructured” mode.
          },
          &quot;hierarchyController&quot;: { # Configuration for Hierarchy Controller # Hierarchy Controller configuration for the cluster.
            &quot;enableHierarchicalResourceQuota&quot;: True or False, # Whether hierarchical resource quota is enabled in this cluster.
            &quot;enablePodTreeLabels&quot;: True or False, # Whether pod tree labels are enabled in this cluster.
            &quot;enabled&quot;: True or False, # Whether Hierarchy Controller is enabled in this cluster.
          },
          &quot;policyController&quot;: { # Configuration for Policy Controller # Policy Controller configuration for the cluster.
            &quot;auditIntervalSeconds&quot;: &quot;A String&quot;, # Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether.
            &quot;enabled&quot;: True or False, # Enables the installation of Policy Controller. If false, the rest of PolicyController fields take no effect.
            &quot;exemptableNamespaces&quot;: [ # The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster.
              &quot;A String&quot;,
            ],
            &quot;logDeniesEnabled&quot;: True or False, # Logs all denies and dry run failures.
            &quot;referentialRulesEnabled&quot;: True or False, # Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated.
            &quot;templateLibraryInstalled&quot;: True or False, # Installs the default template library along with Policy Controller.
          },
          &quot;version&quot;: &quot;A String&quot;, # Version of ACM installed.
        },
        &quot;operatorState&quot;: { # State information for an ACM&#x27;s Operator # Current install status of ACM&#x27;s Operator
          &quot;deploymentState&quot;: &quot;A String&quot;, # The state of the Operator&#x27;s deployment
          &quot;errors&quot;: [ # Install errors.
            { # Errors pertaining to the installation of ACM
              &quot;errorMessage&quot;: &quot;A String&quot;, # A string representing the user facing error message
            },
          ],
          &quot;version&quot;: &quot;A String&quot;, # The semenatic version number of the operator
        },
        &quot;policyControllerState&quot;: { # State for PolicyControllerState. # PolicyController status
          &quot;deploymentState&quot;: { # State of Policy Controller installation. # The state about the policy controller installation.
            &quot;gatekeeperAudit&quot;: &quot;A String&quot;, # Status of gatekeeper-audit deployment.
            &quot;gatekeeperControllerManagerState&quot;: &quot;A String&quot;, # Status of gatekeeper-controller-manager pod.
          },
          &quot;version&quot;: { # The build version of Gatekeeper Policy Controller is using. # The version of Gatekeeper Policy Controller deployed.
            &quot;version&quot;: &quot;A String&quot;, # The gatekeeper image tag that is composed of ACM version, git tag, build number.
          },
        },
      },
      &quot;metering&quot;: { # **Metering**: Per-Membership Feature State. # Metering-specific spec.
        &quot;lastMeasurementTime&quot;: &quot;A String&quot;, # The time stamp of the most recent measurement of the number of vCPUs in the cluster.
        &quot;preciseLastMeasuredClusterVcpuCapacity&quot;: 3.14, # The vCPUs capacity in the cluster according to the most recent measurement (1/1000 precision).
      },
      &quot;state&quot;: { # FeatureState describes the high-level state of a Feature. It may be used to describe a Feature&#x27;s state at the environ-level, or per-membershop, depending on the context. # The high-level state of this Feature for a single membership.
        &quot;code&quot;: &quot;A String&quot;, # The high-level, machine-readable status of this Feature.
        &quot;description&quot;: &quot;A String&quot;, # A human-readable description of the current status.
        &quot;updateTime&quot;: &quot;A String&quot;, # The time this status and any related Feature-specific details were updated.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The full, unique name of this Feature resource in the format `projects/*/locations/*/features/*`.
  &quot;resourceState&quot;: { # FeatureResourceState describes the state of a Feature *resource* in the GkeHub API. See `FeatureState` for the &quot;running state&quot; of the Feature in the Hub and across Memberships. # Output only. State of the Feature resource itself.
    &quot;state&quot;: &quot;A String&quot;, # The current state of the Feature resource in the Hub API.
  },
  &quot;spec&quot;: { # CommonFeatureSpec contains Hub-wide configuration information # Optional. Hub-wide Feature configuration. If this Feature does not support any Hub-wide configuration, this field may be unused.
    &quot;multiclusteringress&quot;: { # **Multi-cluster Ingress**: The configuration for the MultiClusterIngress feature. # Multicluster Ingress-specific spec.
      &quot;billing&quot;: &quot;A String&quot;, # Customer&#x27;s billing structure
      &quot;configMembership&quot;: &quot;A String&quot;, # Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: `projects/foo-proj/locations/global/memberships/bar`
    },
  },
  &quot;state&quot;: { # CommonFeatureState contains Hub-wide Feature status information. # Output only. The Hub-wide Feature state.
    &quot;state&quot;: { # FeatureState describes the high-level state of a Feature. It may be used to describe a Feature&#x27;s state at the environ-level, or per-membershop, depending on the context. # Output only. The &quot;running state&quot; of the Feature in this Hub.
      &quot;code&quot;: &quot;A String&quot;, # The high-level, machine-readable status of this Feature.
      &quot;description&quot;: &quot;A String&quot;, # A human-readable description of the current status.
      &quot;updateTime&quot;: &quot;A String&quot;, # The time this status and any related Feature-specific details were updated.
    },
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. When the Feature resource was last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="getIamPolicy">getIamPolicy(resource, options_requestedPolicyVersion=None, x__xgafv=None)</code>
  <pre>Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.

Args:
  resource: string, REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field. (required)
  options_requestedPolicyVersion: integer, Optional. The policy format version to be returned. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional bindings must specify version 3. Policies without any conditional bindings may specify any valid value or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members` to a single `role`. Members can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } **YAML example:** bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) - etag: BwWWja0YfJA= - version: 3 For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).
  &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
    { # Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { &quot;audit_configs&quot;: [ { &quot;service&quot;: &quot;allServices&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; }, { &quot;log_type&quot;: &quot;ADMIN_READ&quot; } ] }, { &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot; }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot;, &quot;exempted_members&quot;: [ &quot;user:aliya@example.com&quot; ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.
      &quot;auditLogConfigs&quot;: [ # The configuration for logging of each type of permission.
        { # Provides the configuration for logging a type of permissions. Example: { &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; } ] } This enables &#x27;DATA_READ&#x27; and &#x27;DATA_WRITE&#x27; logging, while exempting jose@example.com from DATA_READ logging.
          &quot;exemptedMembers&quot;: [ # Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.
            &quot;A String&quot;,
          ],
          &quot;logType&quot;: &quot;A String&quot;, # The log type that this config enables.
        },
      ],
      &quot;service&quot;: &quot;A String&quot;, # Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.
    },
  ],
  &quot;bindings&quot;: [ # Associates a list of `members` to a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one member.
    { # Associates `members` with a `role`.
      &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the members in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
        &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
        &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
        &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
      },
      &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`.
        &quot;A String&quot;,
      ],
      &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
  &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists Features in a given project and location.

Args:
  parent: string, The parent (project and location) where the Features will be listed. Specified in the format `projects/*/locations/*`. (required)
  filter: string, Lists Features that match the filter expression, following the syntax outlined in https://google.aip.dev/160. Examples: - Feature with the name &quot;servicemesh&quot; in project &quot;foo-proj&quot;: name = &quot;projects/foo-proj/locations/global/features/servicemesh&quot; - Features that have a label called `foo`: labels.foo:* - Features that have a label called `foo` whose value is `bar`: labels.foo = bar
  orderBy: string, One or more fields to compare and use to sort the output. See https://google.aip.dev/132#ordering.
  pageSize: integer, When requesting a &#x27;page&#x27; of resources, `page_size` specifies number of resources to return. If unspecified or set to 0, all resources will be returned.
  pageToken: string, Token returned by previous call to `ListFeatures` which specifies the position in the list from where to continue listing the resources.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for the `GkeHub.ListFeatures` method.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to request the next page of resources from the `ListFeatures` method. The value of an empty string means that there are no more resources to return.
  &quot;resources&quot;: [ # The list of matching Features
    { # Feature represents the settings and status of any Hub Feature.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. When the Feature resource was created.
      &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. When the Feature resource was deleted.
      &quot;labels&quot;: { # GCP labels for this Feature.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;membershipSpecs&quot;: { # Optional. Membership-specific configuration for this Feature. If this Feature does not support any per-Membership configuration, this field may be unused. The keys indicate which Membership the configuration is for, in the form: projects/{p}/locations/{l}/memberships/{m} Where {p} is the project, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} WILL match the Feature&#x27;s project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Membership is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature.
        &quot;a_key&quot;: { # MembershipFeatureSpec contains configuration information for a single Membership.
          &quot;configmanagement&quot;: { # **Anthos Config Management**: Configuration for a single cluster. Intended to parallel the ConfigManagement CR. # Config Management-specific spec.
            &quot;binauthz&quot;: { # Configuration for Binauthz # Binauthz conifguration for the cluster.
              &quot;enabled&quot;: True or False, # Whether binauthz is enabled in this cluster.
            },
            &quot;configSync&quot;: { # Configuration for Config Sync # Config Sync configuration for the cluster.
              &quot;git&quot;: { # Git repo configuration for a single cluster. # Git repo configuration for the cluster.
                &quot;gcpServiceAccountEmail&quot;: &quot;A String&quot;, # The GCP Service Account Email used for auth when secret_type is gcpServiceAccount.
                &quot;httpsProxy&quot;: &quot;A String&quot;, # URL for the HTTPS proxy to be used when communicating with the Git repo.
                &quot;policyDir&quot;: &quot;A String&quot;, # The path within the Git repository that represents the top level of the repo to sync. Default: the root directory of the repository.
                &quot;secretType&quot;: &quot;A String&quot;, # Type of secret configured for access to the Git repo.
                &quot;syncBranch&quot;: &quot;A String&quot;, # The branch of the repository to sync from. Default: master.
                &quot;syncRepo&quot;: &quot;A String&quot;, # The URL of the Git repository to use as the source of truth.
                &quot;syncRev&quot;: &quot;A String&quot;, # Git revision (tag or hash) to check out. Default HEAD.
                &quot;syncWaitSecs&quot;: &quot;A String&quot;, # Period in seconds between consecutive syncs. Default: 15.
              },
              &quot;sourceFormat&quot;: &quot;A String&quot;, # Specifies whether the Config Sync Repo is in “hierarchical” or “unstructured” mode.
            },
            &quot;hierarchyController&quot;: { # Configuration for Hierarchy Controller # Hierarchy Controller configuration for the cluster.
              &quot;enableHierarchicalResourceQuota&quot;: True or False, # Whether hierarchical resource quota is enabled in this cluster.
              &quot;enablePodTreeLabels&quot;: True or False, # Whether pod tree labels are enabled in this cluster.
              &quot;enabled&quot;: True or False, # Whether Hierarchy Controller is enabled in this cluster.
            },
            &quot;policyController&quot;: { # Configuration for Policy Controller # Policy Controller configuration for the cluster.
              &quot;auditIntervalSeconds&quot;: &quot;A String&quot;, # Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether.
              &quot;enabled&quot;: True or False, # Enables the installation of Policy Controller. If false, the rest of PolicyController fields take no effect.
              &quot;exemptableNamespaces&quot;: [ # The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster.
                &quot;A String&quot;,
              ],
              &quot;logDeniesEnabled&quot;: True or False, # Logs all denies and dry run failures.
              &quot;referentialRulesEnabled&quot;: True or False, # Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated.
              &quot;templateLibraryInstalled&quot;: True or False, # Installs the default template library along with Policy Controller.
            },
            &quot;version&quot;: &quot;A String&quot;, # Version of ACM installed.
          },
        },
      },
      &quot;membershipStates&quot;: { # Output only. Membership-specific Feature status. If this Feature does report any per-Membership status, this field may be unused. The keys indicate which Membership the state is for, in the form: projects/{p}/locations/{l}/memberships/{m} Where {p} is the project number, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} MUST match the Feature&#x27;s project number.
        &quot;a_key&quot;: { # MembershipFeatureState contains Feature status information for a single Membership.
          &quot;configmanagement&quot;: { # **Anthos Config Management**: State for a single cluster. # Config Management-specific state.
            &quot;binauthzState&quot;: { # State for Binauthz # Binauthz status
              &quot;version&quot;: { # The version of binauthz. # The version of binauthz that is installed.
                &quot;webhookVersion&quot;: &quot;A String&quot;, # The version of the binauthz webhook.
              },
              &quot;webhook&quot;: &quot;A String&quot;, # The state of the binauthz webhook.
            },
            &quot;clusterName&quot;: &quot;A String&quot;, # The user-defined name for the cluster used by ClusterSelectors to group clusters together. This should match Membership&#x27;s membership_name, unless the user installed ACM on the cluster manually prior to enabling the ACM hub feature. Unique within a Anthos Config Management installation.
            &quot;configSyncState&quot;: { # State information for ConfigSync # Current sync status
              &quot;deploymentState&quot;: { # The state of ConfigSync&#x27;s deployment on a cluster # Information about the deployment of ConfigSync, including the version of the various Pods deployed
                &quot;gitSync&quot;: &quot;A String&quot;, # Deployment state of the git-sync pod
                &quot;importer&quot;: &quot;A String&quot;, # Deployment state of the importer pod
                &quot;monitor&quot;: &quot;A String&quot;, # Deployment state of the monitor pod
                &quot;reconcilerManager&quot;: &quot;A String&quot;, # Deployment state of reconciler-manager pod
                &quot;rootReconciler&quot;: &quot;A String&quot;, # Deployment state of root-reconciler
                &quot;syncer&quot;: &quot;A String&quot;, # Deployment state of the syncer pod
              },
              &quot;syncState&quot;: { # State indicating an ACM&#x27;s progress syncing configurations to a cluster # The state of ConfigSync&#x27;s process to sync configs to a cluster
                &quot;code&quot;: &quot;A String&quot;, # Sync status code
                &quot;errors&quot;: [ # A list of errors resulting from problematic configs. This list will be truncated after 100 errors, although it is unlikely for that many errors to simultaneously exist.
                  { # An ACM created error representing a problem syncing configurations
                    &quot;code&quot;: &quot;A String&quot;, # An ACM defined error code
                    &quot;errorMessage&quot;: &quot;A String&quot;, # A description of the error
                    &quot;errorResources&quot;: [ # A list of config(s) associated with the error, if any
                      { # Model for a config file in the git repo with an associated Sync error
                        &quot;resourceGvk&quot;: { # A Kubernetes object&#x27;s GVK # Group/version/kind of the resource that is causing an error
                          &quot;group&quot;: &quot;A String&quot;, # Kubernetes Group
                          &quot;kind&quot;: &quot;A String&quot;, # Kubernetes Kind
                          &quot;version&quot;: &quot;A String&quot;, # Kubernetes Version
                        },
                        &quot;resourceName&quot;: &quot;A String&quot;, # Metadata name of the resource that is causing an error
                        &quot;resourceNamespace&quot;: &quot;A String&quot;, # Namespace of the resource that is causing an error
                        &quot;sourcePath&quot;: &quot;A String&quot;, # Path in the git repo of the erroneous config
                      },
                    ],
                  },
                ],
                &quot;importToken&quot;: &quot;A String&quot;, # Token indicating the state of the importer.
                &quot;lastSync&quot;: &quot;A String&quot;, # Timestamp of when ACM last successfully synced the repo The time format is specified in https://golang.org/pkg/time/#Time.String This field is being deprecated. Use last_sync_time instead. (b/154053616)
                &quot;lastSyncTime&quot;: &quot;A String&quot;, # Timestamp type of when ACM last successfully synced the repo
                &quot;sourceToken&quot;: &quot;A String&quot;, # Token indicating the state of the repo.
                &quot;syncToken&quot;: &quot;A String&quot;, # Token indicating the state of the syncer.
              },
              &quot;version&quot;: { # Specific versioning information pertaining to ConfigSync&#x27;s Pods # The version of ConfigSync deployed
                &quot;gitSync&quot;: &quot;A String&quot;, # Version of the deployed git-sync pod
                &quot;importer&quot;: &quot;A String&quot;, # Version of the deployed importer pod
                &quot;monitor&quot;: &quot;A String&quot;, # Version of the deployed monitor pod
                &quot;reconcilerManager&quot;: &quot;A String&quot;, # Version of the deployed reconciler-manager pod
                &quot;rootReconciler&quot;: &quot;A String&quot;, # Version of the deployed reconciler container in root-reconciler pod
                &quot;syncer&quot;: &quot;A String&quot;, # Version of the deployed syncer pod
              },
            },
            &quot;hierarchyControllerState&quot;: { # State for Hierarchy Controller # Hierarchy Controller status
              &quot;state&quot;: { # Deployment state for Hierarchy Controller # The deployment state for Hierarchy Controller
                &quot;extension&quot;: &quot;A String&quot;, # The deployment state for Hierarchy Controller extension (e.g. v0.7.0-hc.1)
                &quot;hnc&quot;: &quot;A String&quot;, # The deployment state for open source HNC (e.g. v0.7.0-hc.0)
              },
              &quot;version&quot;: { # Version for Hierarchy Controller # The version for Hierarchy Controller
                &quot;extension&quot;: &quot;A String&quot;, # Version for Hierarchy Controller extension
                &quot;hnc&quot;: &quot;A String&quot;, # Version for open source HNC
              },
            },
            &quot;membershipSpec&quot;: { # **Anthos Config Management**: Configuration for a single cluster. Intended to parallel the ConfigManagement CR. # Membership configuration in the cluster. This represents the actual state in the cluster, while the MembershipSpec in the FeatureSpec represents the intended state
              &quot;binauthz&quot;: { # Configuration for Binauthz # Binauthz conifguration for the cluster.
                &quot;enabled&quot;: True or False, # Whether binauthz is enabled in this cluster.
              },
              &quot;configSync&quot;: { # Configuration for Config Sync # Config Sync configuration for the cluster.
                &quot;git&quot;: { # Git repo configuration for a single cluster. # Git repo configuration for the cluster.
                  &quot;gcpServiceAccountEmail&quot;: &quot;A String&quot;, # The GCP Service Account Email used for auth when secret_type is gcpServiceAccount.
                  &quot;httpsProxy&quot;: &quot;A String&quot;, # URL for the HTTPS proxy to be used when communicating with the Git repo.
                  &quot;policyDir&quot;: &quot;A String&quot;, # The path within the Git repository that represents the top level of the repo to sync. Default: the root directory of the repository.
                  &quot;secretType&quot;: &quot;A String&quot;, # Type of secret configured for access to the Git repo.
                  &quot;syncBranch&quot;: &quot;A String&quot;, # The branch of the repository to sync from. Default: master.
                  &quot;syncRepo&quot;: &quot;A String&quot;, # The URL of the Git repository to use as the source of truth.
                  &quot;syncRev&quot;: &quot;A String&quot;, # Git revision (tag or hash) to check out. Default HEAD.
                  &quot;syncWaitSecs&quot;: &quot;A String&quot;, # Period in seconds between consecutive syncs. Default: 15.
                },
                &quot;sourceFormat&quot;: &quot;A String&quot;, # Specifies whether the Config Sync Repo is in “hierarchical” or “unstructured” mode.
              },
              &quot;hierarchyController&quot;: { # Configuration for Hierarchy Controller # Hierarchy Controller configuration for the cluster.
                &quot;enableHierarchicalResourceQuota&quot;: True or False, # Whether hierarchical resource quota is enabled in this cluster.
                &quot;enablePodTreeLabels&quot;: True or False, # Whether pod tree labels are enabled in this cluster.
                &quot;enabled&quot;: True or False, # Whether Hierarchy Controller is enabled in this cluster.
              },
              &quot;policyController&quot;: { # Configuration for Policy Controller # Policy Controller configuration for the cluster.
                &quot;auditIntervalSeconds&quot;: &quot;A String&quot;, # Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether.
                &quot;enabled&quot;: True or False, # Enables the installation of Policy Controller. If false, the rest of PolicyController fields take no effect.
                &quot;exemptableNamespaces&quot;: [ # The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster.
                  &quot;A String&quot;,
                ],
                &quot;logDeniesEnabled&quot;: True or False, # Logs all denies and dry run failures.
                &quot;referentialRulesEnabled&quot;: True or False, # Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated.
                &quot;templateLibraryInstalled&quot;: True or False, # Installs the default template library along with Policy Controller.
              },
              &quot;version&quot;: &quot;A String&quot;, # Version of ACM installed.
            },
            &quot;operatorState&quot;: { # State information for an ACM&#x27;s Operator # Current install status of ACM&#x27;s Operator
              &quot;deploymentState&quot;: &quot;A String&quot;, # The state of the Operator&#x27;s deployment
              &quot;errors&quot;: [ # Install errors.
                { # Errors pertaining to the installation of ACM
                  &quot;errorMessage&quot;: &quot;A String&quot;, # A string representing the user facing error message
                },
              ],
              &quot;version&quot;: &quot;A String&quot;, # The semenatic version number of the operator
            },
            &quot;policyControllerState&quot;: { # State for PolicyControllerState. # PolicyController status
              &quot;deploymentState&quot;: { # State of Policy Controller installation. # The state about the policy controller installation.
                &quot;gatekeeperAudit&quot;: &quot;A String&quot;, # Status of gatekeeper-audit deployment.
                &quot;gatekeeperControllerManagerState&quot;: &quot;A String&quot;, # Status of gatekeeper-controller-manager pod.
              },
              &quot;version&quot;: { # The build version of Gatekeeper Policy Controller is using. # The version of Gatekeeper Policy Controller deployed.
                &quot;version&quot;: &quot;A String&quot;, # The gatekeeper image tag that is composed of ACM version, git tag, build number.
              },
            },
          },
          &quot;metering&quot;: { # **Metering**: Per-Membership Feature State. # Metering-specific spec.
            &quot;lastMeasurementTime&quot;: &quot;A String&quot;, # The time stamp of the most recent measurement of the number of vCPUs in the cluster.
            &quot;preciseLastMeasuredClusterVcpuCapacity&quot;: 3.14, # The vCPUs capacity in the cluster according to the most recent measurement (1/1000 precision).
          },
          &quot;state&quot;: { # FeatureState describes the high-level state of a Feature. It may be used to describe a Feature&#x27;s state at the environ-level, or per-membershop, depending on the context. # The high-level state of this Feature for a single membership.
            &quot;code&quot;: &quot;A String&quot;, # The high-level, machine-readable status of this Feature.
            &quot;description&quot;: &quot;A String&quot;, # A human-readable description of the current status.
            &quot;updateTime&quot;: &quot;A String&quot;, # The time this status and any related Feature-specific details were updated.
          },
        },
      },
      &quot;name&quot;: &quot;A String&quot;, # Output only. The full, unique name of this Feature resource in the format `projects/*/locations/*/features/*`.
      &quot;resourceState&quot;: { # FeatureResourceState describes the state of a Feature *resource* in the GkeHub API. See `FeatureState` for the &quot;running state&quot; of the Feature in the Hub and across Memberships. # Output only. State of the Feature resource itself.
        &quot;state&quot;: &quot;A String&quot;, # The current state of the Feature resource in the Hub API.
      },
      &quot;spec&quot;: { # CommonFeatureSpec contains Hub-wide configuration information # Optional. Hub-wide Feature configuration. If this Feature does not support any Hub-wide configuration, this field may be unused.
        &quot;multiclusteringress&quot;: { # **Multi-cluster Ingress**: The configuration for the MultiClusterIngress feature. # Multicluster Ingress-specific spec.
          &quot;billing&quot;: &quot;A String&quot;, # Customer&#x27;s billing structure
          &quot;configMembership&quot;: &quot;A String&quot;, # Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: `projects/foo-proj/locations/global/memberships/bar`
        },
      },
      &quot;state&quot;: { # CommonFeatureState contains Hub-wide Feature status information. # Output only. The Hub-wide Feature state.
        &quot;state&quot;: { # FeatureState describes the high-level state of a Feature. It may be used to describe a Feature&#x27;s state at the environ-level, or per-membershop, depending on the context. # Output only. The &quot;running state&quot; of the Feature in this Hub.
          &quot;code&quot;: &quot;A String&quot;, # The high-level, machine-readable status of this Feature.
          &quot;description&quot;: &quot;A String&quot;, # A human-readable description of the current status.
          &quot;updateTime&quot;: &quot;A String&quot;, # The time this status and any related Feature-specific details were updated.
        },
      },
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. When the Feature resource was last updated.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, requestId=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates an existing Feature.

Args:
  name: string, The Feature resource name in the format `projects/*/locations/*/features/*`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Feature represents the settings and status of any Hub Feature.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. When the Feature resource was created.
  &quot;deleteTime&quot;: &quot;A String&quot;, # Output only. When the Feature resource was deleted.
  &quot;labels&quot;: { # GCP labels for this Feature.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;membershipSpecs&quot;: { # Optional. Membership-specific configuration for this Feature. If this Feature does not support any per-Membership configuration, this field may be unused. The keys indicate which Membership the configuration is for, in the form: projects/{p}/locations/{l}/memberships/{m} Where {p} is the project, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} WILL match the Feature&#x27;s project. {p} will always be returned as the project number, but the project ID is also accepted during input. If the same Membership is specified in the map twice (using the project ID form, and the project number form), exactly ONE of the entries will be saved, with no guarantees as to which. For this reason, it is recommended the same format be used for all entries when mutating a Feature.
    &quot;a_key&quot;: { # MembershipFeatureSpec contains configuration information for a single Membership.
      &quot;configmanagement&quot;: { # **Anthos Config Management**: Configuration for a single cluster. Intended to parallel the ConfigManagement CR. # Config Management-specific spec.
        &quot;binauthz&quot;: { # Configuration for Binauthz # Binauthz conifguration for the cluster.
          &quot;enabled&quot;: True or False, # Whether binauthz is enabled in this cluster.
        },
        &quot;configSync&quot;: { # Configuration for Config Sync # Config Sync configuration for the cluster.
          &quot;git&quot;: { # Git repo configuration for a single cluster. # Git repo configuration for the cluster.
            &quot;gcpServiceAccountEmail&quot;: &quot;A String&quot;, # The GCP Service Account Email used for auth when secret_type is gcpServiceAccount.
            &quot;httpsProxy&quot;: &quot;A String&quot;, # URL for the HTTPS proxy to be used when communicating with the Git repo.
            &quot;policyDir&quot;: &quot;A String&quot;, # The path within the Git repository that represents the top level of the repo to sync. Default: the root directory of the repository.
            &quot;secretType&quot;: &quot;A String&quot;, # Type of secret configured for access to the Git repo.
            &quot;syncBranch&quot;: &quot;A String&quot;, # The branch of the repository to sync from. Default: master.
            &quot;syncRepo&quot;: &quot;A String&quot;, # The URL of the Git repository to use as the source of truth.
            &quot;syncRev&quot;: &quot;A String&quot;, # Git revision (tag or hash) to check out. Default HEAD.
            &quot;syncWaitSecs&quot;: &quot;A String&quot;, # Period in seconds between consecutive syncs. Default: 15.
          },
          &quot;sourceFormat&quot;: &quot;A String&quot;, # Specifies whether the Config Sync Repo is in “hierarchical” or “unstructured” mode.
        },
        &quot;hierarchyController&quot;: { # Configuration for Hierarchy Controller # Hierarchy Controller configuration for the cluster.
          &quot;enableHierarchicalResourceQuota&quot;: True or False, # Whether hierarchical resource quota is enabled in this cluster.
          &quot;enablePodTreeLabels&quot;: True or False, # Whether pod tree labels are enabled in this cluster.
          &quot;enabled&quot;: True or False, # Whether Hierarchy Controller is enabled in this cluster.
        },
        &quot;policyController&quot;: { # Configuration for Policy Controller # Policy Controller configuration for the cluster.
          &quot;auditIntervalSeconds&quot;: &quot;A String&quot;, # Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether.
          &quot;enabled&quot;: True or False, # Enables the installation of Policy Controller. If false, the rest of PolicyController fields take no effect.
          &quot;exemptableNamespaces&quot;: [ # The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster.
            &quot;A String&quot;,
          ],
          &quot;logDeniesEnabled&quot;: True or False, # Logs all denies and dry run failures.
          &quot;referentialRulesEnabled&quot;: True or False, # Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated.
          &quot;templateLibraryInstalled&quot;: True or False, # Installs the default template library along with Policy Controller.
        },
        &quot;version&quot;: &quot;A String&quot;, # Version of ACM installed.
      },
    },
  },
  &quot;membershipStates&quot;: { # Output only. Membership-specific Feature status. If this Feature does report any per-Membership status, this field may be unused. The keys indicate which Membership the state is for, in the form: projects/{p}/locations/{l}/memberships/{m} Where {p} is the project number, {l} is a valid location and {m} is a valid Membership in this project at that location. {p} MUST match the Feature&#x27;s project number.
    &quot;a_key&quot;: { # MembershipFeatureState contains Feature status information for a single Membership.
      &quot;configmanagement&quot;: { # **Anthos Config Management**: State for a single cluster. # Config Management-specific state.
        &quot;binauthzState&quot;: { # State for Binauthz # Binauthz status
          &quot;version&quot;: { # The version of binauthz. # The version of binauthz that is installed.
            &quot;webhookVersion&quot;: &quot;A String&quot;, # The version of the binauthz webhook.
          },
          &quot;webhook&quot;: &quot;A String&quot;, # The state of the binauthz webhook.
        },
        &quot;clusterName&quot;: &quot;A String&quot;, # The user-defined name for the cluster used by ClusterSelectors to group clusters together. This should match Membership&#x27;s membership_name, unless the user installed ACM on the cluster manually prior to enabling the ACM hub feature. Unique within a Anthos Config Management installation.
        &quot;configSyncState&quot;: { # State information for ConfigSync # Current sync status
          &quot;deploymentState&quot;: { # The state of ConfigSync&#x27;s deployment on a cluster # Information about the deployment of ConfigSync, including the version of the various Pods deployed
            &quot;gitSync&quot;: &quot;A String&quot;, # Deployment state of the git-sync pod
            &quot;importer&quot;: &quot;A String&quot;, # Deployment state of the importer pod
            &quot;monitor&quot;: &quot;A String&quot;, # Deployment state of the monitor pod
            &quot;reconcilerManager&quot;: &quot;A String&quot;, # Deployment state of reconciler-manager pod
            &quot;rootReconciler&quot;: &quot;A String&quot;, # Deployment state of root-reconciler
            &quot;syncer&quot;: &quot;A String&quot;, # Deployment state of the syncer pod
          },
          &quot;syncState&quot;: { # State indicating an ACM&#x27;s progress syncing configurations to a cluster # The state of ConfigSync&#x27;s process to sync configs to a cluster
            &quot;code&quot;: &quot;A String&quot;, # Sync status code
            &quot;errors&quot;: [ # A list of errors resulting from problematic configs. This list will be truncated after 100 errors, although it is unlikely for that many errors to simultaneously exist.
              { # An ACM created error representing a problem syncing configurations
                &quot;code&quot;: &quot;A String&quot;, # An ACM defined error code
                &quot;errorMessage&quot;: &quot;A String&quot;, # A description of the error
                &quot;errorResources&quot;: [ # A list of config(s) associated with the error, if any
                  { # Model for a config file in the git repo with an associated Sync error
                    &quot;resourceGvk&quot;: { # A Kubernetes object&#x27;s GVK # Group/version/kind of the resource that is causing an error
                      &quot;group&quot;: &quot;A String&quot;, # Kubernetes Group
                      &quot;kind&quot;: &quot;A String&quot;, # Kubernetes Kind
                      &quot;version&quot;: &quot;A String&quot;, # Kubernetes Version
                    },
                    &quot;resourceName&quot;: &quot;A String&quot;, # Metadata name of the resource that is causing an error
                    &quot;resourceNamespace&quot;: &quot;A String&quot;, # Namespace of the resource that is causing an error
                    &quot;sourcePath&quot;: &quot;A String&quot;, # Path in the git repo of the erroneous config
                  },
                ],
              },
            ],
            &quot;importToken&quot;: &quot;A String&quot;, # Token indicating the state of the importer.
            &quot;lastSync&quot;: &quot;A String&quot;, # Timestamp of when ACM last successfully synced the repo The time format is specified in https://golang.org/pkg/time/#Time.String This field is being deprecated. Use last_sync_time instead. (b/154053616)
            &quot;lastSyncTime&quot;: &quot;A String&quot;, # Timestamp type of when ACM last successfully synced the repo
            &quot;sourceToken&quot;: &quot;A String&quot;, # Token indicating the state of the repo.
            &quot;syncToken&quot;: &quot;A String&quot;, # Token indicating the state of the syncer.
          },
          &quot;version&quot;: { # Specific versioning information pertaining to ConfigSync&#x27;s Pods # The version of ConfigSync deployed
            &quot;gitSync&quot;: &quot;A String&quot;, # Version of the deployed git-sync pod
            &quot;importer&quot;: &quot;A String&quot;, # Version of the deployed importer pod
            &quot;monitor&quot;: &quot;A String&quot;, # Version of the deployed monitor pod
            &quot;reconcilerManager&quot;: &quot;A String&quot;, # Version of the deployed reconciler-manager pod
            &quot;rootReconciler&quot;: &quot;A String&quot;, # Version of the deployed reconciler container in root-reconciler pod
            &quot;syncer&quot;: &quot;A String&quot;, # Version of the deployed syncer pod
          },
        },
        &quot;hierarchyControllerState&quot;: { # State for Hierarchy Controller # Hierarchy Controller status
          &quot;state&quot;: { # Deployment state for Hierarchy Controller # The deployment state for Hierarchy Controller
            &quot;extension&quot;: &quot;A String&quot;, # The deployment state for Hierarchy Controller extension (e.g. v0.7.0-hc.1)
            &quot;hnc&quot;: &quot;A String&quot;, # The deployment state for open source HNC (e.g. v0.7.0-hc.0)
          },
          &quot;version&quot;: { # Version for Hierarchy Controller # The version for Hierarchy Controller
            &quot;extension&quot;: &quot;A String&quot;, # Version for Hierarchy Controller extension
            &quot;hnc&quot;: &quot;A String&quot;, # Version for open source HNC
          },
        },
        &quot;membershipSpec&quot;: { # **Anthos Config Management**: Configuration for a single cluster. Intended to parallel the ConfigManagement CR. # Membership configuration in the cluster. This represents the actual state in the cluster, while the MembershipSpec in the FeatureSpec represents the intended state
          &quot;binauthz&quot;: { # Configuration for Binauthz # Binauthz conifguration for the cluster.
            &quot;enabled&quot;: True or False, # Whether binauthz is enabled in this cluster.
          },
          &quot;configSync&quot;: { # Configuration for Config Sync # Config Sync configuration for the cluster.
            &quot;git&quot;: { # Git repo configuration for a single cluster. # Git repo configuration for the cluster.
              &quot;gcpServiceAccountEmail&quot;: &quot;A String&quot;, # The GCP Service Account Email used for auth when secret_type is gcpServiceAccount.
              &quot;httpsProxy&quot;: &quot;A String&quot;, # URL for the HTTPS proxy to be used when communicating with the Git repo.
              &quot;policyDir&quot;: &quot;A String&quot;, # The path within the Git repository that represents the top level of the repo to sync. Default: the root directory of the repository.
              &quot;secretType&quot;: &quot;A String&quot;, # Type of secret configured for access to the Git repo.
              &quot;syncBranch&quot;: &quot;A String&quot;, # The branch of the repository to sync from. Default: master.
              &quot;syncRepo&quot;: &quot;A String&quot;, # The URL of the Git repository to use as the source of truth.
              &quot;syncRev&quot;: &quot;A String&quot;, # Git revision (tag or hash) to check out. Default HEAD.
              &quot;syncWaitSecs&quot;: &quot;A String&quot;, # Period in seconds between consecutive syncs. Default: 15.
            },
            &quot;sourceFormat&quot;: &quot;A String&quot;, # Specifies whether the Config Sync Repo is in “hierarchical” or “unstructured” mode.
          },
          &quot;hierarchyController&quot;: { # Configuration for Hierarchy Controller # Hierarchy Controller configuration for the cluster.
            &quot;enableHierarchicalResourceQuota&quot;: True or False, # Whether hierarchical resource quota is enabled in this cluster.
            &quot;enablePodTreeLabels&quot;: True or False, # Whether pod tree labels are enabled in this cluster.
            &quot;enabled&quot;: True or False, # Whether Hierarchy Controller is enabled in this cluster.
          },
          &quot;policyController&quot;: { # Configuration for Policy Controller # Policy Controller configuration for the cluster.
            &quot;auditIntervalSeconds&quot;: &quot;A String&quot;, # Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether.
            &quot;enabled&quot;: True or False, # Enables the installation of Policy Controller. If false, the rest of PolicyController fields take no effect.
            &quot;exemptableNamespaces&quot;: [ # The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster.
              &quot;A String&quot;,
            ],
            &quot;logDeniesEnabled&quot;: True or False, # Logs all denies and dry run failures.
            &quot;referentialRulesEnabled&quot;: True or False, # Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated.
            &quot;templateLibraryInstalled&quot;: True or False, # Installs the default template library along with Policy Controller.
          },
          &quot;version&quot;: &quot;A String&quot;, # Version of ACM installed.
        },
        &quot;operatorState&quot;: { # State information for an ACM&#x27;s Operator # Current install status of ACM&#x27;s Operator
          &quot;deploymentState&quot;: &quot;A String&quot;, # The state of the Operator&#x27;s deployment
          &quot;errors&quot;: [ # Install errors.
            { # Errors pertaining to the installation of ACM
              &quot;errorMessage&quot;: &quot;A String&quot;, # A string representing the user facing error message
            },
          ],
          &quot;version&quot;: &quot;A String&quot;, # The semenatic version number of the operator
        },
        &quot;policyControllerState&quot;: { # State for PolicyControllerState. # PolicyController status
          &quot;deploymentState&quot;: { # State of Policy Controller installation. # The state about the policy controller installation.
            &quot;gatekeeperAudit&quot;: &quot;A String&quot;, # Status of gatekeeper-audit deployment.
            &quot;gatekeeperControllerManagerState&quot;: &quot;A String&quot;, # Status of gatekeeper-controller-manager pod.
          },
          &quot;version&quot;: { # The build version of Gatekeeper Policy Controller is using. # The version of Gatekeeper Policy Controller deployed.
            &quot;version&quot;: &quot;A String&quot;, # The gatekeeper image tag that is composed of ACM version, git tag, build number.
          },
        },
      },
      &quot;metering&quot;: { # **Metering**: Per-Membership Feature State. # Metering-specific spec.
        &quot;lastMeasurementTime&quot;: &quot;A String&quot;, # The time stamp of the most recent measurement of the number of vCPUs in the cluster.
        &quot;preciseLastMeasuredClusterVcpuCapacity&quot;: 3.14, # The vCPUs capacity in the cluster according to the most recent measurement (1/1000 precision).
      },
      &quot;state&quot;: { # FeatureState describes the high-level state of a Feature. It may be used to describe a Feature&#x27;s state at the environ-level, or per-membershop, depending on the context. # The high-level state of this Feature for a single membership.
        &quot;code&quot;: &quot;A String&quot;, # The high-level, machine-readable status of this Feature.
        &quot;description&quot;: &quot;A String&quot;, # A human-readable description of the current status.
        &quot;updateTime&quot;: &quot;A String&quot;, # The time this status and any related Feature-specific details were updated.
      },
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # Output only. The full, unique name of this Feature resource in the format `projects/*/locations/*/features/*`.
  &quot;resourceState&quot;: { # FeatureResourceState describes the state of a Feature *resource* in the GkeHub API. See `FeatureState` for the &quot;running state&quot; of the Feature in the Hub and across Memberships. # Output only. State of the Feature resource itself.
    &quot;state&quot;: &quot;A String&quot;, # The current state of the Feature resource in the Hub API.
  },
  &quot;spec&quot;: { # CommonFeatureSpec contains Hub-wide configuration information # Optional. Hub-wide Feature configuration. If this Feature does not support any Hub-wide configuration, this field may be unused.
    &quot;multiclusteringress&quot;: { # **Multi-cluster Ingress**: The configuration for the MultiClusterIngress feature. # Multicluster Ingress-specific spec.
      &quot;billing&quot;: &quot;A String&quot;, # Customer&#x27;s billing structure
      &quot;configMembership&quot;: &quot;A String&quot;, # Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: `projects/foo-proj/locations/global/memberships/bar`
    },
  },
  &quot;state&quot;: { # CommonFeatureState contains Hub-wide Feature status information. # Output only. The Hub-wide Feature state.
    &quot;state&quot;: { # FeatureState describes the high-level state of a Feature. It may be used to describe a Feature&#x27;s state at the environ-level, or per-membershop, depending on the context. # Output only. The &quot;running state&quot; of the Feature in this Hub.
      &quot;code&quot;: &quot;A String&quot;, # The high-level, machine-readable status of this Feature.
      &quot;description&quot;: &quot;A String&quot;, # A human-readable description of the current status.
      &quot;updateTime&quot;: &quot;A String&quot;, # The time this status and any related Feature-specific details were updated.
    },
  },
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. When the Feature resource was last updated.
}

  requestId: string, Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).
  updateMask: string, Mask of fields to update.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="setIamPolicy">setIamPolicy(resource, body=None, x__xgafv=None)</code>
  <pre>Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.

Args:
  resource: string, REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for `SetIamPolicy` method.
  &quot;policy&quot;: { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members` to a single `role`. Members can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } **YAML example:** bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) - etag: BwWWja0YfJA= - version: 3 For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/). # REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them.
    &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
      { # Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { &quot;audit_configs&quot;: [ { &quot;service&quot;: &quot;allServices&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; }, { &quot;log_type&quot;: &quot;ADMIN_READ&quot; } ] }, { &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot; }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot;, &quot;exempted_members&quot;: [ &quot;user:aliya@example.com&quot; ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.
        &quot;auditLogConfigs&quot;: [ # The configuration for logging of each type of permission.
          { # Provides the configuration for logging a type of permissions. Example: { &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; } ] } This enables &#x27;DATA_READ&#x27; and &#x27;DATA_WRITE&#x27; logging, while exempting jose@example.com from DATA_READ logging.
            &quot;exemptedMembers&quot;: [ # Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.
              &quot;A String&quot;,
            ],
            &quot;logType&quot;: &quot;A String&quot;, # The log type that this config enables.
          },
        ],
        &quot;service&quot;: &quot;A String&quot;, # Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.
      },
    ],
    &quot;bindings&quot;: [ # Associates a list of `members` to a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one member.
      { # Associates `members` with a `role`.
        &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the members in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
          &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
          &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
        },
        &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`.
          &quot;A String&quot;,
        ],
        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
      },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
    &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
  },
  &quot;updateMask&quot;: &quot;A String&quot;, # OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: &quot;bindings, etag&quot;`
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members` to a single `role`. Members can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } **YAML example:** bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) - etag: BwWWja0YfJA= - version: 3 For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).
  &quot;auditConfigs&quot;: [ # Specifies cloud audit logging configuration for this policy.
    { # Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { &quot;audit_configs&quot;: [ { &quot;service&quot;: &quot;allServices&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; }, { &quot;log_type&quot;: &quot;ADMIN_READ&quot; } ] }, { &quot;service&quot;: &quot;sampleservice.googleapis.com&quot;, &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot; }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot;, &quot;exempted_members&quot;: [ &quot;user:aliya@example.com&quot; ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts jose@example.com from DATA_READ logging, and aliya@example.com from DATA_WRITE logging.
      &quot;auditLogConfigs&quot;: [ # The configuration for logging of each type of permission.
        { # Provides the configuration for logging a type of permissions. Example: { &quot;audit_log_configs&quot;: [ { &quot;log_type&quot;: &quot;DATA_READ&quot;, &quot;exempted_members&quot;: [ &quot;user:jose@example.com&quot; ] }, { &quot;log_type&quot;: &quot;DATA_WRITE&quot; } ] } This enables &#x27;DATA_READ&#x27; and &#x27;DATA_WRITE&#x27; logging, while exempting jose@example.com from DATA_READ logging.
          &quot;exemptedMembers&quot;: [ # Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.
            &quot;A String&quot;,
          ],
          &quot;logType&quot;: &quot;A String&quot;, # The log type that this config enables.
        },
      ],
      &quot;service&quot;: &quot;A String&quot;, # Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.
    },
  ],
  &quot;bindings&quot;: [ # Associates a list of `members` to a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one member.
    { # Associates `members` with a `role`.
      &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the members in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
        &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
        &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
        &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
      },
      &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`.
        &quot;A String&quot;,
      ],
      &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.
  &quot;version&quot;: 42, # Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).
}</pre>
</div>

<div class="method">
    <code class="details" id="testIamPermissions">testIamPermissions(resource, body=None, x__xgafv=None)</code>
  <pre>Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may &quot;fail open&quot; without warning.

Args:
  resource: string, REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for `TestIamPermissions` method.
  &quot;permissions&quot;: [ # The set of permissions to check for the `resource`. Permissions with wildcards (such as &#x27;*&#x27; or &#x27;storage.*&#x27;) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
    &quot;A String&quot;,
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for `TestIamPermissions` method.
  &quot;permissions&quot;: [ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
    &quot;A String&quot;,
  ],
}</pre>
</div>

</body></html>