<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">Google Cloud DNS API</a> . <a href="dns_v1beta2.projects.html">projects</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(project, clientOperationId=None)</a></code></p>
<p class="firstline">Fetch the representation of an existing Project.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(project, clientOperationId=None)</code>
  <pre>Fetch the representation of an existing Project.

Args:
  project: string, Identifies the project 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.

Returns:
  An object of the form:

    { # A project resource. The project is a top level container for resources including Cloud DNS ManagedZones. Projects can be created only in the APIs console.
    "quota": { # Limits associated with a Project. # Quotas assigned to this project (output only).
      "networksPerPolicy": 42, # Maximum allowed number of networks per policy.
      "kind": "dns#quota", # Identifies what kind of resource this is. Value: the fixed string "dns#quota".
      "managedZonesPerNetwork": 42, # Maximum allowed number of managed zones which can be attached to a network.
      "totalRrdataSizePerChange": 42, # Maximum allowed size for total rrdata in one ChangesCreateRequest in bytes.
      "resourceRecordsPerRrset": 42, # Maximum allowed number of ResourceRecords per ResourceRecordSet.
      "targetNameServersPerManagedZone": 42, # Maximum allowed number of target name servers per managed forwarding zone.
      "dnsKeysPerManagedZone": 42, # Maximum allowed number of DnsKeys per ManagedZone.
      "rrsetsPerManagedZone": 42, # Maximum allowed number of ResourceRecordSets per zone in the project.
      "rrsetAdditionsPerChange": 42, # Maximum allowed number of ResourceRecordSets to add per ChangesCreateRequest.
      "policies": 42, # Maximum allowed number of policies per project.
      "targetNameServersPerPolicy": 42, # Maximum allowed number of alternative target name servers per policy.
      "rrsetDeletionsPerChange": 42, # Maximum allowed number of ResourceRecordSets to delete per ChangesCreateRequest.
      "managedZones": 42, # Maximum allowed number of managed zones in the project.
      "networksPerManagedZone": 42, # Maximum allowed number of networks to which a privately scoped zone can be attached.
      "whitelistedKeySpecs": [ # DNSSEC algorithm and key length types that can be used for DnsKeys.
        { # Parameters for DnsKey key generation. Used for generating initial keys for a new ManagedZone and as default when adding a new DnsKey.
          "keyType": "A String", # 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.
          "keyLength": 42, # Length of the keys in bits.
          "kind": "dns#dnsKeySpec", # Identifies what kind of resource this is. Value: the fixed string "dns#dnsKeySpec".
          "algorithm": "A String", # String mnemonic specifying the DNSSEC algorithm of this key.
        },
      ],
    },
    "kind": "dns#project", # Identifies what kind of resource this is. Value: the fixed string "dns#project".
    "id": "A String", # User assigned unique identifier for the resource (output only).
    "number": "A String", # Unique numeric identifier for the resource; defined by the server (output only).
  }</pre>
</div>

</body></html>