<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.sites.html">sites</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#add">add(siteUrl)</a></code></p>
<p class="firstline">Adds a site to the set of the user's sites in Search Console.</p>
<p class="toc_element">
  <code><a href="#delete">delete(siteUrl)</a></code></p>
<p class="firstline">Removes a site from the set of the user's Search Console sites.</p>
<p class="toc_element">
  <code><a href="#get">get(siteUrl)</a></code></p>
<p class="firstline">Retrieves information about specific site.</p>
<p class="toc_element">
  <code><a href="#list">list()</a></code></p>
<p class="firstline">Lists the user's Search Console sites.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="add">add(siteUrl)</code>
  <pre>Adds a site to the set of the user&#x27;s sites in Search Console.

Args:
  siteUrl: string, The URL of the site to add. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(siteUrl)</code>
  <pre>Removes a site from the set of the user&#x27;s Search Console sites.

Args:
  siteUrl: string, The URI of the property as defined in Search Console. Examples: http://www.example.com/ or android-app://com.example/ Note: for property-sets, use the URI that starts with sc-set: which is used in Search Console URLs. (required)
</pre>
</div>

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

Args:
  siteUrl: string, The URI of the property as defined in Search Console. Examples: http://www.example.com/ or android-app://com.example/ Note: for property-sets, use the URI that starts with sc-set: which is used in Search Console URLs. (required)

Returns:
  An object of the form:

    { # Contains permission level information about a Search Console site. For more information, see  Permissions in Search Console.
    &quot;permissionLevel&quot;: &quot;A String&quot;, # The user&#x27;s permission level for the site.
    &quot;siteUrl&quot;: &quot;A String&quot;, # The URL of the site.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list()</code>
  <pre>Lists the user&#x27;s Search Console sites.

Args:

Returns:
  An object of the form:

    { # List of sites with access level information.
    &quot;siteEntry&quot;: [ # Contains permission level information about a Search Console site. For more information, see Permissions in Search Console.
      { # Contains permission level information about a Search Console site. For more information, see  Permissions in Search Console.
        &quot;permissionLevel&quot;: &quot;A String&quot;, # The user&#x27;s permission level for the site.
        &quot;siteUrl&quot;: &quot;A String&quot;, # The URL of the site.
      },
    ],
  }</pre>
</div>

</body></html>