<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_v1.html">GKE Hub API</a> . <a href="gkehub_v1.projects.html">projects</a> . <a href="gkehub_v1.projects.locations.html">locations</a> . <a href="gkehub_v1.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;configSync&quot;: { # Configuration for Config Sync # Config Sync configuration for the cluster.
          &quot;enabled&quot;: True or False, # Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of git field.
          &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;appdevexperience&quot;: { # State for App Dev Exp Feature. # Appdevexperience specific state.
        &quot;networkingInstallSucceeded&quot;: { # Status specifies state for the subcomponent. # Status of subcomponent that detects configured Service Mesh resources.
          &quot;code&quot;: &quot;A String&quot;, # Code specifies AppDevExperienceFeature&#x27;s subcomponent ready state.
          &quot;description&quot;: &quot;A String&quot;, # Description is populated if Code is Failed, explaining why it has failed.
        },
      },
      &quot;configmanagement&quot;: { # **Anthos Config Management**: State for a single cluster. # Config Management-specific state.
        &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;admissionWebhook&quot;: &quot;A String&quot;, # Deployment state of admission-webhook
            &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;, # Deprecated: use last_sync_time instead. Timestamp of when ACM last successfully synced the repo The time format is specified in https://golang.org/pkg/time/#Time.String
            &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;admissionWebhook&quot;: &quot;A String&quot;, # Version of the deployed admission_webhook pod
            &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;configSync&quot;: { # Configuration for Config Sync # Config Sync configuration for the cluster.
            &quot;enabled&quot;: True or False, # Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of git field.
            &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;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;appdevexperience&quot;: { # Spec for App Dev Experience Feature. # Appdevexperience specific spec.
    },
    &quot;multiclusteringress&quot;: { # **Multi-cluster Ingress**: The configuration for the MultiClusterIngress feature. # Multicluster Ingress-specific spec.
      &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;appdevexperience&quot;: { # State for App Dev Exp Feature. # Appdevexperience specific state.
      &quot;networkingInstallSucceeded&quot;: { # Status specifies state for the subcomponent. # Status of subcomponent that detects configured Service Mesh resources.
        &quot;code&quot;: &quot;A String&quot;, # Code specifies AppDevExperienceFeature&#x27;s subcomponent ready state.
        &quot;description&quot;: &quot;A String&quot;, # Description is populated if Code is Failed, explaining why it has failed.
      },
    },
    &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;configSync&quot;: { # Configuration for Config Sync # Config Sync configuration for the cluster.
          &quot;enabled&quot;: True or False, # Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of git field.
          &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;appdevexperience&quot;: { # State for App Dev Exp Feature. # Appdevexperience specific state.
        &quot;networkingInstallSucceeded&quot;: { # Status specifies state for the subcomponent. # Status of subcomponent that detects configured Service Mesh resources.
          &quot;code&quot;: &quot;A String&quot;, # Code specifies AppDevExperienceFeature&#x27;s subcomponent ready state.
          &quot;description&quot;: &quot;A String&quot;, # Description is populated if Code is Failed, explaining why it has failed.
        },
      },
      &quot;configmanagement&quot;: { # **Anthos Config Management**: State for a single cluster. # Config Management-specific state.
        &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;admissionWebhook&quot;: &quot;A String&quot;, # Deployment state of admission-webhook
            &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;, # Deprecated: use last_sync_time instead. Timestamp of when ACM last successfully synced the repo The time format is specified in https://golang.org/pkg/time/#Time.String
            &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;admissionWebhook&quot;: &quot;A String&quot;, # Version of the deployed admission_webhook pod
            &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;configSync&quot;: { # Configuration for Config Sync # Config Sync configuration for the cluster.
            &quot;enabled&quot;: True or False, # Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of git field.
            &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;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;appdevexperience&quot;: { # Spec for App Dev Experience Feature. # Appdevexperience specific spec.
    },
    &quot;multiclusteringress&quot;: { # **Multi-cluster Ingress**: The configuration for the MultiClusterIngress feature. # Multicluster Ingress-specific spec.
      &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;appdevexperience&quot;: { # State for App Dev Exp Feature. # Appdevexperience specific state.
      &quot;networkingInstallSucceeded&quot;: { # Status specifies state for the subcomponent. # Status of subcomponent that detects configured Service Mesh resources.
        &quot;code&quot;: &quot;A String&quot;, # Code specifies AppDevExperienceFeature&#x27;s subcomponent ready state.
        &quot;description&quot;: &quot;A String&quot;, # Description is populated if Code is Failed, explaining why it has failed.
      },
    },
    &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`, or principals, to a single `role`. Principals 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`, or principals, with 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 principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.
    { # Associates `members`, or principals, 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 principals 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 principals 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 the list of `members`, or principals. 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;configSync&quot;: { # Configuration for Config Sync # Config Sync configuration for the cluster.
              &quot;enabled&quot;: True or False, # Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of git field.
              &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;appdevexperience&quot;: { # State for App Dev Exp Feature. # Appdevexperience specific state.
            &quot;networkingInstallSucceeded&quot;: { # Status specifies state for the subcomponent. # Status of subcomponent that detects configured Service Mesh resources.
              &quot;code&quot;: &quot;A String&quot;, # Code specifies AppDevExperienceFeature&#x27;s subcomponent ready state.
              &quot;description&quot;: &quot;A String&quot;, # Description is populated if Code is Failed, explaining why it has failed.
            },
          },
          &quot;configmanagement&quot;: { # **Anthos Config Management**: State for a single cluster. # Config Management-specific state.
            &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;admissionWebhook&quot;: &quot;A String&quot;, # Deployment state of admission-webhook
                &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;, # Deprecated: use last_sync_time instead. Timestamp of when ACM last successfully synced the repo The time format is specified in https://golang.org/pkg/time/#Time.String
                &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;admissionWebhook&quot;: &quot;A String&quot;, # Version of the deployed admission_webhook pod
                &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;configSync&quot;: { # Configuration for Config Sync # Config Sync configuration for the cluster.
                &quot;enabled&quot;: True or False, # Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of git field.
                &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;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;appdevexperience&quot;: { # Spec for App Dev Experience Feature. # Appdevexperience specific spec.
        },
        &quot;multiclusteringress&quot;: { # **Multi-cluster Ingress**: The configuration for the MultiClusterIngress feature. # Multicluster Ingress-specific spec.
          &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;appdevexperience&quot;: { # State for App Dev Exp Feature. # Appdevexperience specific state.
          &quot;networkingInstallSucceeded&quot;: { # Status specifies state for the subcomponent. # Status of subcomponent that detects configured Service Mesh resources.
            &quot;code&quot;: &quot;A String&quot;, # Code specifies AppDevExperienceFeature&#x27;s subcomponent ready state.
            &quot;description&quot;: &quot;A String&quot;, # Description is populated if Code is Failed, explaining why it has failed.
          },
        },
        &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;configSync&quot;: { # Configuration for Config Sync # Config Sync configuration for the cluster.
          &quot;enabled&quot;: True or False, # Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of git field.
          &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;appdevexperience&quot;: { # State for App Dev Exp Feature. # Appdevexperience specific state.
        &quot;networkingInstallSucceeded&quot;: { # Status specifies state for the subcomponent. # Status of subcomponent that detects configured Service Mesh resources.
          &quot;code&quot;: &quot;A String&quot;, # Code specifies AppDevExperienceFeature&#x27;s subcomponent ready state.
          &quot;description&quot;: &quot;A String&quot;, # Description is populated if Code is Failed, explaining why it has failed.
        },
      },
      &quot;configmanagement&quot;: { # **Anthos Config Management**: State for a single cluster. # Config Management-specific state.
        &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;admissionWebhook&quot;: &quot;A String&quot;, # Deployment state of admission-webhook
            &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;, # Deprecated: use last_sync_time instead. Timestamp of when ACM last successfully synced the repo The time format is specified in https://golang.org/pkg/time/#Time.String
            &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;admissionWebhook&quot;: &quot;A String&quot;, # Version of the deployed admission_webhook pod
            &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;configSync&quot;: { # Configuration for Config Sync # Config Sync configuration for the cluster.
            &quot;enabled&quot;: True or False, # Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of git field.
            &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;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;appdevexperience&quot;: { # Spec for App Dev Experience Feature. # Appdevexperience specific spec.
    },
    &quot;multiclusteringress&quot;: { # **Multi-cluster Ingress**: The configuration for the MultiClusterIngress feature. # Multicluster Ingress-specific spec.
      &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;appdevexperience&quot;: { # State for App Dev Exp Feature. # Appdevexperience specific state.
      &quot;networkingInstallSucceeded&quot;: { # Status specifies state for the subcomponent. # Status of subcomponent that detects configured Service Mesh resources.
        &quot;code&quot;: &quot;A String&quot;, # Code specifies AppDevExperienceFeature&#x27;s subcomponent ready state.
        &quot;description&quot;: &quot;A String&quot;, # Description is populated if Code is Failed, explaining why it has failed.
      },
    },
    &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`, or principals, to a single `role`. Principals 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`, or principals, with 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 principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.
      { # Associates `members`, or principals, 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 principals 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 principals 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 the list of `members`, or principals. 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`, or principals, to a single `role`. Principals 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`, or principals, with 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 principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.
    { # Associates `members`, or principals, 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 principals 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 principals 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 the list of `members`, or principals. 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>