<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="siteVerification_v1.html">Google Site Verification API</a> . <a href="siteVerification_v1.webResource.html">webResource</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(id)</a></code></p>
<p class="firstline">Relinquish ownership of a website or domain.</p>
<p class="toc_element">
  <code><a href="#get">get(id)</a></code></p>
<p class="firstline">Get the most current data for a website or domain.</p>
<p class="toc_element">
  <code><a href="#getToken">getToken(body=None)</a></code></p>
<p class="firstline">Get a verification token for placing on a website or domain.</p>
<p class="toc_element">
  <code><a href="#insert">insert(verificationMethod, body=None)</a></code></p>
<p class="firstline">Attempt verification of a website or domain.</p>
<p class="toc_element">
  <code><a href="#list">list()</a></code></p>
<p class="firstline">Get the list of your verified websites and domains.</p>
<p class="toc_element">
  <code><a href="#patch">patch(id, body=None)</a></code></p>
<p class="firstline">Modify the list of owners for your website or domain. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(id, body=None)</a></code></p>
<p class="firstline">Modify the list of owners for your website or domain.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(id)</code>
  <pre>Relinquish ownership of a website or domain.

Args:
  id: string, The id of a verified site or domain. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(id)</code>
  <pre>Get the most current data for a website or domain.

Args:
  id: string, The id of a verified site or domain. (required)

Returns:
  An object of the form:

    {
      "owners": [ # The email addresses of all verified owners.
        "A String",
      ],
      "id": "A String", # The string used to identify this site. This value should be used in the "id" portion of the REST URL for the Get, Update, and Delete operations.
      "site": { # The address and type of a site that is verified or will be verified.
        "identifier": "A String", # The site identifier. If the type is set to SITE, the identifier is a URL. If the type is set to INET_DOMAIN, the site identifier is a domain name.
        "type": "A String", # The site type. Can be SITE or INET_DOMAIN (domain name).
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="getToken">getToken(body=None)</code>
  <pre>Get a verification token for placing on a website or domain.

Args:
  body: object, The request body.
    The object takes the form of:

{
    "verificationMethod": "A String", # The verification method that will be used to verify this site. For sites, 'FILE' or 'META' methods may be used. For domains, only 'DNS' may be used.
    "site": { # The site for which a verification token will be generated.
      "identifier": "A String", # The site identifier. If the type is set to SITE, the identifier is a URL. If the type is set to INET_DOMAIN, the site identifier is a domain name.
      "type": "A String", # The type of resource to be verified. Can be SITE or INET_DOMAIN (domain name).
    },
  }


Returns:
  An object of the form:

    {
    "token": "A String", # The verification token. The token must be placed appropriately in order for verification to succeed.
    "method": "A String", # The verification method to use in conjunction with this token. For FILE, the token should be placed in the top-level directory of the site, stored inside a file of the same name. For META, the token should be placed in the HEAD tag of the default page that is loaded for the site. For DNS, the token should be placed in a TXT record of the domain.
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(verificationMethod, body=None)</code>
  <pre>Attempt verification of a website or domain.

Args:
  verificationMethod: string, The method to use for verifying a site or domain. (required)
  body: object, The request body.
    The object takes the form of:

{
    "owners": [ # The email addresses of all verified owners.
      "A String",
    ],
    "id": "A String", # The string used to identify this site. This value should be used in the "id" portion of the REST URL for the Get, Update, and Delete operations.
    "site": { # The address and type of a site that is verified or will be verified.
      "identifier": "A String", # The site identifier. If the type is set to SITE, the identifier is a URL. If the type is set to INET_DOMAIN, the site identifier is a domain name.
      "type": "A String", # The site type. Can be SITE or INET_DOMAIN (domain name).
    },
  }


Returns:
  An object of the form:

    {
      "owners": [ # The email addresses of all verified owners.
        "A String",
      ],
      "id": "A String", # The string used to identify this site. This value should be used in the "id" portion of the REST URL for the Get, Update, and Delete operations.
      "site": { # The address and type of a site that is verified or will be verified.
        "identifier": "A String", # The site identifier. If the type is set to SITE, the identifier is a URL. If the type is set to INET_DOMAIN, the site identifier is a domain name.
        "type": "A String", # The site type. Can be SITE or INET_DOMAIN (domain name).
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list()</code>
  <pre>Get the list of your verified websites and domains.

Args:

Returns:
  An object of the form:

    {
    "items": [ # The list of sites that are owned by the authenticated user.
      {
          "owners": [ # The email addresses of all verified owners.
            "A String",
          ],
          "id": "A String", # The string used to identify this site. This value should be used in the "id" portion of the REST URL for the Get, Update, and Delete operations.
          "site": { # The address and type of a site that is verified or will be verified.
            "identifier": "A String", # The site identifier. If the type is set to SITE, the identifier is a URL. If the type is set to INET_DOMAIN, the site identifier is a domain name.
            "type": "A String", # The site type. Can be SITE or INET_DOMAIN (domain name).
          },
        },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(id, body=None)</code>
  <pre>Modify the list of owners for your website or domain. This method supports patch semantics.

Args:
  id: string, The id of a verified site or domain. (required)
  body: object, The request body.
    The object takes the form of:

{
    "owners": [ # The email addresses of all verified owners.
      "A String",
    ],
    "id": "A String", # The string used to identify this site. This value should be used in the "id" portion of the REST URL for the Get, Update, and Delete operations.
    "site": { # The address and type of a site that is verified or will be verified.
      "identifier": "A String", # The site identifier. If the type is set to SITE, the identifier is a URL. If the type is set to INET_DOMAIN, the site identifier is a domain name.
      "type": "A String", # The site type. Can be SITE or INET_DOMAIN (domain name).
    },
  }


Returns:
  An object of the form:

    {
      "owners": [ # The email addresses of all verified owners.
        "A String",
      ],
      "id": "A String", # The string used to identify this site. This value should be used in the "id" portion of the REST URL for the Get, Update, and Delete operations.
      "site": { # The address and type of a site that is verified or will be verified.
        "identifier": "A String", # The site identifier. If the type is set to SITE, the identifier is a URL. If the type is set to INET_DOMAIN, the site identifier is a domain name.
        "type": "A String", # The site type. Can be SITE or INET_DOMAIN (domain name).
      },
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(id, body=None)</code>
  <pre>Modify the list of owners for your website or domain.

Args:
  id: string, The id of a verified site or domain. (required)
  body: object, The request body.
    The object takes the form of:

{
    "owners": [ # The email addresses of all verified owners.
      "A String",
    ],
    "id": "A String", # The string used to identify this site. This value should be used in the "id" portion of the REST URL for the Get, Update, and Delete operations.
    "site": { # The address and type of a site that is verified or will be verified.
      "identifier": "A String", # The site identifier. If the type is set to SITE, the identifier is a URL. If the type is set to INET_DOMAIN, the site identifier is a domain name.
      "type": "A String", # The site type. Can be SITE or INET_DOMAIN (domain name).
    },
  }


Returns:
  An object of the form:

    {
      "owners": [ # The email addresses of all verified owners.
        "A String",
      ],
      "id": "A String", # The string used to identify this site. This value should be used in the "id" portion of the REST URL for the Get, Update, and Delete operations.
      "site": { # The address and type of a site that is verified or will be verified.
        "identifier": "A String", # The site identifier. If the type is set to SITE, the identifier is a URL. If the type is set to INET_DOMAIN, the site identifier is a domain name.
        "type": "A String", # The site type. Can be SITE or INET_DOMAIN (domain name).
      },
    }</pre>
</div>

</body></html>