<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">Google Cloud DNS API</a> . <a href="dns_v1.changes.html">changes</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(project, managedZone, body=None, clientOperationId=None)</a></code></p>
<p class="firstline"></p>
<p class="toc_element">
  <code><a href="#get">get(project, managedZone, changeId, clientOperationId=None)</a></code></p>
<p class="firstline"></p>
<p class="toc_element">
  <code><a href="#list">list(project, managedZone, maxResults=None, pageToken=None, sortBy=None, sortOrder=None)</a></code></p>
<p class="firstline"></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="create">create(project, managedZone, body=None, clientOperationId=None)</code>
  <pre>

Args:
  project: string, A parameter (required)
  managedZone: string, A parameter (required)
  body: object, The request body.
    The object takes the form of:

{
    &quot;additions&quot;: [
      {
        &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dns#resourceRecordSet&quot;.
        &quot;name&quot;: &quot;A String&quot;,
        &quot;rrdatas&quot;: [
          &quot;A String&quot;,
        ],
        &quot;signatureRrdatas&quot;: [
          &quot;A String&quot;,
        ],
        &quot;ttl&quot;: 42,
        &quot;type&quot;: &quot;A String&quot;,
      },
    ],
    &quot;deletions&quot;: [
      {
        &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dns#resourceRecordSet&quot;.
        &quot;name&quot;: &quot;A String&quot;,
        &quot;rrdatas&quot;: [
          &quot;A String&quot;,
        ],
        &quot;signatureRrdatas&quot;: [
          &quot;A String&quot;,
        ],
        &quot;ttl&quot;: 42,
        &quot;type&quot;: &quot;A String&quot;,
      },
    ],
    &quot;id&quot;: &quot;A String&quot;,
    &quot;isServing&quot;: True or False,
    &quot;kind&quot;: &quot;dns#change&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dns#change&quot;.
    &quot;startTime&quot;: &quot;A String&quot;,
    &quot;status&quot;: &quot;A String&quot;,
  }

  clientOperationId: string, A parameter

Returns:
  An object of the form:

    {
      &quot;additions&quot;: [
        {
          &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dns#resourceRecordSet&quot;.
          &quot;name&quot;: &quot;A String&quot;,
          &quot;rrdatas&quot;: [
            &quot;A String&quot;,
          ],
          &quot;signatureRrdatas&quot;: [
            &quot;A String&quot;,
          ],
          &quot;ttl&quot;: 42,
          &quot;type&quot;: &quot;A String&quot;,
        },
      ],
      &quot;deletions&quot;: [
        {
          &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dns#resourceRecordSet&quot;.
          &quot;name&quot;: &quot;A String&quot;,
          &quot;rrdatas&quot;: [
            &quot;A String&quot;,
          ],
          &quot;signatureRrdatas&quot;: [
            &quot;A String&quot;,
          ],
          &quot;ttl&quot;: 42,
          &quot;type&quot;: &quot;A String&quot;,
        },
      ],
      &quot;id&quot;: &quot;A String&quot;,
      &quot;isServing&quot;: True or False,
      &quot;kind&quot;: &quot;dns#change&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dns#change&quot;.
      &quot;startTime&quot;: &quot;A String&quot;,
      &quot;status&quot;: &quot;A String&quot;,
    }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(project, managedZone, changeId, clientOperationId=None)</code>
  <pre>

Args:
  project: string, A parameter (required)
  managedZone: string, A parameter (required)
  changeId: string, A parameter (required)
  clientOperationId: string, A parameter

Returns:
  An object of the form:

    {
      &quot;additions&quot;: [
        {
          &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dns#resourceRecordSet&quot;.
          &quot;name&quot;: &quot;A String&quot;,
          &quot;rrdatas&quot;: [
            &quot;A String&quot;,
          ],
          &quot;signatureRrdatas&quot;: [
            &quot;A String&quot;,
          ],
          &quot;ttl&quot;: 42,
          &quot;type&quot;: &quot;A String&quot;,
        },
      ],
      &quot;deletions&quot;: [
        {
          &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dns#resourceRecordSet&quot;.
          &quot;name&quot;: &quot;A String&quot;,
          &quot;rrdatas&quot;: [
            &quot;A String&quot;,
          ],
          &quot;signatureRrdatas&quot;: [
            &quot;A String&quot;,
          ],
          &quot;ttl&quot;: 42,
          &quot;type&quot;: &quot;A String&quot;,
        },
      ],
      &quot;id&quot;: &quot;A String&quot;,
      &quot;isServing&quot;: True or False,
      &quot;kind&quot;: &quot;dns#change&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dns#change&quot;.
      &quot;startTime&quot;: &quot;A String&quot;,
      &quot;status&quot;: &quot;A String&quot;,
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(project, managedZone, maxResults=None, pageToken=None, sortBy=None, sortOrder=None)</code>
  <pre>

Args:
  project: string, A parameter (required)
  managedZone: string, A parameter (required)
  maxResults: integer, A parameter
  pageToken: string, A parameter
  sortBy: string, A parameter
    Allowed values
      changeSequence - 
  sortOrder: string, A parameter

Returns:
  An object of the form:

    {
    &quot;changes&quot;: [
      {
          &quot;additions&quot;: [
            {
              &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dns#resourceRecordSet&quot;.
              &quot;name&quot;: &quot;A String&quot;,
              &quot;rrdatas&quot;: [
                &quot;A String&quot;,
              ],
              &quot;signatureRrdatas&quot;: [
                &quot;A String&quot;,
              ],
              &quot;ttl&quot;: 42,
              &quot;type&quot;: &quot;A String&quot;,
            },
          ],
          &quot;deletions&quot;: [
            {
              &quot;kind&quot;: &quot;dns#resourceRecordSet&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dns#resourceRecordSet&quot;.
              &quot;name&quot;: &quot;A String&quot;,
              &quot;rrdatas&quot;: [
                &quot;A String&quot;,
              ],
              &quot;signatureRrdatas&quot;: [
                &quot;A String&quot;,
              ],
              &quot;ttl&quot;: 42,
              &quot;type&quot;: &quot;A String&quot;,
            },
          ],
          &quot;id&quot;: &quot;A String&quot;,
          &quot;isServing&quot;: True or False,
          &quot;kind&quot;: &quot;dns#change&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;dns#change&quot;.
          &quot;startTime&quot;: &quot;A String&quot;,
          &quot;status&quot;: &quot;A String&quot;,
        },
    ],
    &quot;header&quot;: {
      &quot;operationId&quot;: &quot;A String&quot;,
    },
    &quot;kind&quot;: &quot;dns#changesListResponse&quot;, # Type of resource.
    &quot;nextPageToken&quot;: &quot;A String&quot;,
  }</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>