etag property
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.
Implementation
core.String? etag;