<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="webmasters_v3.html">Search Console API</a> . <a href="webmasters_v3.sitemaps.html">sitemaps</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="#delete">delete(siteUrl, feedpath)</a></code></p>
<p class="firstline">Deletes a sitemap from this site.</p>
<p class="toc_element">
  <code><a href="#get">get(siteUrl, feedpath)</a></code></p>
<p class="firstline">Retrieves information about a specific sitemap.</p>
<p class="toc_element">
  <code><a href="#list">list(siteUrl, sitemapIndex=None)</a></code></p>
<p class="firstline">Lists the sitemaps-entries submitted for this site, or included in the sitemap index file (if sitemapIndex is specified in the request).</p>
<p class="toc_element">
  <code><a href="#submit">submit(siteUrl, feedpath)</a></code></p>
<p class="firstline">Submits a sitemap for a site.</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="delete">delete(siteUrl, feedpath)</code>
  <pre>Deletes a sitemap from this site.

Args:
  siteUrl: string, The site&#x27;s URL, including protocol. For example: http://www.example.com/ (required)
  feedpath: string, The URL of the actual sitemap. For example: http://www.example.com/sitemap.xml (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(siteUrl, feedpath)</code>
  <pre>Retrieves information about a specific sitemap.

Args:
  siteUrl: string, The site&#x27;s URL, including protocol. For example: http://www.example.com/ (required)
  feedpath: string, The URL of the actual sitemap. For example: http://www.example.com/sitemap.xml (required)

Returns:
  An object of the form:

    { # Contains detailed information about a specific URL submitted as a sitemap.
  &quot;contents&quot;: [ # The various content types in the sitemap.
    { # Information about the various content types in the sitemap.
      &quot;indexed&quot;: &quot;A String&quot;, # The number of URLs from the sitemap that were indexed (of the content type).
      &quot;submitted&quot;: &quot;A String&quot;, # The number of URLs in the sitemap (of the content type).
      &quot;type&quot;: &quot;A String&quot;, # The specific type of content in this sitemap. For example: web.
    },
  ],
  &quot;errors&quot;: &quot;A String&quot;, # Number of errors in the sitemap. These are issues with the sitemap itself that need to be fixed before it can be processed correctly.
  &quot;isPending&quot;: True or False, # If true, the sitemap has not been processed.
  &quot;isSitemapsIndex&quot;: True or False, # If true, the sitemap is a collection of sitemaps.
  &quot;lastDownloaded&quot;: &quot;A String&quot;, # Date &amp; time in which this sitemap was last downloaded. Date format is in RFC 3339 format (yyyy-mm-dd).
  &quot;lastSubmitted&quot;: &quot;A String&quot;, # Date &amp; time in which this sitemap was submitted. Date format is in RFC 3339 format (yyyy-mm-dd).
  &quot;path&quot;: &quot;A String&quot;, # The url of the sitemap.
  &quot;type&quot;: &quot;A String&quot;, # The type of the sitemap. For example: rssFeed.
  &quot;warnings&quot;: &quot;A String&quot;, # Number of warnings for the sitemap. These are generally non-critical issues with URLs in the sitemaps.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(siteUrl, sitemapIndex=None)</code>
  <pre>Lists the sitemaps-entries submitted for this site, or included in the sitemap index file (if sitemapIndex is specified in the request).

Args:
  siteUrl: string, The site&#x27;s URL, including protocol. For example: http://www.example.com/ (required)
  sitemapIndex: string, A URL of a site&#x27;s sitemap index. For example: http://www.example.com/sitemapindex.xml

Returns:
  An object of the form:

    { # List of sitemaps.
  &quot;sitemap&quot;: [ # Contains detailed information about a specific URL submitted as a sitemap.
    { # Contains detailed information about a specific URL submitted as a sitemap.
      &quot;contents&quot;: [ # The various content types in the sitemap.
        { # Information about the various content types in the sitemap.
          &quot;indexed&quot;: &quot;A String&quot;, # The number of URLs from the sitemap that were indexed (of the content type).
          &quot;submitted&quot;: &quot;A String&quot;, # The number of URLs in the sitemap (of the content type).
          &quot;type&quot;: &quot;A String&quot;, # The specific type of content in this sitemap. For example: web.
        },
      ],
      &quot;errors&quot;: &quot;A String&quot;, # Number of errors in the sitemap. These are issues with the sitemap itself that need to be fixed before it can be processed correctly.
      &quot;isPending&quot;: True or False, # If true, the sitemap has not been processed.
      &quot;isSitemapsIndex&quot;: True or False, # If true, the sitemap is a collection of sitemaps.
      &quot;lastDownloaded&quot;: &quot;A String&quot;, # Date &amp; time in which this sitemap was last downloaded. Date format is in RFC 3339 format (yyyy-mm-dd).
      &quot;lastSubmitted&quot;: &quot;A String&quot;, # Date &amp; time in which this sitemap was submitted. Date format is in RFC 3339 format (yyyy-mm-dd).
      &quot;path&quot;: &quot;A String&quot;, # The url of the sitemap.
      &quot;type&quot;: &quot;A String&quot;, # The type of the sitemap. For example: rssFeed.
      &quot;warnings&quot;: &quot;A String&quot;, # Number of warnings for the sitemap. These are generally non-critical issues with URLs in the sitemaps.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="submit">submit(siteUrl, feedpath)</code>
  <pre>Submits a sitemap for a site.

Args:
  siteUrl: string, The site&#x27;s URL, including protocol. For example: http://www.example.com/ (required)
  feedpath: string, The URL of the sitemap to add. For example: http://www.example.com/sitemap.xml (required)
</pre>
</div>

</body></html>