<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.managedZoneOperations.html">managedZoneOperations</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="#get">get(project, managedZone, operation, clientOperationId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Fetch the representation of an existing Operation.</p>
<p class="toc_element">
  <code><a href="#list">list(project, managedZone, maxResults=None, pageToken=None, sortBy=None, x__xgafv=None)</a></code></p>
<p class="firstline">Enumerate Operations for the given ManagedZone.</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>
<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="get">get(project, managedZone, operation, clientOperationId=None, x__xgafv=None)</code>
  <pre>Fetch the representation of an existing Operation.

Args:
  project: string, Identifies the project addressed by this request. (required)
  managedZone: string, Identifies the managed zone addressed by this request. (required)
  operation: string, Identifies the operation 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:

    { # An operation represents a successful mutation performed on a Cloud DNS resource. Operations provide: - An audit log of server resource mutations. - A way to recover/retry API calls in the case where the response is never received by the caller. Use the caller specified client_operation_id.
    &quot;zoneContext&quot;: { # Only populated if the operation targeted a ManagedZone (output only).
      &quot;newValue&quot;: { # A zone is a subtree of the DNS namespace under one administrative responsibility. A ManagedZone is a resource that represents a DNS zone hosted by the Cloud DNS service. # The post-operation ManagedZone resource.
        &quot;forwardingConfig&quot;: { # The presence for this field indicates that outbound forwarding is enabled for this zone. The value of this field contains the set of destinations to forward to.
          &quot;kind&quot;: &quot;dns#managedZoneForwardingConfig&quot;,
          &quot;targetNameServers&quot;: [ # List of target name servers to forward to. Cloud DNS will select the best available name server if more than one target is given.
            {
              &quot;kind&quot;: &quot;dns#managedZoneForwardingConfigNameServerTarget&quot;,
              &quot;ipv4Address&quot;: &quot;A String&quot;, # IPv4 address of a target name server.
              &quot;forwardingPath&quot;: &quot;A String&quot;, # Forwarding path for this NameServerTarget. If unset or set to DEFAULT, Cloud DNS will make forwarding decision based on address ranges, i.e. RFC1918 addresses go to the VPC, non-RFC1918 addresses go to the Internet. When set to PRIVATE, Cloud DNS will always send queries through VPC for this target.
            },
          ],
        },
        &quot;peeringConfig&quot;: { # The presence of this field indicates that DNS Peering is enabled for this zone. The value of this field contains the network to peer with.
          &quot;targetNetwork&quot;: { # The network with which to peer.
            &quot;deactivateTime&quot;: &quot;A String&quot;, # The time at which the zone was deactivated, in RFC 3339 date-time format. An empty string indicates that the peering connection is active. The producer network can deactivate a zone. The zone is automatically deactivated if the producer network that the zone targeted is deleted. Output only.
            &quot;networkUrl&quot;: &quot;A String&quot;, # The fully qualified URL of the VPC network to forward queries to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
            &quot;kind&quot;: &quot;dns#managedZonePeeringConfigTargetNetwork&quot;,
          },
          &quot;kind&quot;: &quot;dns#managedZonePeeringConfig&quot;,
        },
        &quot;nameServerSet&quot;: &quot;A String&quot;, # Optionally specifies the NameServerSet for this ManagedZone. A NameServerSet is a set of DNS name servers that all host the same ManagedZones. Most users will leave this field unset.
        &quot;reverseLookupConfig&quot;: { # The presence of this field indicates that this is a managed reverse lookup zone and Cloud DNS will resolve reverse lookup queries using automatically configured records for VPC resources. This only applies to networks listed under private_visibility_config.
          &quot;kind&quot;: &quot;dns#managedZoneReverseLookupConfig&quot;,
        },
        &quot;labels&quot;: { # User labels.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;dnsName&quot;: &quot;A String&quot;, # The DNS name of this managed zone, for instance &quot;example.com.&quot;.
        &quot;visibility&quot;: &quot;A String&quot;, # The zone&#x27;s visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources.
        &quot;dnssecConfig&quot;: { # DNSSEC configuration.
          &quot;state&quot;: &quot;A String&quot;, # Specifies whether DNSSEC is enabled, and what mode it is in.
          &quot;nonExistence&quot;: &quot;A String&quot;, # Specifies the mechanism for authenticated denial-of-existence responses. Can only be changed while the state is OFF.
          &quot;kind&quot;: &quot;dns#managedZoneDnsSecConfig&quot;,
          &quot;defaultKeySpecs&quot;: [ # Specifies parameters for generating initial DnsKeys for this ManagedZone. Can only be changed while the state is OFF.
            { # Parameters for DnsKey key generation. Used for generating initial keys for a new ManagedZone and as default when adding a new DnsKey.
              &quot;algorithm&quot;: &quot;A String&quot;, # String mnemonic specifying the DNSSEC algorithm of this key.
              &quot;kind&quot;: &quot;dns#dnsKeySpec&quot;,
              &quot;keyType&quot;: &quot;A String&quot;, # Specifies whether this is a key signing key (KSK) or a zone signing key (ZSK). Key signing keys have the Secure Entry Point flag set and, when active, will only be used to sign resource record sets of type DNSKEY. Zone signing keys do not have the Secure Entry Point flag set and will be used to sign all other types of resource record sets.
              &quot;keyLength&quot;: 42, # Length of the keys in bits.
            },
          ],
        },
        &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 managed zone&#x27;s function.
        &quot;creationTime&quot;: &quot;A String&quot;, # The time that this resource was created on the server. This is in RFC3339 text format. Output only.
        &quot;nameServers&quot;: [ # Delegate your managed_zone to these virtual name servers; defined by the server (output only)
          &quot;A String&quot;,
        ],
        &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only)
        &quot;name&quot;: &quot;A String&quot;, # User assigned name for this resource. Must be unique within the project. The name must be 1-63 characters long, must begin with a letter, end with a letter or digit, and only contain lowercase letters, digits or dashes.
        &quot;privateVisibilityConfig&quot;: { # For privately visible zones, the set of Virtual Private Cloud resources that the zone is visible from.
          &quot;kind&quot;: &quot;dns#managedZonePrivateVisibilityConfig&quot;,
          &quot;networks&quot;: [ # The list of VPC networks that can see this zone.
            {
              &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}
              &quot;kind&quot;: &quot;dns#managedZonePrivateVisibilityConfigNetwork&quot;,
            },
          ],
        },
        &quot;kind&quot;: &quot;dns#managedZone&quot;,
        &quot;serviceDirectoryConfig&quot;: { # Contains information about Service Directory-backed zones. # This field links to the associated service directory namespace. This field should not be set for public zones or forwarding zones.
          &quot;kind&quot;: &quot;dns#managedZoneServiceDirectoryConfig&quot;,
          &quot;namespace&quot;: { # Contains information about the namespace associated with the zone.
            &quot;deletionTime&quot;: &quot;A String&quot;, # The time that the namespace backing this zone was deleted, empty string if it still exists. This is in RFC3339 text format. Output only.
            &quot;kind&quot;: &quot;dns#managedZoneServiceDirectoryConfigNamespace&quot;,
            &quot;namespaceUrl&quot;: &quot;A String&quot;, # The fully qualified URL of the namespace associated with the zone. This should be formatted like https://servicedirectory.googleapis.com/v1/projects/{project}/locations/{location}/namespaces/{namespace}
          },
        },
      },
      &quot;oldValue&quot;: { # A zone is a subtree of the DNS namespace under one administrative responsibility. A ManagedZone is a resource that represents a DNS zone hosted by the Cloud DNS service. # The pre-operation ManagedZone resource.
        &quot;forwardingConfig&quot;: { # The presence for this field indicates that outbound forwarding is enabled for this zone. The value of this field contains the set of destinations to forward to.
          &quot;kind&quot;: &quot;dns#managedZoneForwardingConfig&quot;,
          &quot;targetNameServers&quot;: [ # List of target name servers to forward to. Cloud DNS will select the best available name server if more than one target is given.
            {
              &quot;kind&quot;: &quot;dns#managedZoneForwardingConfigNameServerTarget&quot;,
              &quot;ipv4Address&quot;: &quot;A String&quot;, # IPv4 address of a target name server.
              &quot;forwardingPath&quot;: &quot;A String&quot;, # Forwarding path for this NameServerTarget. If unset or set to DEFAULT, Cloud DNS will make forwarding decision based on address ranges, i.e. RFC1918 addresses go to the VPC, non-RFC1918 addresses go to the Internet. When set to PRIVATE, Cloud DNS will always send queries through VPC for this target.
            },
          ],
        },
        &quot;peeringConfig&quot;: { # The presence of this field indicates that DNS Peering is enabled for this zone. The value of this field contains the network to peer with.
          &quot;targetNetwork&quot;: { # The network with which to peer.
            &quot;deactivateTime&quot;: &quot;A String&quot;, # The time at which the zone was deactivated, in RFC 3339 date-time format. An empty string indicates that the peering connection is active. The producer network can deactivate a zone. The zone is automatically deactivated if the producer network that the zone targeted is deleted. Output only.
            &quot;networkUrl&quot;: &quot;A String&quot;, # The fully qualified URL of the VPC network to forward queries to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
            &quot;kind&quot;: &quot;dns#managedZonePeeringConfigTargetNetwork&quot;,
          },
          &quot;kind&quot;: &quot;dns#managedZonePeeringConfig&quot;,
        },
        &quot;nameServerSet&quot;: &quot;A String&quot;, # Optionally specifies the NameServerSet for this ManagedZone. A NameServerSet is a set of DNS name servers that all host the same ManagedZones. Most users will leave this field unset.
        &quot;reverseLookupConfig&quot;: { # The presence of this field indicates that this is a managed reverse lookup zone and Cloud DNS will resolve reverse lookup queries using automatically configured records for VPC resources. This only applies to networks listed under private_visibility_config.
          &quot;kind&quot;: &quot;dns#managedZoneReverseLookupConfig&quot;,
        },
        &quot;labels&quot;: { # User labels.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;dnsName&quot;: &quot;A String&quot;, # The DNS name of this managed zone, for instance &quot;example.com.&quot;.
        &quot;visibility&quot;: &quot;A String&quot;, # The zone&#x27;s visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources.
        &quot;dnssecConfig&quot;: { # DNSSEC configuration.
          &quot;state&quot;: &quot;A String&quot;, # Specifies whether DNSSEC is enabled, and what mode it is in.
          &quot;nonExistence&quot;: &quot;A String&quot;, # Specifies the mechanism for authenticated denial-of-existence responses. Can only be changed while the state is OFF.
          &quot;kind&quot;: &quot;dns#managedZoneDnsSecConfig&quot;,
          &quot;defaultKeySpecs&quot;: [ # Specifies parameters for generating initial DnsKeys for this ManagedZone. Can only be changed while the state is OFF.
            { # Parameters for DnsKey key generation. Used for generating initial keys for a new ManagedZone and as default when adding a new DnsKey.
              &quot;algorithm&quot;: &quot;A String&quot;, # String mnemonic specifying the DNSSEC algorithm of this key.
              &quot;kind&quot;: &quot;dns#dnsKeySpec&quot;,
              &quot;keyType&quot;: &quot;A String&quot;, # Specifies whether this is a key signing key (KSK) or a zone signing key (ZSK). Key signing keys have the Secure Entry Point flag set and, when active, will only be used to sign resource record sets of type DNSKEY. Zone signing keys do not have the Secure Entry Point flag set and will be used to sign all other types of resource record sets.
              &quot;keyLength&quot;: 42, # Length of the keys in bits.
            },
          ],
        },
        &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 managed zone&#x27;s function.
        &quot;creationTime&quot;: &quot;A String&quot;, # The time that this resource was created on the server. This is in RFC3339 text format. Output only.
        &quot;nameServers&quot;: [ # Delegate your managed_zone to these virtual name servers; defined by the server (output only)
          &quot;A String&quot;,
        ],
        &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only)
        &quot;name&quot;: &quot;A String&quot;, # User assigned name for this resource. Must be unique within the project. The name must be 1-63 characters long, must begin with a letter, end with a letter or digit, and only contain lowercase letters, digits or dashes.
        &quot;privateVisibilityConfig&quot;: { # For privately visible zones, the set of Virtual Private Cloud resources that the zone is visible from.
          &quot;kind&quot;: &quot;dns#managedZonePrivateVisibilityConfig&quot;,
          &quot;networks&quot;: [ # The list of VPC networks that can see this zone.
            {
              &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}
              &quot;kind&quot;: &quot;dns#managedZonePrivateVisibilityConfigNetwork&quot;,
            },
          ],
        },
        &quot;kind&quot;: &quot;dns#managedZone&quot;,
        &quot;serviceDirectoryConfig&quot;: { # Contains information about Service Directory-backed zones. # This field links to the associated service directory namespace. This field should not be set for public zones or forwarding zones.
          &quot;kind&quot;: &quot;dns#managedZoneServiceDirectoryConfig&quot;,
          &quot;namespace&quot;: { # Contains information about the namespace associated with the zone.
            &quot;deletionTime&quot;: &quot;A String&quot;, # The time that the namespace backing this zone was deleted, empty string if it still exists. This is in RFC3339 text format. Output only.
            &quot;kind&quot;: &quot;dns#managedZoneServiceDirectoryConfigNamespace&quot;,
            &quot;namespaceUrl&quot;: &quot;A String&quot;, # The fully qualified URL of the namespace associated with the zone. This should be formatted like https://servicedirectory.googleapis.com/v1/projects/{project}/locations/{location}/namespaces/{namespace}
          },
        },
      },
    },
    &quot;startTime&quot;: &quot;A String&quot;, # The time that this operation was started by the server. This is in RFC3339 text format (output only).
    &quot;type&quot;: &quot;A String&quot;, # Type of the operation. Operations include insert, update, and delete (output only).
    &quot;user&quot;: &quot;A String&quot;, # User who requested the operation, for example: user@example.com. cloud-dns-system for operations automatically done by the system. (output only)
    &quot;kind&quot;: &quot;dns#operation&quot;,
    &quot;status&quot;: &quot;A String&quot;, # Status of the operation. Can be one of the following: &quot;PENDING&quot; or &quot;DONE&quot; (output only). A status of &quot;DONE&quot; means that the request to update the authoritative servers has been sent, but the servers might not be updated yet.
    &quot;dnsKeyContext&quot;: { # Only populated if the operation targeted a DnsKey (output only).
      &quot;oldValue&quot;: { # A DNSSEC key pair. # The pre-operation DnsKey resource.
        &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only).
        &quot;algorithm&quot;: &quot;A String&quot;, # String mnemonic specifying the DNSSEC algorithm of this key. Immutable after creation time.
        &quot;type&quot;: &quot;A String&quot;, # One of &quot;KEY_SIGNING&quot; or &quot;ZONE_SIGNING&quot;. Keys of type KEY_SIGNING have the Secure Entry Point flag set and, when active, will be used to sign only resource record sets of type DNSKEY. Otherwise, the Secure Entry Point flag will be cleared and this key will be used to sign only resource record sets of other types. Immutable after creation time.
        &quot;keyLength&quot;: 42, # Length of the key in bits. Specified at creation time then immutable.
        &quot;creationTime&quot;: &quot;A String&quot;, # The time that this resource was created in the control plane. This is in RFC3339 text format. Output only.
        &quot;digests&quot;: [ # Cryptographic hashes of the DNSKEY resource record associated with this DnsKey. These digests are needed to construct a DS record that points at this DNS key. Output only.
          {
            &quot;digest&quot;: &quot;A String&quot;, # The base-16 encoded bytes of this digest. Suitable for use in a DS resource record.
            &quot;type&quot;: &quot;A String&quot;, # Specifies the algorithm used to calculate this digest.
          },
        ],
        &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 resource&#x27;s function.
        &quot;isActive&quot;: True or False, # Active keys will be used to sign subsequent changes to the ManagedZone. Inactive keys will still be present as DNSKEY Resource Records for the use of resolvers validating existing signatures.
        &quot;kind&quot;: &quot;dns#dnsKey&quot;,
        &quot;keyTag&quot;: 42, # The key tag is a non-cryptographic hash of the a DNSKEY resource record associated with this DnsKey. The key tag can be used to identify a DNSKEY more quickly (but it is not a unique identifier). In particular, the key tag is used in a parent zone&#x27;s DS record to point at the DNSKEY in this child ManagedZone. The key tag is a number in the range [0, 65535] and the algorithm to calculate it is specified in RFC4034 Appendix B. Output only.
        &quot;publicKey&quot;: &quot;A String&quot;, # Base64 encoded public half of this key. Output only.
      },
      &quot;newValue&quot;: { # A DNSSEC key pair. # The post-operation DnsKey resource.
        &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only).
        &quot;algorithm&quot;: &quot;A String&quot;, # String mnemonic specifying the DNSSEC algorithm of this key. Immutable after creation time.
        &quot;type&quot;: &quot;A String&quot;, # One of &quot;KEY_SIGNING&quot; or &quot;ZONE_SIGNING&quot;. Keys of type KEY_SIGNING have the Secure Entry Point flag set and, when active, will be used to sign only resource record sets of type DNSKEY. Otherwise, the Secure Entry Point flag will be cleared and this key will be used to sign only resource record sets of other types. Immutable after creation time.
        &quot;keyLength&quot;: 42, # Length of the key in bits. Specified at creation time then immutable.
        &quot;creationTime&quot;: &quot;A String&quot;, # The time that this resource was created in the control plane. This is in RFC3339 text format. Output only.
        &quot;digests&quot;: [ # Cryptographic hashes of the DNSKEY resource record associated with this DnsKey. These digests are needed to construct a DS record that points at this DNS key. Output only.
          {
            &quot;digest&quot;: &quot;A String&quot;, # The base-16 encoded bytes of this digest. Suitable for use in a DS resource record.
            &quot;type&quot;: &quot;A String&quot;, # Specifies the algorithm used to calculate this digest.
          },
        ],
        &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 resource&#x27;s function.
        &quot;isActive&quot;: True or False, # Active keys will be used to sign subsequent changes to the ManagedZone. Inactive keys will still be present as DNSKEY Resource Records for the use of resolvers validating existing signatures.
        &quot;kind&quot;: &quot;dns#dnsKey&quot;,
        &quot;keyTag&quot;: 42, # The key tag is a non-cryptographic hash of the a DNSKEY resource record associated with this DnsKey. The key tag can be used to identify a DNSKEY more quickly (but it is not a unique identifier). In particular, the key tag is used in a parent zone&#x27;s DS record to point at the DNSKEY in this child ManagedZone. The key tag is a number in the range [0, 65535] and the algorithm to calculate it is specified in RFC4034 Appendix B. Output only.
        &quot;publicKey&quot;: &quot;A String&quot;, # Base64 encoded public half of this key. Output only.
      },
    },
    &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource. This is the client_operation_id if the client specified it when the mutation was initiated, otherwise, it is generated by the server. The name must be 1-63 characters long and match the regular expression [-a-z0-9]? (output only)
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(project, managedZone, maxResults=None, pageToken=None, sortBy=None, x__xgafv=None)</code>
  <pre>Enumerate Operations for the given ManagedZone.

Args:
  project: string, Identifies the project addressed by this request. (required)
  managedZone: string, Identifies the managed zone addressed by this request. (required)
  maxResults: integer, Optional. Maximum number of results to be returned. If unspecified, the server will decide 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.
  sortBy: string, Sorting criterion. The only supported values are START_TIME and ID.
    Allowed values
      startTime - 
      id - 
  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;operations&quot;: [ # The operation resources.
      { # An operation represents a successful mutation performed on a Cloud DNS resource. Operations provide: - An audit log of server resource mutations. - A way to recover/retry API calls in the case where the response is never received by the caller. Use the caller specified client_operation_id.
        &quot;zoneContext&quot;: { # Only populated if the operation targeted a ManagedZone (output only).
          &quot;newValue&quot;: { # A zone is a subtree of the DNS namespace under one administrative responsibility. A ManagedZone is a resource that represents a DNS zone hosted by the Cloud DNS service. # The post-operation ManagedZone resource.
            &quot;forwardingConfig&quot;: { # The presence for this field indicates that outbound forwarding is enabled for this zone. The value of this field contains the set of destinations to forward to.
              &quot;kind&quot;: &quot;dns#managedZoneForwardingConfig&quot;,
              &quot;targetNameServers&quot;: [ # List of target name servers to forward to. Cloud DNS will select the best available name server if more than one target is given.
                {
                  &quot;kind&quot;: &quot;dns#managedZoneForwardingConfigNameServerTarget&quot;,
                  &quot;ipv4Address&quot;: &quot;A String&quot;, # IPv4 address of a target name server.
                  &quot;forwardingPath&quot;: &quot;A String&quot;, # Forwarding path for this NameServerTarget. If unset or set to DEFAULT, Cloud DNS will make forwarding decision based on address ranges, i.e. RFC1918 addresses go to the VPC, non-RFC1918 addresses go to the Internet. When set to PRIVATE, Cloud DNS will always send queries through VPC for this target.
                },
              ],
            },
            &quot;peeringConfig&quot;: { # The presence of this field indicates that DNS Peering is enabled for this zone. The value of this field contains the network to peer with.
              &quot;targetNetwork&quot;: { # The network with which to peer.
                &quot;deactivateTime&quot;: &quot;A String&quot;, # The time at which the zone was deactivated, in RFC 3339 date-time format. An empty string indicates that the peering connection is active. The producer network can deactivate a zone. The zone is automatically deactivated if the producer network that the zone targeted is deleted. Output only.
                &quot;networkUrl&quot;: &quot;A String&quot;, # The fully qualified URL of the VPC network to forward queries to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
                &quot;kind&quot;: &quot;dns#managedZonePeeringConfigTargetNetwork&quot;,
              },
              &quot;kind&quot;: &quot;dns#managedZonePeeringConfig&quot;,
            },
            &quot;nameServerSet&quot;: &quot;A String&quot;, # Optionally specifies the NameServerSet for this ManagedZone. A NameServerSet is a set of DNS name servers that all host the same ManagedZones. Most users will leave this field unset.
            &quot;reverseLookupConfig&quot;: { # The presence of this field indicates that this is a managed reverse lookup zone and Cloud DNS will resolve reverse lookup queries using automatically configured records for VPC resources. This only applies to networks listed under private_visibility_config.
              &quot;kind&quot;: &quot;dns#managedZoneReverseLookupConfig&quot;,
            },
            &quot;labels&quot;: { # User labels.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;dnsName&quot;: &quot;A String&quot;, # The DNS name of this managed zone, for instance &quot;example.com.&quot;.
            &quot;visibility&quot;: &quot;A String&quot;, # The zone&#x27;s visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources.
            &quot;dnssecConfig&quot;: { # DNSSEC configuration.
              &quot;state&quot;: &quot;A String&quot;, # Specifies whether DNSSEC is enabled, and what mode it is in.
              &quot;nonExistence&quot;: &quot;A String&quot;, # Specifies the mechanism for authenticated denial-of-existence responses. Can only be changed while the state is OFF.
              &quot;kind&quot;: &quot;dns#managedZoneDnsSecConfig&quot;,
              &quot;defaultKeySpecs&quot;: [ # Specifies parameters for generating initial DnsKeys for this ManagedZone. Can only be changed while the state is OFF.
                { # Parameters for DnsKey key generation. Used for generating initial keys for a new ManagedZone and as default when adding a new DnsKey.
                  &quot;algorithm&quot;: &quot;A String&quot;, # String mnemonic specifying the DNSSEC algorithm of this key.
                  &quot;kind&quot;: &quot;dns#dnsKeySpec&quot;,
                  &quot;keyType&quot;: &quot;A String&quot;, # Specifies whether this is a key signing key (KSK) or a zone signing key (ZSK). Key signing keys have the Secure Entry Point flag set and, when active, will only be used to sign resource record sets of type DNSKEY. Zone signing keys do not have the Secure Entry Point flag set and will be used to sign all other types of resource record sets.
                  &quot;keyLength&quot;: 42, # Length of the keys in bits.
                },
              ],
            },
            &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 managed zone&#x27;s function.
            &quot;creationTime&quot;: &quot;A String&quot;, # The time that this resource was created on the server. This is in RFC3339 text format. Output only.
            &quot;nameServers&quot;: [ # Delegate your managed_zone to these virtual name servers; defined by the server (output only)
              &quot;A String&quot;,
            ],
            &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only)
            &quot;name&quot;: &quot;A String&quot;, # User assigned name for this resource. Must be unique within the project. The name must be 1-63 characters long, must begin with a letter, end with a letter or digit, and only contain lowercase letters, digits or dashes.
            &quot;privateVisibilityConfig&quot;: { # For privately visible zones, the set of Virtual Private Cloud resources that the zone is visible from.
              &quot;kind&quot;: &quot;dns#managedZonePrivateVisibilityConfig&quot;,
              &quot;networks&quot;: [ # The list of VPC networks that can see this zone.
                {
                  &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}
                  &quot;kind&quot;: &quot;dns#managedZonePrivateVisibilityConfigNetwork&quot;,
                },
              ],
            },
            &quot;kind&quot;: &quot;dns#managedZone&quot;,
            &quot;serviceDirectoryConfig&quot;: { # Contains information about Service Directory-backed zones. # This field links to the associated service directory namespace. This field should not be set for public zones or forwarding zones.
              &quot;kind&quot;: &quot;dns#managedZoneServiceDirectoryConfig&quot;,
              &quot;namespace&quot;: { # Contains information about the namespace associated with the zone.
                &quot;deletionTime&quot;: &quot;A String&quot;, # The time that the namespace backing this zone was deleted, empty string if it still exists. This is in RFC3339 text format. Output only.
                &quot;kind&quot;: &quot;dns#managedZoneServiceDirectoryConfigNamespace&quot;,
                &quot;namespaceUrl&quot;: &quot;A String&quot;, # The fully qualified URL of the namespace associated with the zone. This should be formatted like https://servicedirectory.googleapis.com/v1/projects/{project}/locations/{location}/namespaces/{namespace}
              },
            },
          },
          &quot;oldValue&quot;: { # A zone is a subtree of the DNS namespace under one administrative responsibility. A ManagedZone is a resource that represents a DNS zone hosted by the Cloud DNS service. # The pre-operation ManagedZone resource.
            &quot;forwardingConfig&quot;: { # The presence for this field indicates that outbound forwarding is enabled for this zone. The value of this field contains the set of destinations to forward to.
              &quot;kind&quot;: &quot;dns#managedZoneForwardingConfig&quot;,
              &quot;targetNameServers&quot;: [ # List of target name servers to forward to. Cloud DNS will select the best available name server if more than one target is given.
                {
                  &quot;kind&quot;: &quot;dns#managedZoneForwardingConfigNameServerTarget&quot;,
                  &quot;ipv4Address&quot;: &quot;A String&quot;, # IPv4 address of a target name server.
                  &quot;forwardingPath&quot;: &quot;A String&quot;, # Forwarding path for this NameServerTarget. If unset or set to DEFAULT, Cloud DNS will make forwarding decision based on address ranges, i.e. RFC1918 addresses go to the VPC, non-RFC1918 addresses go to the Internet. When set to PRIVATE, Cloud DNS will always send queries through VPC for this target.
                },
              ],
            },
            &quot;peeringConfig&quot;: { # The presence of this field indicates that DNS Peering is enabled for this zone. The value of this field contains the network to peer with.
              &quot;targetNetwork&quot;: { # The network with which to peer.
                &quot;deactivateTime&quot;: &quot;A String&quot;, # The time at which the zone was deactivated, in RFC 3339 date-time format. An empty string indicates that the peering connection is active. The producer network can deactivate a zone. The zone is automatically deactivated if the producer network that the zone targeted is deleted. Output only.
                &quot;networkUrl&quot;: &quot;A String&quot;, # The fully qualified URL of the VPC network to forward queries to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
                &quot;kind&quot;: &quot;dns#managedZonePeeringConfigTargetNetwork&quot;,
              },
              &quot;kind&quot;: &quot;dns#managedZonePeeringConfig&quot;,
            },
            &quot;nameServerSet&quot;: &quot;A String&quot;, # Optionally specifies the NameServerSet for this ManagedZone. A NameServerSet is a set of DNS name servers that all host the same ManagedZones. Most users will leave this field unset.
            &quot;reverseLookupConfig&quot;: { # The presence of this field indicates that this is a managed reverse lookup zone and Cloud DNS will resolve reverse lookup queries using automatically configured records for VPC resources. This only applies to networks listed under private_visibility_config.
              &quot;kind&quot;: &quot;dns#managedZoneReverseLookupConfig&quot;,
            },
            &quot;labels&quot;: { # User labels.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;dnsName&quot;: &quot;A String&quot;, # The DNS name of this managed zone, for instance &quot;example.com.&quot;.
            &quot;visibility&quot;: &quot;A String&quot;, # The zone&#x27;s visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources.
            &quot;dnssecConfig&quot;: { # DNSSEC configuration.
              &quot;state&quot;: &quot;A String&quot;, # Specifies whether DNSSEC is enabled, and what mode it is in.
              &quot;nonExistence&quot;: &quot;A String&quot;, # Specifies the mechanism for authenticated denial-of-existence responses. Can only be changed while the state is OFF.
              &quot;kind&quot;: &quot;dns#managedZoneDnsSecConfig&quot;,
              &quot;defaultKeySpecs&quot;: [ # Specifies parameters for generating initial DnsKeys for this ManagedZone. Can only be changed while the state is OFF.
                { # Parameters for DnsKey key generation. Used for generating initial keys for a new ManagedZone and as default when adding a new DnsKey.
                  &quot;algorithm&quot;: &quot;A String&quot;, # String mnemonic specifying the DNSSEC algorithm of this key.
                  &quot;kind&quot;: &quot;dns#dnsKeySpec&quot;,
                  &quot;keyType&quot;: &quot;A String&quot;, # Specifies whether this is a key signing key (KSK) or a zone signing key (ZSK). Key signing keys have the Secure Entry Point flag set and, when active, will only be used to sign resource record sets of type DNSKEY. Zone signing keys do not have the Secure Entry Point flag set and will be used to sign all other types of resource record sets.
                  &quot;keyLength&quot;: 42, # Length of the keys in bits.
                },
              ],
            },
            &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 managed zone&#x27;s function.
            &quot;creationTime&quot;: &quot;A String&quot;, # The time that this resource was created on the server. This is in RFC3339 text format. Output only.
            &quot;nameServers&quot;: [ # Delegate your managed_zone to these virtual name servers; defined by the server (output only)
              &quot;A String&quot;,
            ],
            &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only)
            &quot;name&quot;: &quot;A String&quot;, # User assigned name for this resource. Must be unique within the project. The name must be 1-63 characters long, must begin with a letter, end with a letter or digit, and only contain lowercase letters, digits or dashes.
            &quot;privateVisibilityConfig&quot;: { # For privately visible zones, the set of Virtual Private Cloud resources that the zone is visible from.
              &quot;kind&quot;: &quot;dns#managedZonePrivateVisibilityConfig&quot;,
              &quot;networks&quot;: [ # The list of VPC networks that can see this zone.
                {
                  &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}
                  &quot;kind&quot;: &quot;dns#managedZonePrivateVisibilityConfigNetwork&quot;,
                },
              ],
            },
            &quot;kind&quot;: &quot;dns#managedZone&quot;,
            &quot;serviceDirectoryConfig&quot;: { # Contains information about Service Directory-backed zones. # This field links to the associated service directory namespace. This field should not be set for public zones or forwarding zones.
              &quot;kind&quot;: &quot;dns#managedZoneServiceDirectoryConfig&quot;,
              &quot;namespace&quot;: { # Contains information about the namespace associated with the zone.
                &quot;deletionTime&quot;: &quot;A String&quot;, # The time that the namespace backing this zone was deleted, empty string if it still exists. This is in RFC3339 text format. Output only.
                &quot;kind&quot;: &quot;dns#managedZoneServiceDirectoryConfigNamespace&quot;,
                &quot;namespaceUrl&quot;: &quot;A String&quot;, # The fully qualified URL of the namespace associated with the zone. This should be formatted like https://servicedirectory.googleapis.com/v1/projects/{project}/locations/{location}/namespaces/{namespace}
              },
            },
          },
        },
        &quot;startTime&quot;: &quot;A String&quot;, # The time that this operation was started by the server. This is in RFC3339 text format (output only).
        &quot;type&quot;: &quot;A String&quot;, # Type of the operation. Operations include insert, update, and delete (output only).
        &quot;user&quot;: &quot;A String&quot;, # User who requested the operation, for example: user@example.com. cloud-dns-system for operations automatically done by the system. (output only)
        &quot;kind&quot;: &quot;dns#operation&quot;,
        &quot;status&quot;: &quot;A String&quot;, # Status of the operation. Can be one of the following: &quot;PENDING&quot; or &quot;DONE&quot; (output only). A status of &quot;DONE&quot; means that the request to update the authoritative servers has been sent, but the servers might not be updated yet.
        &quot;dnsKeyContext&quot;: { # Only populated if the operation targeted a DnsKey (output only).
          &quot;oldValue&quot;: { # A DNSSEC key pair. # The pre-operation DnsKey resource.
            &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only).
            &quot;algorithm&quot;: &quot;A String&quot;, # String mnemonic specifying the DNSSEC algorithm of this key. Immutable after creation time.
            &quot;type&quot;: &quot;A String&quot;, # One of &quot;KEY_SIGNING&quot; or &quot;ZONE_SIGNING&quot;. Keys of type KEY_SIGNING have the Secure Entry Point flag set and, when active, will be used to sign only resource record sets of type DNSKEY. Otherwise, the Secure Entry Point flag will be cleared and this key will be used to sign only resource record sets of other types. Immutable after creation time.
            &quot;keyLength&quot;: 42, # Length of the key in bits. Specified at creation time then immutable.
            &quot;creationTime&quot;: &quot;A String&quot;, # The time that this resource was created in the control plane. This is in RFC3339 text format. Output only.
            &quot;digests&quot;: [ # Cryptographic hashes of the DNSKEY resource record associated with this DnsKey. These digests are needed to construct a DS record that points at this DNS key. Output only.
              {
                &quot;digest&quot;: &quot;A String&quot;, # The base-16 encoded bytes of this digest. Suitable for use in a DS resource record.
                &quot;type&quot;: &quot;A String&quot;, # Specifies the algorithm used to calculate this digest.
              },
            ],
            &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 resource&#x27;s function.
            &quot;isActive&quot;: True or False, # Active keys will be used to sign subsequent changes to the ManagedZone. Inactive keys will still be present as DNSKEY Resource Records for the use of resolvers validating existing signatures.
            &quot;kind&quot;: &quot;dns#dnsKey&quot;,
            &quot;keyTag&quot;: 42, # The key tag is a non-cryptographic hash of the a DNSKEY resource record associated with this DnsKey. The key tag can be used to identify a DNSKEY more quickly (but it is not a unique identifier). In particular, the key tag is used in a parent zone&#x27;s DS record to point at the DNSKEY in this child ManagedZone. The key tag is a number in the range [0, 65535] and the algorithm to calculate it is specified in RFC4034 Appendix B. Output only.
            &quot;publicKey&quot;: &quot;A String&quot;, # Base64 encoded public half of this key. Output only.
          },
          &quot;newValue&quot;: { # A DNSSEC key pair. # The post-operation DnsKey resource.
            &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only).
            &quot;algorithm&quot;: &quot;A String&quot;, # String mnemonic specifying the DNSSEC algorithm of this key. Immutable after creation time.
            &quot;type&quot;: &quot;A String&quot;, # One of &quot;KEY_SIGNING&quot; or &quot;ZONE_SIGNING&quot;. Keys of type KEY_SIGNING have the Secure Entry Point flag set and, when active, will be used to sign only resource record sets of type DNSKEY. Otherwise, the Secure Entry Point flag will be cleared and this key will be used to sign only resource record sets of other types. Immutable after creation time.
            &quot;keyLength&quot;: 42, # Length of the key in bits. Specified at creation time then immutable.
            &quot;creationTime&quot;: &quot;A String&quot;, # The time that this resource was created in the control plane. This is in RFC3339 text format. Output only.
            &quot;digests&quot;: [ # Cryptographic hashes of the DNSKEY resource record associated with this DnsKey. These digests are needed to construct a DS record that points at this DNS key. Output only.
              {
                &quot;digest&quot;: &quot;A String&quot;, # The base-16 encoded bytes of this digest. Suitable for use in a DS resource record.
                &quot;type&quot;: &quot;A String&quot;, # Specifies the algorithm used to calculate this digest.
              },
            ],
            &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 resource&#x27;s function.
            &quot;isActive&quot;: True or False, # Active keys will be used to sign subsequent changes to the ManagedZone. Inactive keys will still be present as DNSKEY Resource Records for the use of resolvers validating existing signatures.
            &quot;kind&quot;: &quot;dns#dnsKey&quot;,
            &quot;keyTag&quot;: 42, # The key tag is a non-cryptographic hash of the a DNSKEY resource record associated with this DnsKey. The key tag can be used to identify a DNSKEY more quickly (but it is not a unique identifier). In particular, the key tag is used in a parent zone&#x27;s DS record to point at the DNSKEY in this child ManagedZone. The key tag is a number in the range [0, 65535] and the algorithm to calculate it is specified in RFC4034 Appendix B. Output only.
            &quot;publicKey&quot;: &quot;A String&quot;, # Base64 encoded public half of this key. Output only.
          },
        },
        &quot;id&quot;: &quot;A String&quot;, # Unique identifier for the resource. This is the client_operation_id if the client specified it when the mutation was initiated, otherwise, it is generated by the server. The name must be 1-63 characters long and match the regular expression [-a-z0-9]? (output only)
      },
    ],
    &quot;kind&quot;: &quot;dns#managedZoneOperationsListResponse&quot;,
    &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. In this way you can retrieve 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 will be an inconsistent view of the collection. There is no way to retrieve a consistent snapshot of a collection larger than the maximum page size.
  }</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>

</body></html>