<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="#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</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="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;url&quot;: &quot;A String&quot;, # URL to which this metadata refers.
    &quot;latestUpdate&quot;: { # `UrlNotification` is the resource used in all Indexing API calls. # Latest notification received with type `URL_UPDATED`.
          # It describes one event in the life cycle of a Web Document.
        &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;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;latestRemove&quot;: { # `UrlNotification` is the resource used in all Indexing API calls. # Latest notification received with type `URL_REMOVED`.
          # It describes one event in the life cycle of a Web Document.
        &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;notifyTime&quot;: &quot;A String&quot;, # Creation timestamp for this notification.
            # Users should _not_ specify it, the field is ignored at the request time.
      },
  }</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;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;notifyTime&quot;: &quot;A String&quot;, # Creation timestamp for this notification.
        # Users should _not_ specify it, the field is ignored at the request time.
  }

  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, # Description of the notification events received for this URL.
        # for a given URL.
      &quot;url&quot;: &quot;A String&quot;, # URL to which this metadata refers.
      &quot;latestUpdate&quot;: { # `UrlNotification` is the resource used in all Indexing API calls. # Latest notification received with type `URL_UPDATED`.
            # It describes one event in the life cycle of a Web Document.
          &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;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;latestRemove&quot;: { # `UrlNotification` is the resource used in all Indexing API calls. # Latest notification received with type `URL_REMOVED`.
            # It describes one event in the life cycle of a Web Document.
          &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;notifyTime&quot;: &quot;A String&quot;, # Creation timestamp for this notification.
              # Users should _not_ specify it, the field is ignored at the request time.
        },
    },
  }</pre>
</div>

</body></html>