<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="indexing_v3.html">Indexing API</a> . <a href="indexing_v3.urlNotifications.html">urlNotifications</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="#getMetadata">getMetadata(url=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets metadata about a Web Document. This method can _only_ be used to query URLs that were previously seen in successful Indexing API notifications. Includes the latest `UrlNotification` received via this API.</p>
<p class="toc_element">
  <code><a href="#publish">publish(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Notifies that a URL has been updated or deleted.</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="getMetadata">getMetadata(url=None, x__xgafv=None)</code>
  <pre>Gets metadata about a Web Document. This method can _only_ be used to query URLs that were previously seen in successful Indexing API notifications. Includes the latest `UrlNotification` received via this API.

Args:
  url: string, URL that is being queried.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Summary of the most recent Indexing API notifications successfully received, for a given URL.
  &quot;latestRemove&quot;: { # `UrlNotification` is the resource used in all Indexing API calls. It describes one event in the life cycle of a Web Document. # Latest notification received with type `URL_REMOVED`.
    &quot;notifyTime&quot;: &quot;A String&quot;, # Creation timestamp for this notification. Users should _not_ specify it, the field is ignored at the request time.
    &quot;type&quot;: &quot;A String&quot;, # The URL life cycle event that Google is being notified about.
    &quot;url&quot;: &quot;A String&quot;, # The object of this notification. The URL must be owned by the publisher of this notification and, in case of `URL_UPDATED` notifications, it _must_ be crawlable by Google.
  },
  &quot;latestUpdate&quot;: { # `UrlNotification` is the resource used in all Indexing API calls. It describes one event in the life cycle of a Web Document. # Latest notification received with type `URL_UPDATED`.
    &quot;notifyTime&quot;: &quot;A String&quot;, # Creation timestamp for this notification. Users should _not_ specify it, the field is ignored at the request time.
    &quot;type&quot;: &quot;A String&quot;, # The URL life cycle event that Google is being notified about.
    &quot;url&quot;: &quot;A String&quot;, # The object of this notification. The URL must be owned by the publisher of this notification and, in case of `URL_UPDATED` notifications, it _must_ be crawlable by Google.
  },
  &quot;url&quot;: &quot;A String&quot;, # URL to which this metadata refers.
}</pre>
</div>

<div class="method">
    <code class="details" id="publish">publish(body=None, x__xgafv=None)</code>
  <pre>Notifies that a URL has been updated or deleted.

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

{ # `UrlNotification` is the resource used in all Indexing API calls. It describes one event in the life cycle of a Web Document.
  &quot;notifyTime&quot;: &quot;A String&quot;, # Creation timestamp for this notification. Users should _not_ specify it, the field is ignored at the request time.
  &quot;type&quot;: &quot;A String&quot;, # The URL life cycle event that Google is being notified about.
  &quot;url&quot;: &quot;A String&quot;, # The object of this notification. The URL must be owned by the publisher of this notification and, in case of `URL_UPDATED` notifications, it _must_ be crawlable by Google.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Output for PublishUrlNotification
  &quot;urlNotificationMetadata&quot;: { # Summary of the most recent Indexing API notifications successfully received, for a given URL. # Description of the notification events received for this URL.
    &quot;latestRemove&quot;: { # `UrlNotification` is the resource used in all Indexing API calls. It describes one event in the life cycle of a Web Document. # Latest notification received with type `URL_REMOVED`.
      &quot;notifyTime&quot;: &quot;A String&quot;, # Creation timestamp for this notification. Users should _not_ specify it, the field is ignored at the request time.
      &quot;type&quot;: &quot;A String&quot;, # The URL life cycle event that Google is being notified about.
      &quot;url&quot;: &quot;A String&quot;, # The object of this notification. The URL must be owned by the publisher of this notification and, in case of `URL_UPDATED` notifications, it _must_ be crawlable by Google.
    },
    &quot;latestUpdate&quot;: { # `UrlNotification` is the resource used in all Indexing API calls. It describes one event in the life cycle of a Web Document. # Latest notification received with type `URL_UPDATED`.
      &quot;notifyTime&quot;: &quot;A String&quot;, # Creation timestamp for this notification. Users should _not_ specify it, the field is ignored at the request time.
      &quot;type&quot;: &quot;A String&quot;, # The URL life cycle event that Google is being notified about.
      &quot;url&quot;: &quot;A String&quot;, # The object of this notification. The URL must be owned by the publisher of this notification and, in case of `URL_UPDATED` notifications, it _must_ be crawlable by Google.
    },
    &quot;url&quot;: &quot;A String&quot;, # URL to which this metadata refers.
  },
}</pre>
</div>

</body></html>