<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.dnsKeys.html">dnsKeys</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, dnsKeyId, digestType=None, clientOperationId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Fetch the representation of an existing DnsKey.</p>
<p class="toc_element">
  <code><a href="#list">list(project, managedZone, pageToken=None, digestType=None, maxResults=None, x__xgafv=None)</a></code></p>
<p class="firstline">Enumerate DnsKeys to a ResourceRecordSet collection.</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, dnsKeyId, digestType=None, clientOperationId=None, x__xgafv=None)</code>
  <pre>Fetch the representation of an existing DnsKey.

Args:
  project: string, Identifies the project addressed by this request. (required)
  managedZone: string, Identifies the managed zone addressed by this request. Can be the managed zone name or ID. (required)
  dnsKeyId: string, The identifier of the requested DnsKey. (required)
  digestType: string, An optional comma-separated list of digest types to compute and display for key signing keys. If omitted, the recommended digest type will be computed and displayed.
  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 DNSSEC key pair.
    &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;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only).
    &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;keyLength&quot;: 42, # Length of the key in bits. Specified at creation time then immutable.
    &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;publicKey&quot;: &quot;A String&quot;, # Base64 encoded public half of this key. 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;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;kind&quot;: &quot;dns#dnsKey&quot;,
    &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.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(project, managedZone, pageToken=None, digestType=None, maxResults=None, x__xgafv=None)</code>
  <pre>Enumerate DnsKeys to a ResourceRecordSet collection.

Args:
  project: string, Identifies the project addressed by this request. (required)
  managedZone: string, Identifies the managed zone addressed by this request. Can be the managed zone name or ID. (required)
  pageToken: string, Optional. A tag returned by a previous list request that was truncated. Use this parameter to continue a previous list request.
  digestType: string, An optional comma-separated list of digest types to compute and display for key signing keys. If omitted, the recommended digest type will be computed and displayed.
  maxResults: integer, Optional. Maximum number of results to be returned. If unspecified, the server will decide how many results to return.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response to a request to enumerate DnsKeys in a ManagedZone.
    &quot;kind&quot;: &quot;dns#dnsKeysListResponse&quot;, # Type of resource.
    &quot;dnsKeys&quot;: [ # The requested resources.
      { # A DNSSEC key pair.
        &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;id&quot;: &quot;A String&quot;, # Unique identifier for the resource; defined by the server (output only).
        &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;keyLength&quot;: 42, # Length of the key in bits. Specified at creation time then immutable.
        &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;publicKey&quot;: &quot;A String&quot;, # Base64 encoded public half of this key. 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;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;kind&quot;: &quot;dns#dnsKey&quot;,
        &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;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;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 pagination 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 &quot;snapshot&quot; of collections 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>