<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="dns_v1beta2.html">Cloud DNS API</a> . <a href="dns_v1beta2.policies.html">policies</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(project, body=None, clientOperationId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new Policy.</p>
<p class="toc_element">
  <code><a href="#delete">delete(project, policy, clientOperationId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a previously created Policy. Fails if the policy is still being referenced by a network.</p>
<p class="toc_element">
  <code><a href="#get">get(project, policy, clientOperationId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Fetches the representation of an existing Policy.</p>
<p class="toc_element">
  <code><a href="#list">list(project, maxResults=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Enumerates all Policies associated with a project.</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(project, policy, body=None, clientOperationId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Applies a partial update to an existing Policy.</p>
<p class="toc_element">
  <code><a href="#update">update(project, policy, body=None, clientOperationId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates an existing Policy.</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(project, body=None, clientOperationId=None, x__xgafv=None)</code>
  <pre>Creates a new Policy.

Args:
  project: string, Identifies the project addressed by this request. (required)
  body: object, The request body.
    The object takes the form of:

{ # A policy is a collection of DNS rules applied to one or more Virtual Private Cloud resources.
  &quot;alternativeNameServerConfig&quot;: { # Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified.
    &quot;kind&quot;: &quot;dns#policyAlternativeNameServerConfig&quot;,
    &quot;targetNameServers&quot;: [ # Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified.
      {
        &quot;forwardingPath&quot;: &quot;A String&quot;, # Forwarding path for this TargetNameServer. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target.
        &quot;ipv4Address&quot;: &quot;A String&quot;, # IPv4 address to forward to.
        &quot;ipv6Address&quot;: &quot;A String&quot;, # IPv6 address to forward to. Does not accept both fields (ipv4 &amp; ipv6) being populated.
        &quot;kind&quot;: &quot;dns#policyAlternativeNameServerConfigTargetNameServer&quot;,
      },
    ],
  },
  &quot;description&quot;: &quot;A String&quot;, # A mutable string of at most 1024 characters associated with this resource for the user&#x27;s convenience. Has no effect on the policy&#x27;s function.
  &quot;enableInboundForwarding&quot;: True or False, # Allows networks bound to this policy to receive DNS queries sent by VMs or applications over VPN connections. When enabled, a virtual IP address is allocated from each of the subnetworks that are bound to this policy.
  &quot;enableLogging&quot;: True or False, # Controls whether logging is enabled for the networks bound to this policy. Defaults to no logging if not set.
  &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only).
  &quot;kind&quot;: &quot;dns#policy&quot;,
  &quot;name&quot;: &quot;A String&quot;, # User-assigned name for this policy.
  &quot;networks&quot;: [ # List of network names specifying networks to which this policy is applied.
    {
      &quot;kind&quot;: &quot;dns#policyNetwork&quot;,
      &quot;networkUrl&quot;: &quot;A String&quot;, # The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
    },
  ],
}

  clientOperationId: string, For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A policy is a collection of DNS rules applied to one or more Virtual Private Cloud resources.
  &quot;alternativeNameServerConfig&quot;: { # Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified.
    &quot;kind&quot;: &quot;dns#policyAlternativeNameServerConfig&quot;,
    &quot;targetNameServers&quot;: [ # Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified.
      {
        &quot;forwardingPath&quot;: &quot;A String&quot;, # Forwarding path for this TargetNameServer. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target.
        &quot;ipv4Address&quot;: &quot;A String&quot;, # IPv4 address to forward to.
        &quot;ipv6Address&quot;: &quot;A String&quot;, # IPv6 address to forward to. Does not accept both fields (ipv4 &amp; ipv6) being populated.
        &quot;kind&quot;: &quot;dns#policyAlternativeNameServerConfigTargetNameServer&quot;,
      },
    ],
  },
  &quot;description&quot;: &quot;A String&quot;, # A mutable string of at most 1024 characters associated with this resource for the user&#x27;s convenience. Has no effect on the policy&#x27;s function.
  &quot;enableInboundForwarding&quot;: True or False, # Allows networks bound to this policy to receive DNS queries sent by VMs or applications over VPN connections. When enabled, a virtual IP address is allocated from each of the subnetworks that are bound to this policy.
  &quot;enableLogging&quot;: True or False, # Controls whether logging is enabled for the networks bound to this policy. Defaults to no logging if not set.
  &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only).
  &quot;kind&quot;: &quot;dns#policy&quot;,
  &quot;name&quot;: &quot;A String&quot;, # User-assigned name for this policy.
  &quot;networks&quot;: [ # List of network names specifying networks to which this policy is applied.
    {
      &quot;kind&quot;: &quot;dns#policyNetwork&quot;,
      &quot;networkUrl&quot;: &quot;A String&quot;, # The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(project, policy, clientOperationId=None, x__xgafv=None)</code>
  <pre>Deletes a previously created Policy. Fails if the policy is still being referenced by a network.

Args:
  project: string, Identifies the project addressed by this request. (required)
  policy: string, User given friendly name of the policy addressed by this request. (required)
  clientOperationId: string, For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(project, policy, clientOperationId=None, x__xgafv=None)</code>
  <pre>Fetches the representation of an existing Policy.

Args:
  project: string, Identifies the project addressed by this request. (required)
  policy: string, User given friendly name of the policy addressed by this request. (required)
  clientOperationId: string, For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A policy is a collection of DNS rules applied to one or more Virtual Private Cloud resources.
  &quot;alternativeNameServerConfig&quot;: { # Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified.
    &quot;kind&quot;: &quot;dns#policyAlternativeNameServerConfig&quot;,
    &quot;targetNameServers&quot;: [ # Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified.
      {
        &quot;forwardingPath&quot;: &quot;A String&quot;, # Forwarding path for this TargetNameServer. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target.
        &quot;ipv4Address&quot;: &quot;A String&quot;, # IPv4 address to forward to.
        &quot;ipv6Address&quot;: &quot;A String&quot;, # IPv6 address to forward to. Does not accept both fields (ipv4 &amp; ipv6) being populated.
        &quot;kind&quot;: &quot;dns#policyAlternativeNameServerConfigTargetNameServer&quot;,
      },
    ],
  },
  &quot;description&quot;: &quot;A String&quot;, # A mutable string of at most 1024 characters associated with this resource for the user&#x27;s convenience. Has no effect on the policy&#x27;s function.
  &quot;enableInboundForwarding&quot;: True or False, # Allows networks bound to this policy to receive DNS queries sent by VMs or applications over VPN connections. When enabled, a virtual IP address is allocated from each of the subnetworks that are bound to this policy.
  &quot;enableLogging&quot;: True or False, # Controls whether logging is enabled for the networks bound to this policy. Defaults to no logging if not set.
  &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only).
  &quot;kind&quot;: &quot;dns#policy&quot;,
  &quot;name&quot;: &quot;A String&quot;, # User-assigned name for this policy.
  &quot;networks&quot;: [ # List of network names specifying networks to which this policy is applied.
    {
      &quot;kind&quot;: &quot;dns#policyNetwork&quot;,
      &quot;networkUrl&quot;: &quot;A String&quot;, # The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(project, maxResults=None, pageToken=None, x__xgafv=None)</code>
  <pre>Enumerates all Policies associated with a project.

Args:
  project: string, Identifies the project addressed by this request. (required)
  maxResults: integer, Optional. Maximum number of results to be returned. If unspecified, the server decides how many results to return.
  pageToken: string, Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;header&quot;: { # Elements common to every response.
    &quot;operationId&quot;: &quot;A String&quot;, # For mutating operation requests that completed successfully. This is the client_operation_id if the client specified it, otherwise it is generated by the server (output only).
  },
  &quot;kind&quot;: &quot;dns#policiesListResponse&quot;, # Type of resource.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The presence of this field indicates that there exist more results following your last page of results in pagination order. To fetch them, make another list request using this value as your page token. This lets you the complete contents of even very large collections one page at a time. However, if the contents of the collection change between the first and last paginated list request, the set of all elements returned are an inconsistent view of the collection. You cannot retrieve a consistent snapshot of a collection larger than the maximum page size.
  &quot;policies&quot;: [ # The policy resources.
    { # A policy is a collection of DNS rules applied to one or more Virtual Private Cloud resources.
      &quot;alternativeNameServerConfig&quot;: { # Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified.
        &quot;kind&quot;: &quot;dns#policyAlternativeNameServerConfig&quot;,
        &quot;targetNameServers&quot;: [ # Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified.
          {
            &quot;forwardingPath&quot;: &quot;A String&quot;, # Forwarding path for this TargetNameServer. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target.
            &quot;ipv4Address&quot;: &quot;A String&quot;, # IPv4 address to forward to.
            &quot;ipv6Address&quot;: &quot;A String&quot;, # IPv6 address to forward to. Does not accept both fields (ipv4 &amp; ipv6) being populated.
            &quot;kind&quot;: &quot;dns#policyAlternativeNameServerConfigTargetNameServer&quot;,
          },
        ],
      },
      &quot;description&quot;: &quot;A String&quot;, # A mutable string of at most 1024 characters associated with this resource for the user&#x27;s convenience. Has no effect on the policy&#x27;s function.
      &quot;enableInboundForwarding&quot;: True or False, # Allows networks bound to this policy to receive DNS queries sent by VMs or applications over VPN connections. When enabled, a virtual IP address is allocated from each of the subnetworks that are bound to this policy.
      &quot;enableLogging&quot;: True or False, # Controls whether logging is enabled for the networks bound to this policy. Defaults to no logging if not set.
      &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only).
      &quot;kind&quot;: &quot;dns#policy&quot;,
      &quot;name&quot;: &quot;A String&quot;, # User-assigned name for this policy.
      &quot;networks&quot;: [ # List of network names specifying networks to which this policy is applied.
        {
          &quot;kind&quot;: &quot;dns#policyNetwork&quot;,
          &quot;networkUrl&quot;: &quot;A String&quot;, # The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
        },
      ],
    },
  ],
}</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(project, policy, body=None, clientOperationId=None, x__xgafv=None)</code>
  <pre>Applies a partial update to an existing Policy.

Args:
  project: string, Identifies the project addressed by this request. (required)
  policy: string, User given friendly name of the policy addressed by this request. (required)
  body: object, The request body.
    The object takes the form of:

{ # A policy is a collection of DNS rules applied to one or more Virtual Private Cloud resources.
  &quot;alternativeNameServerConfig&quot;: { # Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified.
    &quot;kind&quot;: &quot;dns#policyAlternativeNameServerConfig&quot;,
    &quot;targetNameServers&quot;: [ # Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified.
      {
        &quot;forwardingPath&quot;: &quot;A String&quot;, # Forwarding path for this TargetNameServer. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target.
        &quot;ipv4Address&quot;: &quot;A String&quot;, # IPv4 address to forward to.
        &quot;ipv6Address&quot;: &quot;A String&quot;, # IPv6 address to forward to. Does not accept both fields (ipv4 &amp; ipv6) being populated.
        &quot;kind&quot;: &quot;dns#policyAlternativeNameServerConfigTargetNameServer&quot;,
      },
    ],
  },
  &quot;description&quot;: &quot;A String&quot;, # A mutable string of at most 1024 characters associated with this resource for the user&#x27;s convenience. Has no effect on the policy&#x27;s function.
  &quot;enableInboundForwarding&quot;: True or False, # Allows networks bound to this policy to receive DNS queries sent by VMs or applications over VPN connections. When enabled, a virtual IP address is allocated from each of the subnetworks that are bound to this policy.
  &quot;enableLogging&quot;: True or False, # Controls whether logging is enabled for the networks bound to this policy. Defaults to no logging if not set.
  &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only).
  &quot;kind&quot;: &quot;dns#policy&quot;,
  &quot;name&quot;: &quot;A String&quot;, # User-assigned name for this policy.
  &quot;networks&quot;: [ # List of network names specifying networks to which this policy is applied.
    {
      &quot;kind&quot;: &quot;dns#policyNetwork&quot;,
      &quot;networkUrl&quot;: &quot;A String&quot;, # The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
    },
  ],
}

  clientOperationId: string, For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;header&quot;: { # Elements common to every response.
    &quot;operationId&quot;: &quot;A String&quot;, # For mutating operation requests that completed successfully. This is the client_operation_id if the client specified it, otherwise it is generated by the server (output only).
  },
  &quot;policy&quot;: { # A policy is a collection of DNS rules applied to one or more Virtual Private Cloud resources.
    &quot;alternativeNameServerConfig&quot;: { # Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified.
      &quot;kind&quot;: &quot;dns#policyAlternativeNameServerConfig&quot;,
      &quot;targetNameServers&quot;: [ # Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified.
        {
          &quot;forwardingPath&quot;: &quot;A String&quot;, # Forwarding path for this TargetNameServer. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target.
          &quot;ipv4Address&quot;: &quot;A String&quot;, # IPv4 address to forward to.
          &quot;ipv6Address&quot;: &quot;A String&quot;, # IPv6 address to forward to. Does not accept both fields (ipv4 &amp; ipv6) being populated.
          &quot;kind&quot;: &quot;dns#policyAlternativeNameServerConfigTargetNameServer&quot;,
        },
      ],
    },
    &quot;description&quot;: &quot;A String&quot;, # A mutable string of at most 1024 characters associated with this resource for the user&#x27;s convenience. Has no effect on the policy&#x27;s function.
    &quot;enableInboundForwarding&quot;: True or False, # Allows networks bound to this policy to receive DNS queries sent by VMs or applications over VPN connections. When enabled, a virtual IP address is allocated from each of the subnetworks that are bound to this policy.
    &quot;enableLogging&quot;: True or False, # Controls whether logging is enabled for the networks bound to this policy. Defaults to no logging if not set.
    &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only).
    &quot;kind&quot;: &quot;dns#policy&quot;,
    &quot;name&quot;: &quot;A String&quot;, # User-assigned name for this policy.
    &quot;networks&quot;: [ # List of network names specifying networks to which this policy is applied.
      {
        &quot;kind&quot;: &quot;dns#policyNetwork&quot;,
        &quot;networkUrl&quot;: &quot;A String&quot;, # The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
      },
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(project, policy, body=None, clientOperationId=None, x__xgafv=None)</code>
  <pre>Updates an existing Policy.

Args:
  project: string, Identifies the project addressed by this request. (required)
  policy: string, User given friendly name of the policy addressed by this request. (required)
  body: object, The request body.
    The object takes the form of:

{ # A policy is a collection of DNS rules applied to one or more Virtual Private Cloud resources.
  &quot;alternativeNameServerConfig&quot;: { # Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified.
    &quot;kind&quot;: &quot;dns#policyAlternativeNameServerConfig&quot;,
    &quot;targetNameServers&quot;: [ # Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified.
      {
        &quot;forwardingPath&quot;: &quot;A String&quot;, # Forwarding path for this TargetNameServer. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target.
        &quot;ipv4Address&quot;: &quot;A String&quot;, # IPv4 address to forward to.
        &quot;ipv6Address&quot;: &quot;A String&quot;, # IPv6 address to forward to. Does not accept both fields (ipv4 &amp; ipv6) being populated.
        &quot;kind&quot;: &quot;dns#policyAlternativeNameServerConfigTargetNameServer&quot;,
      },
    ],
  },
  &quot;description&quot;: &quot;A String&quot;, # A mutable string of at most 1024 characters associated with this resource for the user&#x27;s convenience. Has no effect on the policy&#x27;s function.
  &quot;enableInboundForwarding&quot;: True or False, # Allows networks bound to this policy to receive DNS queries sent by VMs or applications over VPN connections. When enabled, a virtual IP address is allocated from each of the subnetworks that are bound to this policy.
  &quot;enableLogging&quot;: True or False, # Controls whether logging is enabled for the networks bound to this policy. Defaults to no logging if not set.
  &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only).
  &quot;kind&quot;: &quot;dns#policy&quot;,
  &quot;name&quot;: &quot;A String&quot;, # User-assigned name for this policy.
  &quot;networks&quot;: [ # List of network names specifying networks to which this policy is applied.
    {
      &quot;kind&quot;: &quot;dns#policyNetwork&quot;,
      &quot;networkUrl&quot;: &quot;A String&quot;, # The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
    },
  ],
}

  clientOperationId: string, For mutating operation requests only. An optional identifier specified by the client. Must be unique for operation resources in the Operations collection.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;header&quot;: { # Elements common to every response.
    &quot;operationId&quot;: &quot;A String&quot;, # For mutating operation requests that completed successfully. This is the client_operation_id if the client specified it, otherwise it is generated by the server (output only).
  },
  &quot;policy&quot;: { # A policy is a collection of DNS rules applied to one or more Virtual Private Cloud resources.
    &quot;alternativeNameServerConfig&quot;: { # Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified.
      &quot;kind&quot;: &quot;dns#policyAlternativeNameServerConfig&quot;,
      &quot;targetNameServers&quot;: [ # Sets an alternative name server for the associated networks. When specified, all DNS queries are forwarded to a name server that you choose. Names such as .internal are not available when an alternative name server is specified.
        {
          &quot;forwardingPath&quot;: &quot;A String&quot;, # Forwarding path for this TargetNameServer. If unset or set to DEFAULT, Cloud DNS makes forwarding decisions based on address ranges; that is, RFC1918 addresses go to the VPC network, non-RFC1918 addresses go to the internet. When set to PRIVATE, Cloud DNS always sends queries through the VPC network for this target.
          &quot;ipv4Address&quot;: &quot;A String&quot;, # IPv4 address to forward to.
          &quot;ipv6Address&quot;: &quot;A String&quot;, # IPv6 address to forward to. Does not accept both fields (ipv4 &amp; ipv6) being populated.
          &quot;kind&quot;: &quot;dns#policyAlternativeNameServerConfigTargetNameServer&quot;,
        },
      ],
    },
    &quot;description&quot;: &quot;A String&quot;, # A mutable string of at most 1024 characters associated with this resource for the user&#x27;s convenience. Has no effect on the policy&#x27;s function.
    &quot;enableInboundForwarding&quot;: True or False, # Allows networks bound to this policy to receive DNS queries sent by VMs or applications over VPN connections. When enabled, a virtual IP address is allocated from each of the subnetworks that are bound to this policy.
    &quot;enableLogging&quot;: True or False, # Controls whether logging is enabled for the networks bound to this policy. Defaults to no logging if not set.
    &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only).
    &quot;kind&quot;: &quot;dns#policy&quot;,
    &quot;name&quot;: &quot;A String&quot;, # User-assigned name for this policy.
    &quot;networks&quot;: [ # List of network names specifying networks to which this policy is applied.
      {
        &quot;kind&quot;: &quot;dns#policyNetwork&quot;,
        &quot;networkUrl&quot;: &quot;A String&quot;, # The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
      },
    ],
  },
}</pre>
</div>

</body></html>