<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_v1.html">Cloud DNS API</a> . <a href="dns_v1.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;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;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;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;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;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;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;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;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>