Google Indexing · OpenAPI Overlay 1.0.0

API Evangelist enhancements — Google Indexing urlNotifications API

9 actions 9 updates documentation extends ../openapi/google-indexing-urlnotifications-api-openapi.yml
Derived by API Evangelist Built from the contracts Google Indexing publishes. Google Indexing did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-contract-sourcex-contract-formatx-contract-revisionx-contract-capturedx-documentationtermsOfServicex-eligibilityx-rate-limit

Targets 9

$.info
$.servers
$.paths['/urlNotifications/metadata'].get
$.paths['/urlNotifications/metadata'].get.responses
$.components.schemas
$.components.schemas.UrlNotification.properties.type
$.components.schemas.UrlNotification.properties.notifyTime
$.components.schemas.UrlNotificationMetadata.properties.latestRemove
$.components.securitySchemes.OAuth2.flows

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements — Google Indexing urlNotifications API
  version: 1.0.0
extends: ../openapi/google-indexing-urlnotifications-api-openapi.yml
x-provenance:
  generated: '2026-08-13'
  method: generated
  source: >-
    https://developers.google.com/search/apis/indexing-api/v3/quota-pricing,
    https://developers.google.com/search/apis/indexing-api/v3/core-errors,
    openapi/_original/google-indexing-discovery-v3.json, and a live probe of
    https://indexing.googleapis.com/v3/urlNotifications/metadata on 2026-08-13
  note: >-
    Non-destructive overlay. It never mutates the base document. Everything asserted here was read from
    Google's published documentation, from the Discovery Document revision 20260805, or observed on a
    live response — no invented values.
actions:
  - target: $.info
    description: Record the authoritative upstream contract and its revision.
    update:
      x-contract-source: https://indexing.googleapis.com/$discovery/rest?version=v3
      x-contract-format: Google API Discovery Document (discovery#restDescription)
      x-contract-revision: '20260805'
      x-contract-captured: '2026-08-13'
      x-documentation: https://developers.google.com/search/apis/indexing-api/
      termsOfService: https://developers.google.com/terms
      x-eligibility: >-
        Google restricts this API to pages carrying JobPosting structured data, or BroadcastEvent
        embedded in a VideoObject. Submissions are subject to spam detection.

  - target: $.servers
    description: Add the mTLS endpoint Google declares in the Discovery Document.
    update:
      - url: https://indexing.mtls.googleapis.com/v3
        description: Mutual-TLS endpoint declared as mtlsRootUrl in the Discovery Document.

  - target: $.paths['/urlNotifications/metadata'].get
    description: >-
      Add the real quota, the ownership precondition, and the fact that no rate-limit headers are
      returned.
    update:
      x-rate-limit:
        scope: per-project
        limit: 180
        window: minute
        name: DefaultMetadataRequestsPerMinutePerProject
        source: https://developers.google.com/search/apis/indexing-api/v3/quota-pricing
      x-rate-limit-headers: none
      x-consequence: read
      x-precondition: >-
        Can only query URLs previously seen in successful Indexing API notifications from the same
        Google Cloud project.
      x-agentic-access:
        action-class: read
        consequence: none
        scope: https://www.googleapis.com/auth/indexing
        escalation: not-required

  - target: $.paths['/urlNotifications/metadata'].get.responses
    description: >-
      Document the real error envelope. The base spec's 403/404 responses carry no schema; Google returns
      google.rpc.Status, not RFC 9457 problem+json.
    update:
      '401':
        description: >-
          Missing or invalid credentials. Returns WWW-Authenticate: Bearer
          realm="https://accounts.google.com/". Observed live on 2026-08-13 with status UNAUTHENTICATED
          and reason CREDENTIALS_MISSING.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoogleRpcStatus'
      '429':
        description: Rate limit exceeded (reason rateLimitExceeded). No Retry-After header is returned.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GoogleRpcStatus'

  - target: $.components.schemas
    description: Add the google.rpc.Status error envelope the API actually returns.
    update:
      GoogleRpcStatus:
        type: object
        description: >-
          Standard Google API error envelope. Captured verbatim from a live 401 on 2026-08-13. This API
          does not use RFC 9457 application/problem+json.
        properties:
          error:
            type: object
            properties:
              code:
                type: integer
                description: HTTP status code.
              message:
                type: string
                description: Human-readable description.
              status:
                type: string
                description: Canonical google.rpc.Code name.
                examples:
                  - UNAUTHENTICATED
                  - PERMISSION_DENIED
                  - RESOURCE_EXHAUSTED
              details:
                type: array
                description: Typed detail objects, e.g. type.googleapis.com/google.rpc.ErrorInfo.
                items:
                  type: object
                  properties:
                    '@type':
                      type: string
                    reason:
                      type: string
                    domain:
                      type: string
                    metadata:
                      type: object

  - target: $.components.schemas.UrlNotification.properties.type
    description: Correct the enum against the Discovery Document (revision 20260805).
    update:
      enum:
        - URL_NOTIFICATION_TYPE_UNSPECIFIED
        - URL_UPDATED
        - URL_DELETED
      x-enum-descriptions:
        URL_NOTIFICATION_TYPE_UNSPECIFIED: Unspecified.
        URL_UPDATED: The given URL (Web document) has been updated.
        URL_DELETED: The given URL (Web document) has been deleted.

  - target: $.components.schemas.UrlNotification.properties.notifyTime
    description: >-
      Mark notifyTime as read-only; the Discovery Document states it is ignored at request time.
    update:
      readOnly: true
      x-format: google-datetime

  - target: $.components.schemas.UrlNotificationMetadata.properties.latestRemove
    description: >-
      Record Google's own wording, which names a type value (URL_REMOVED) that the contract does not
      declare. The enum value is URL_DELETED.
    update:
      description: >-
        Latest notification received with type URL_DELETED. Google's Discovery Document describes this
        field as "Latest notification received with type `URL_REMOVED`", which does not match its own
        declared enum.

  - target: $.components.securitySchemes.OAuth2.flows
    description: >-
      Add the service-account JWT-bearer flow, which is the documented onboarding path and is absent
      from the base spec.
    update:
      clientCredentials:
        tokenUrl: https://oauth2.googleapis.com/token
        x-grant-type: urn:ietf:params:oauth:grant-type:jwt-bearer
        x-note: >-
          Google's documented path is a service account signing a JWT assertion and exchanging it at the
          token endpoint. See https://developers.google.com/search/apis/indexing-api/v3/prereqs
        scopes:
          https://www.googleapis.com/auth/indexing: Submit data to Google for indexing

Work with this as data

Every overlay here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/google-indexing-urlnotifications-api-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.