Etags are 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. If no etag is provided in the call to
setIamPolicy, then the existing policy is overwritten blindly.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-15 UTC."],[],[],null,["# Class Policy.Builder (2.59.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.59.0 (latest)](/java/docs/reference/google-cloud-core/latest/com.google.cloud.Policy.Builder)\n- [2.58.2](/java/docs/reference/google-cloud-core/2.58.2/com.google.cloud.Policy.Builder)\n- [2.57.0](/java/docs/reference/google-cloud-core/2.57.0/com.google.cloud.Policy.Builder)\n- [2.56.0](/java/docs/reference/google-cloud-core/2.56.0/com.google.cloud.Policy.Builder)\n- [2.55.0](/java/docs/reference/google-cloud-core/2.55.0/com.google.cloud.Policy.Builder)\n- [2.53.1](/java/docs/reference/google-cloud-core/2.53.1/com.google.cloud.Policy.Builder)\n- [2.52.0](/java/docs/reference/google-cloud-core/2.52.0/com.google.cloud.Policy.Builder)\n- [2.51.0](/java/docs/reference/google-cloud-core/2.51.0/com.google.cloud.Policy.Builder)\n- [2.50.0](/java/docs/reference/google-cloud-core/2.50.0/com.google.cloud.Policy.Builder)\n- [2.49.1](/java/docs/reference/google-cloud-core/2.49.1/com.google.cloud.Policy.Builder)\n- [2.48.0](/java/docs/reference/google-cloud-core/2.48.0/com.google.cloud.Policy.Builder)\n- [2.47.0](/java/docs/reference/google-cloud-core/2.47.0/com.google.cloud.Policy.Builder)\n- [2.45.0](/java/docs/reference/google-cloud-core/2.45.0/com.google.cloud.Policy.Builder)\n- [2.44.1](/java/docs/reference/google-cloud-core/2.44.1/com.google.cloud.Policy.Builder)\n- [2.43.0](/java/docs/reference/google-cloud-core/2.43.0/com.google.cloud.Policy.Builder)\n- [2.42.0](/java/docs/reference/google-cloud-core/2.42.0/com.google.cloud.Policy.Builder)\n- [2.41.0](/java/docs/reference/google-cloud-core/2.41.0/com.google.cloud.Policy.Builder)\n- [2.40.0](/java/docs/reference/google-cloud-core/2.40.0/com.google.cloud.Policy.Builder)\n- [2.39.0](/java/docs/reference/google-cloud-core/2.39.0/com.google.cloud.Policy.Builder)\n- [2.38.1](/java/docs/reference/google-cloud-core/2.38.1/com.google.cloud.Policy.Builder)\n- [2.37.0](/java/docs/reference/google-cloud-core/2.37.0/com.google.cloud.Policy.Builder)\n- [2.36.1](/java/docs/reference/google-cloud-core/2.36.1/com.google.cloud.Policy.Builder)\n- [2.35.0](/java/docs/reference/google-cloud-core/2.35.0/com.google.cloud.Policy.Builder)\n- [2.33.0](/java/docs/reference/google-cloud-core/2.33.0/com.google.cloud.Policy.Builder)\n- [2.32.0](/java/docs/reference/google-cloud-core/2.32.0/com.google.cloud.Policy.Builder)\n- [2.31.0](/java/docs/reference/google-cloud-core/2.31.0/com.google.cloud.Policy.Builder)\n- [2.29.0](/java/docs/reference/google-cloud-core/2.29.0/com.google.cloud.Policy.Builder)\n- [2.28.0](/java/docs/reference/google-cloud-core/2.28.0/com.google.cloud.Policy.Builder)\n- [2.27.0](/java/docs/reference/google-cloud-core/2.27.0/com.google.cloud.Policy.Builder)\n- [2.26.0](/java/docs/reference/google-cloud-core/2.26.0/com.google.cloud.Policy.Builder)\n- [2.25.0](/java/docs/reference/google-cloud-core/2.25.0/com.google.cloud.Policy.Builder)\n- [2.24.1](/java/docs/reference/google-cloud-core/2.24.1/com.google.cloud.Policy.Builder)\n- [2.23.0](/java/docs/reference/google-cloud-core/2.23.0/com.google.cloud.Policy.Builder)\n- [2.22.1](/java/docs/reference/google-cloud-core/2.22.1/com.google.cloud.Policy.Builder)\n- [2.21.1](/java/docs/reference/google-cloud-core/2.21.1/com.google.cloud.Policy.Builder)\n- [2.20.1](/java/docs/reference/google-cloud-core/2.20.1/com.google.cloud.Policy.Builder)\n- [2.13.0](/java/docs/reference/google-cloud-core/2.13.0/com.google.cloud.Policy.Builder)\n- [2.12.0](/java/docs/reference/google-cloud-core/2.12.0/com.google.cloud.Policy.Builder)\n- [2.11.0](/java/docs/reference/google-cloud-core/2.11.0/com.google.cloud.Policy.Builder)\n- [2.9.4](/java/docs/reference/google-cloud-core/2.9.4/com.google.cloud.Policy.Builder)\n- [2.8.27](/java/docs/reference/google-cloud-core/2.8.27/com.google.cloud.Policy.Builder)\n- [2.7.1](/java/docs/reference/google-cloud-core/2.7.1/com.google.cloud.Policy.Builder)\n- [2.6.1](/java/docs/reference/google-cloud-core/2.6.1/com.google.cloud.Policy.Builder)\n- [2.5.11](/java/docs/reference/google-cloud-core/2.5.11/com.google.cloud.Policy.Builder)\n- [2.4.0](/java/docs/reference/google-cloud-core/2.4.0/com.google.cloud.Policy.Builder)\n- [2.3.5](/java/docs/reference/google-cloud-core/2.3.5/com.google.cloud.Policy.Builder) \n\n public static class Policy.Builder\n\nA builder for `Policy` objects. \n\nInheritance\n-----------\n\n[java.lang.Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html) \\\u003e Policy.Builder \n\nInherited Members\n-----------------\n\n[Object.clone()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#clone--) \n[Object.equals(Object)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-) \n[Object.finalize()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#finalize--) \n[Object.getClass()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--) \n[Object.hashCode()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--) \n[Object.notify()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--) \n[Object.notifyAll()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--) \n[Object.toString()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--) \n[Object.wait()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--) \n[Object.wait(long)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-) \n[Object.wait(long,int)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-)\n\nConstructors\n------------\n\n### Builder()\n\n protected Builder()\n\n| **Internal Only**: This feature is not stable for application use.\n|\n| *This class should only be extended within google-cloud-java*\n\n### Builder(Policy policy)\n\n protected Builder(Policy policy)\n\n| **Internal Only**: This feature is not stable for application use.\n|\n| *This class should only be extended within google-cloud-java*\n\nMethods\n-------\n\n### addIdentity(Role role, Identity first, Identity\\[\\] others)\n\n public final Policy.Builder addIdentity(Role role, Identity first, Identity[] others)\n\nAdds one or more identities to the policy under the role specified.\n\n### build()\n\n public final Policy build()\n\nCreates a `Policy` object.\n\n### removeIdentity(Role role, Identity first, Identity\\[\\] others)\n\n public final Policy.Builder removeIdentity(Role role, Identity first, Identity[] others)\n\nRemoves one or more identities from an existing binding. Does nothing if the binding\nassociated with the provided role doesn't exist.\n\n### removeRole(Role role)\n\n public final Policy.Builder removeRole(Role role)\n\nRemoves the role (and all identities associated with that role) from the policy.\n\n### setBindings(List\\\u003cBinding\\\u003e bindings)\n\n public final Policy.Builder setBindings(List\u003cBinding\u003e bindings)\n\nReplaces the builder's List of bindings with the given List of Bindings.\n\n### setBindings(Map\\\u003cRole,Set\\\u003cIdentity\\\u003e\\\u003e bindings)\n\n public final Policy.Builder setBindings(Map\u003cRole,Set\u003cIdentity\u003e\u003e bindings)\n\nReplaces the builder's map of bindings with the given map of bindings.\n\n### setEtag(String etag)\n\n public final Policy.Builder setEtag(String etag)\n\nSets the policy's etag.\n\nEtags are used for optimistic concurrency control as a way to help prevent simultaneous\nupdates of a policy from overwriting each other. It is strongly suggested that systems make\nuse of the etag in the read-modify-write cycle to perform policy updates in order to avoid\nrace conditions. An etag is returned in the response to getIamPolicy, and systems are\nexpected to put that etag in the request to setIamPolicy to ensure that their change will be\napplied to the same version of the policy. If no etag is provided in the call to\nsetIamPolicy, then the existing policy is overwritten blindly.\n\n### setVersion(int version)\n\n public final Policy.Builder setVersion(int version)\n\nSets the version of the policy."]]