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
Generated by API Evangelist
Written by API Evangelist tooling for Google Indexing's API. It is a proposal applied on top of the contract, not a document Google Indexing publishes.
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
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