@gscdump/contracts 4.4.0 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
+ import { watchedUrlsChangeRequestSchema, watchedUrlsChangeResponseSchema, watchedUrlsResponseSchema } from "../indexing-coverage.mjs";
1
2
  import { addPartnerTeamMemberSchema, bindPartnerSiteTeamSchema, bindPartnerTeamCatalogResponseSchema, bindPartnerTeamCatalogSchema, builderStateSchema, createPartnerTeamSchema, gscComparisonFilterSchema, gscdumpAnalysisBundleResponseSchema, gscdumpAnalysisPresetSchema, gscdumpAnalysisResponseSchema, gscdumpAvailableSiteSchema, gscdumpCanonicalMismatchesResponseSchema, gscdumpDataDetailResponseSchema, gscdumpDataResponseSchema, gscdumpDeletePartnerUserResponseSchema, gscdumpIndexPercentResponseSchema, gscdumpIndexingDiagnosticsResponseSchema, gscdumpIndexingResponseSchema, gscdumpIndexingTransitionFieldSchema, gscdumpKeywordSparklinesResponseSchema, gscdumpPageTrendResponseSchema, gscdumpQueryTrendResponseSchema, gscdumpSiteRegistrationSchema, gscdumpSitemapChangesResponseSchema, gscdumpSitemapExportQuerySchema, gscdumpSitemapExportResponseSchema, gscdumpSitemapMembershipParamsSchema, gscdumpSitemapMembershipResponseSchema, gscdumpSitemapUrlsQuerySchema, gscdumpSitemapUrlsResponseSchema, gscdumpSitemapsResponseSchema, gscdumpTeamRoleSchema, gscdumpTopAssociationResponseSchema, gscdumpUserRegistrationSchema, indexingUrlsResponseSchema, partnerSiteTeamBindingResponseSchema, partnerSitemapActionResponseSchema, partnerSitemapActionSchema, partnerTeamCreatedResponseSchema, partnerTeamDeletedResponseSchema, partnerTeamMemberAddedResponseSchema, partnerTeamMemberRemovedResponseSchema, partnerTeamMemberRoleResponseSchema, partnerTeamMembersResponseSchema, partnerTeamRenamedResponseSchema, registerPartnerSiteSchema, registerPartnerUserSchema, renamePartnerTeamSchema, searchTypeSchema, siteIntIdCrosswalkResponseSchema, sitemapChangesTruncationReasonSchema, teamCatalogRefSchema, updatePartnerUserTokensSchema } from "../schemas.mjs";
2
3
  import { bingConnectionV1Schemas } from "./bing.mjs";
3
4
  import "./version.mjs";
@@ -5,6 +6,7 @@ import { HTTP_V1_ERROR_CODES, defineHttpOperation, defineHttpSurface, defineResp
5
6
  import { bingDataQueryV1Schema, bingDataV1Schemas } from "./bing-data.mjs";
6
7
  import { GSCDUMP_REALTIME_ACK_POLICY, GSCDUMP_REALTIME_CLOSE_CODES, GSCDUMP_REALTIME_CONNECTION_POLICY, GSCDUMP_REALTIME_LIMITS, GSCDUMP_REALTIME_PING, GSCDUMP_REALTIME_PONG, GSCDUMP_REALTIME_REPLAY_POLICY, GSCDUMP_REALTIME_SUBPROTOCOL, GSCDUMP_REALTIME_TICKET_AUDIENCE, GSCDUMP_REALTIME_TICKET_ISSUER, GSCDUMP_REALTIME_TICKET_POLICY, GSCDUMP_REALTIME_TICKET_PREFIX, REALTIME_V1_EVENT_SEMANTICS, createRealtimeV1Schemas } from "./realtime.mjs";
7
8
  import { GSCDUMP_V1_ANALYTICS_DIMENSIONS, createGscdumpV1BrowserSchemas } from "./browser.mjs";
9
+ import { indexNowConfigureV1Schema, indexNowConnectionV1Schemas, indexNowSubmissionReceiptV1Schemas, indexNowSubmitV1Schema } from "./indexnow.mjs";
8
10
  import { gscdumpV1OperationRoute, gscdumpV1Surface } from "./route-catalog.mjs";
9
11
  import { z } from "zod";
10
12
  function errorEnvelopeSchemas(codes, publicRequestId) {
@@ -259,6 +261,15 @@ function createGscdumpV1Protocol() {
259
261
  pagination: bingIndexingEvidencePagination.client
260
262
  }), partnerResponseMeta);
261
263
  const bingConnectionResponse = defineSuccessResponse(bingConnectionV1Schemas, partnerResponseMeta);
264
+ const indexNowConnectionResponse = defineSuccessResponse(indexNowConnectionV1Schemas, partnerResponseMeta);
265
+ const indexNowSubmissionResponse = defineSuccessResponse(defineResponseObject({ submissionReceipt: indexNowSubmissionReceiptV1Schemas.producer }, { submissionReceipt: indexNowSubmissionReceiptV1Schemas.client }), partnerResponseMeta);
266
+ const indexNowSubmissionReceiptsResponse = defineSuccessResponse(defineResponseObject({
267
+ submissionReceipts: z.array(indexNowSubmissionReceiptV1Schemas.producer),
268
+ pagination: bingIndexingEvidencePagination.producer
269
+ }, {
270
+ submissionReceipts: z.array(indexNowSubmissionReceiptV1Schemas.client),
271
+ pagination: bingIndexingEvidencePagination.client
272
+ }), partnerResponseMeta);
262
273
  const indexingTransition = defineResponseObject({
263
274
  url: z.string(),
264
275
  field: gscdumpIndexingTransitionFieldSchema,
@@ -444,6 +455,8 @@ function createGscdumpV1Protocol() {
444
455
  reason: z.enum(["domain_mismatch", "rate_limited"])
445
456
  }))
446
457
  }), partnerResponseMeta);
458
+ const watchedUrlsResponse = defineSuccessResponse(defineResponseObject(watchedUrlsResponseSchema.shape), partnerResponseMeta);
459
+ const watchedUrlsChangeResponse = defineSuccessResponse(defineResponseObject(watchedUrlsChangeResponseSchema.shape), partnerResponseMeta);
447
460
  const dateRangeQuery = z.strictObject({
448
461
  startDate: calendarDate,
449
462
  endDate: calendarDate
@@ -1363,6 +1376,339 @@ function createGscdumpV1Protocol() {
1363
1376
  }
1364
1377
  }
1365
1378
  }),
1379
+ getSiteIndexNowConnection: defineHttpOperation({
1380
+ ...gscdumpV1OperationRoute("partner.sites.indexing.indexnow.connection.get"),
1381
+ visibility: "public",
1382
+ semantics: {
1383
+ kind: "query",
1384
+ sideEffects: "none",
1385
+ idempotent: true,
1386
+ retry: "idempotent",
1387
+ readConsistency: "primary"
1388
+ },
1389
+ auth: {
1390
+ credentials: ["user_key", "partner_key"],
1391
+ scopes: ["indexing:read"],
1392
+ ownership: [{
1393
+ credential: "user_key",
1394
+ rule: "authorized_site"
1395
+ }, {
1396
+ credential: "partner_key",
1397
+ rule: "authorized_site"
1398
+ }]
1399
+ },
1400
+ request: {
1401
+ params: z.strictObject({ siteId: realtimeSchemas.publicSiteId }),
1402
+ query: null,
1403
+ headers: requestHeaders,
1404
+ body: null
1405
+ },
1406
+ responses: { 200: indexNowConnectionResponse },
1407
+ errors: partnerSiteErrors,
1408
+ errorResponse: errorEnvelopeSchemas(partnerSiteErrors, realtimeSchemas.publicRequestId),
1409
+ resources: {
1410
+ reads: [{
1411
+ type: "site.indexing",
1412
+ idFrom: "params.siteId"
1413
+ }],
1414
+ changes: []
1415
+ },
1416
+ lifecycle: { introduced: "1.7.0" },
1417
+ docs: {
1418
+ summary: "Get IndexNow connection",
1419
+ description: "Returns the exact Site host and IndexNow key verification state.",
1420
+ tags: ["Indexing"],
1421
+ examples: {
1422
+ request: { params: { siteId: "s_01" } },
1423
+ response: {
1424
+ data: {
1425
+ _tag: "disconnected",
1426
+ host: "example.com"
1427
+ },
1428
+ meta: {
1429
+ requestId: "req_01",
1430
+ surface: "partner",
1431
+ version: "1.0"
1432
+ }
1433
+ }
1434
+ }
1435
+ }
1436
+ }),
1437
+ configureSiteIndexNowConnection: defineHttpOperation({
1438
+ ...gscdumpV1OperationRoute("partner.sites.indexing.indexnow.connection.configure"),
1439
+ visibility: "public",
1440
+ semantics: {
1441
+ kind: "mutation",
1442
+ sideEffects: "state",
1443
+ idempotent: true,
1444
+ retry: "idempotent",
1445
+ readConsistency: null
1446
+ },
1447
+ auth: {
1448
+ credentials: ["user_key", "partner_key"],
1449
+ scopes: ["indexing:write"],
1450
+ ownership: [{
1451
+ credential: "user_key",
1452
+ rule: "authorized_site"
1453
+ }, {
1454
+ credential: "partner_key",
1455
+ rule: "authorized_site"
1456
+ }]
1457
+ },
1458
+ request: {
1459
+ params: z.strictObject({ siteId: realtimeSchemas.publicSiteId }),
1460
+ query: null,
1461
+ headers: requestHeaders,
1462
+ body: indexNowConfigureV1Schema
1463
+ },
1464
+ responses: { 200: indexNowConnectionResponse },
1465
+ errors: partnerSiteErrors,
1466
+ errorResponse: errorEnvelopeSchemas(partnerSiteErrors, realtimeSchemas.publicRequestId),
1467
+ resources: {
1468
+ reads: [{
1469
+ type: "site.indexing",
1470
+ idFrom: "params.siteId"
1471
+ }],
1472
+ changes: [{
1473
+ type: "site.indexing",
1474
+ idFrom: "params.siteId"
1475
+ }]
1476
+ },
1477
+ lifecycle: { introduced: "1.7.0" },
1478
+ docs: {
1479
+ summary: "Configure IndexNow connection",
1480
+ description: "Stores an IndexNow key and key file location for the Site.",
1481
+ tags: ["Indexing"],
1482
+ examples: {
1483
+ request: {
1484
+ params: { siteId: "s_01" },
1485
+ body: { key: "abc12345" }
1486
+ },
1487
+ response: {
1488
+ data: {
1489
+ _tag: "verification-required",
1490
+ host: "example.com",
1491
+ keyLocation: "https://example.com/abc12345.txt",
1492
+ reason: null
1493
+ },
1494
+ meta: {
1495
+ requestId: "req_01",
1496
+ surface: "partner",
1497
+ version: "1.0"
1498
+ }
1499
+ }
1500
+ }
1501
+ }
1502
+ }),
1503
+ verifySiteIndexNowConnection: defineHttpOperation({
1504
+ ...gscdumpV1OperationRoute("partner.sites.indexing.indexnow.connection.verify"),
1505
+ visibility: "public",
1506
+ semantics: {
1507
+ kind: "mutation",
1508
+ sideEffects: "state",
1509
+ idempotent: true,
1510
+ retry: "idempotent",
1511
+ readConsistency: null
1512
+ },
1513
+ auth: {
1514
+ credentials: ["user_key", "partner_key"],
1515
+ scopes: ["indexing:write"],
1516
+ ownership: [{
1517
+ credential: "user_key",
1518
+ rule: "authorized_site"
1519
+ }, {
1520
+ credential: "partner_key",
1521
+ rule: "authorized_site"
1522
+ }]
1523
+ },
1524
+ request: {
1525
+ params: z.strictObject({ siteId: realtimeSchemas.publicSiteId }),
1526
+ query: null,
1527
+ headers: requestHeaders,
1528
+ body: null
1529
+ },
1530
+ responses: { 200: indexNowConnectionResponse },
1531
+ errors: partnerSiteErrors,
1532
+ errorResponse: errorEnvelopeSchemas(partnerSiteErrors, realtimeSchemas.publicRequestId),
1533
+ resources: {
1534
+ reads: [{
1535
+ type: "site.indexing",
1536
+ idFrom: "params.siteId"
1537
+ }],
1538
+ changes: [{
1539
+ type: "site.indexing",
1540
+ idFrom: "params.siteId"
1541
+ }]
1542
+ },
1543
+ lifecycle: { introduced: "1.7.0" },
1544
+ docs: {
1545
+ summary: "Verify IndexNow key file",
1546
+ description: "Checks the key file on the exact Site host.",
1547
+ tags: ["Indexing"],
1548
+ examples: {
1549
+ request: { params: { siteId: "s_01" } },
1550
+ response: {
1551
+ data: {
1552
+ _tag: "connected",
1553
+ host: "example.com",
1554
+ keyLocation: "https://example.com/abc12345.txt",
1555
+ verifiedAt: "2026-09-30T00:00:00.000Z"
1556
+ },
1557
+ meta: {
1558
+ requestId: "req_01",
1559
+ surface: "partner",
1560
+ version: "1.0"
1561
+ }
1562
+ }
1563
+ }
1564
+ }
1565
+ }),
1566
+ submitSiteIndexNow: defineHttpOperation({
1567
+ ...gscdumpV1OperationRoute("partner.sites.indexing.indexnow.submissions.create"),
1568
+ visibility: "public",
1569
+ semantics: {
1570
+ kind: "mutation",
1571
+ sideEffects: "state",
1572
+ idempotent: true,
1573
+ retry: "idempotent",
1574
+ readConsistency: null
1575
+ },
1576
+ auth: {
1577
+ credentials: ["user_key", "partner_key"],
1578
+ scopes: ["indexing:write"],
1579
+ ownership: [{
1580
+ credential: "user_key",
1581
+ rule: "authorized_site"
1582
+ }, {
1583
+ credential: "partner_key",
1584
+ rule: "authorized_site"
1585
+ }]
1586
+ },
1587
+ request: {
1588
+ params: z.strictObject({ siteId: realtimeSchemas.publicSiteId }),
1589
+ query: null,
1590
+ headers: requestHeaders,
1591
+ body: indexNowSubmitV1Schema
1592
+ },
1593
+ responses: { 200: indexNowSubmissionResponse },
1594
+ errors: partnerSiteErrors,
1595
+ errorResponse: errorEnvelopeSchemas(partnerSiteErrors, realtimeSchemas.publicRequestId),
1596
+ resources: {
1597
+ reads: [{
1598
+ type: "site.indexing",
1599
+ idFrom: "params.siteId"
1600
+ }],
1601
+ changes: [{
1602
+ type: "site.indexing",
1603
+ idFrom: "params.siteId"
1604
+ }]
1605
+ },
1606
+ lifecycle: { introduced: "1.7.0" },
1607
+ docs: {
1608
+ summary: "Submit IndexNow change notifications",
1609
+ description: "Queues change notifications and returns a Submission Receipt. Acceptance does not prove indexing.",
1610
+ tags: ["Indexing"],
1611
+ examples: {
1612
+ request: {
1613
+ params: { siteId: "s_01" },
1614
+ body: {
1615
+ urls: ["https://example.com/page"],
1616
+ idempotencyKey: "req_01"
1617
+ }
1618
+ },
1619
+ response: {
1620
+ data: { submissionReceipt: {
1621
+ _tag: "queued",
1622
+ id: "in_01",
1623
+ urls: ["https://example.com/page"],
1624
+ createdAt: "2026-09-30T00:00:00.000Z",
1625
+ updatedAt: "2026-09-30T00:00:00.000Z",
1626
+ attempts: 0,
1627
+ httpStatus: null,
1628
+ reason: null,
1629
+ retryAt: null
1630
+ } },
1631
+ meta: {
1632
+ requestId: "req_01",
1633
+ surface: "partner",
1634
+ version: "1.0"
1635
+ }
1636
+ }
1637
+ }
1638
+ }
1639
+ }),
1640
+ listSiteIndexNowSubmissionReceipts: defineHttpOperation({
1641
+ ...gscdumpV1OperationRoute("partner.sites.indexing.indexnow.submissions.list"),
1642
+ visibility: "public",
1643
+ semantics: {
1644
+ kind: "query",
1645
+ sideEffects: "none",
1646
+ idempotent: true,
1647
+ retry: "idempotent",
1648
+ readConsistency: "primary"
1649
+ },
1650
+ auth: {
1651
+ credentials: ["user_key", "partner_key"],
1652
+ scopes: ["indexing:read"],
1653
+ ownership: [{
1654
+ credential: "user_key",
1655
+ rule: "authorized_site"
1656
+ }, {
1657
+ credential: "partner_key",
1658
+ rule: "authorized_site"
1659
+ }]
1660
+ },
1661
+ request: {
1662
+ params: z.strictObject({ siteId: realtimeSchemas.publicSiteId }),
1663
+ query: z.strictObject({
1664
+ limit: z.coerce.number().int().min(1).max(100).default(25),
1665
+ offset: z.coerce.number().int().min(0).default(0)
1666
+ }),
1667
+ headers: requestHeaders,
1668
+ body: null
1669
+ },
1670
+ responses: { 200: indexNowSubmissionReceiptsResponse },
1671
+ errors: partnerSiteErrors,
1672
+ errorResponse: errorEnvelopeSchemas(partnerSiteErrors, realtimeSchemas.publicRequestId),
1673
+ resources: {
1674
+ reads: [{
1675
+ type: "site.indexing",
1676
+ idFrom: "params.siteId"
1677
+ }],
1678
+ changes: []
1679
+ },
1680
+ lifecycle: { introduced: "1.7.0" },
1681
+ docs: {
1682
+ summary: "List IndexNow Submission Receipts",
1683
+ description: "Returns Submission Receipts for this Site.",
1684
+ tags: ["Indexing"],
1685
+ examples: {
1686
+ request: {
1687
+ params: { siteId: "s_01" },
1688
+ query: {
1689
+ limit: 25,
1690
+ offset: 0
1691
+ }
1692
+ },
1693
+ response: {
1694
+ data: {
1695
+ submissionReceipts: [],
1696
+ pagination: {
1697
+ total: 0,
1698
+ limit: 25,
1699
+ offset: 0,
1700
+ hasMore: false
1701
+ }
1702
+ },
1703
+ meta: {
1704
+ requestId: "req_01",
1705
+ surface: "partner",
1706
+ version: "1.0"
1707
+ }
1708
+ }
1709
+ }
1710
+ }
1711
+ }),
1366
1712
  getSiteBingConnection: defineHttpOperation({
1367
1713
  ...gscdumpV1OperationRoute("partner.sites.indexing.bing.connection.get"),
1368
1714
  visibility: "public",
@@ -2126,6 +2472,211 @@ function createGscdumpV1Protocol() {
2126
2472
  }
2127
2473
  }
2128
2474
  }),
2475
+ listSiteWatchedUrls: defineHttpOperation({
2476
+ ...gscdumpV1OperationRoute("partner.sites.indexing.watched.list"),
2477
+ visibility: "public",
2478
+ semantics: {
2479
+ kind: "query",
2480
+ sideEffects: "none",
2481
+ idempotent: true,
2482
+ retry: "idempotent",
2483
+ readConsistency: "primary"
2484
+ },
2485
+ auth: {
2486
+ credentials: ["user_key", "partner_key"],
2487
+ scopes: ["indexing:read"],
2488
+ ownership: [{
2489
+ credential: "user_key",
2490
+ rule: "authorized_site"
2491
+ }, {
2492
+ credential: "partner_key",
2493
+ rule: "authorized_site"
2494
+ }]
2495
+ },
2496
+ request: {
2497
+ params: z.strictObject({ siteId: realtimeSchemas.publicSiteId }),
2498
+ query: null,
2499
+ headers: requestHeaders,
2500
+ body: null
2501
+ },
2502
+ responses: { 200: watchedUrlsResponse },
2503
+ errors: partnerSiteErrors,
2504
+ errorResponse: errorEnvelopeSchemas(partnerSiteErrors, realtimeSchemas.publicRequestId),
2505
+ resources: {
2506
+ reads: [{
2507
+ type: "site.indexing",
2508
+ idFrom: "params.siteId"
2509
+ }],
2510
+ changes: []
2511
+ },
2512
+ lifecycle: { introduced: "4.6.0" },
2513
+ docs: {
2514
+ summary: "List Watched URLs",
2515
+ description: "Returns the Site's Watched URLs. gscdump inspects each one every 7 days, before other scheduled URLs, and never backs off. Each Checkpoint is one scheduled URL Inspection, newest first, with the parsed coverage state and Google's coverage text.",
2516
+ tags: ["Indexing"],
2517
+ examples: {
2518
+ request: { params: { siteId: "s_01" } },
2519
+ response: {
2520
+ data: {
2521
+ watched: [{
2522
+ url: "https://example.com/guide",
2523
+ addedAt: "2026-09-30T00:00:00.000Z",
2524
+ dueAt: "2026-10-07T01:00:00.000Z",
2525
+ checkpoints: [{
2526
+ checkedAt: "2026-09-30T01:00:00.000Z",
2527
+ coverageState: "unknown_to_google",
2528
+ googleCoverageState: "URL is unknown to Google",
2529
+ verdict: "NEUTRAL",
2530
+ lastCrawlTime: null
2531
+ }]
2532
+ }],
2533
+ limit: 50,
2534
+ cadenceDays: 7,
2535
+ meta: { siteUrl: "sc-domain:example.com" }
2536
+ },
2537
+ meta: {
2538
+ requestId: "req_01",
2539
+ surface: "partner",
2540
+ version: "1.0"
2541
+ }
2542
+ }
2543
+ }
2544
+ }
2545
+ }),
2546
+ addSiteWatchedUrls: defineHttpOperation({
2547
+ ...gscdumpV1OperationRoute("partner.sites.indexing.watched.add"),
2548
+ visibility: "public",
2549
+ semantics: {
2550
+ kind: "mutation",
2551
+ sideEffects: "state",
2552
+ idempotent: true,
2553
+ retry: "idempotent",
2554
+ readConsistency: null
2555
+ },
2556
+ auth: {
2557
+ credentials: ["user_key", "partner_key"],
2558
+ scopes: ["indexing:write"],
2559
+ ownership: [{
2560
+ credential: "user_key",
2561
+ rule: "authorized_site"
2562
+ }, {
2563
+ credential: "partner_key",
2564
+ rule: "authorized_site"
2565
+ }]
2566
+ },
2567
+ request: {
2568
+ params: z.strictObject({ siteId: realtimeSchemas.publicSiteId }),
2569
+ query: null,
2570
+ headers: requestHeaders,
2571
+ body: watchedUrlsChangeRequestSchema
2572
+ },
2573
+ responses: { 200: watchedUrlsChangeResponse },
2574
+ errors: partnerSiteErrors,
2575
+ errorResponse: errorEnvelopeSchemas(partnerSiteErrors, realtimeSchemas.publicRequestId),
2576
+ resources: {
2577
+ reads: [{
2578
+ type: "site.indexing",
2579
+ idFrom: "params.siteId"
2580
+ }],
2581
+ changes: [{
2582
+ type: "site.indexing",
2583
+ idFrom: "params.siteId"
2584
+ }]
2585
+ },
2586
+ lifecycle: { introduced: "4.6.0" },
2587
+ docs: {
2588
+ summary: "Add Watched URLs",
2589
+ description: "Adds URLs on the Site host to the Site's Watched URLs, up to 50 per Site. A new Watched URL is due for inspection at once. Each scheduled inspection spends the Site's daily URL Inspection budget and the URL Inspections meter. URLs off the Site host, fragment URLs, and URLs past the limit come back in `skipped`.",
2590
+ tags: ["Indexing"],
2591
+ examples: {
2592
+ request: {
2593
+ params: { siteId: "s_01" },
2594
+ body: { urls: ["https://example.com/guide"] }
2595
+ },
2596
+ response: {
2597
+ data: {
2598
+ changed: ["https://example.com/guide"],
2599
+ unchanged: [],
2600
+ skipped: [],
2601
+ total: 1,
2602
+ limit: 50
2603
+ },
2604
+ meta: {
2605
+ requestId: "req_01",
2606
+ surface: "partner",
2607
+ version: "1.0"
2608
+ }
2609
+ }
2610
+ }
2611
+ }
2612
+ }),
2613
+ removeSiteWatchedUrls: defineHttpOperation({
2614
+ ...gscdumpV1OperationRoute("partner.sites.indexing.watched.remove"),
2615
+ visibility: "public",
2616
+ semantics: {
2617
+ kind: "mutation",
2618
+ sideEffects: "state",
2619
+ idempotent: true,
2620
+ retry: "idempotent",
2621
+ readConsistency: null
2622
+ },
2623
+ auth: {
2624
+ credentials: ["user_key", "partner_key"],
2625
+ scopes: ["indexing:write"],
2626
+ ownership: [{
2627
+ credential: "user_key",
2628
+ rule: "authorized_site"
2629
+ }, {
2630
+ credential: "partner_key",
2631
+ rule: "authorized_site"
2632
+ }]
2633
+ },
2634
+ request: {
2635
+ params: z.strictObject({ siteId: realtimeSchemas.publicSiteId }),
2636
+ query: null,
2637
+ headers: requestHeaders,
2638
+ body: watchedUrlsChangeRequestSchema
2639
+ },
2640
+ responses: { 200: watchedUrlsChangeResponse },
2641
+ errors: partnerSiteErrors,
2642
+ errorResponse: errorEnvelopeSchemas(partnerSiteErrors, realtimeSchemas.publicRequestId),
2643
+ resources: {
2644
+ reads: [{
2645
+ type: "site.indexing",
2646
+ idFrom: "params.siteId"
2647
+ }],
2648
+ changes: [{
2649
+ type: "site.indexing",
2650
+ idFrom: "params.siteId"
2651
+ }]
2652
+ },
2653
+ lifecycle: { introduced: "4.6.0" },
2654
+ docs: {
2655
+ summary: "Remove Watched URLs",
2656
+ description: "Removes URLs from the Site's Watched URLs and deletes their Checkpoints. The stored URL Inspection results stay. URLs that were not watched come back in `unchanged`.",
2657
+ tags: ["Indexing"],
2658
+ examples: {
2659
+ request: {
2660
+ params: { siteId: "s_01" },
2661
+ body: { urls: ["https://example.com/guide"] }
2662
+ },
2663
+ response: {
2664
+ data: {
2665
+ changed: ["https://example.com/guide"],
2666
+ unchanged: [],
2667
+ skipped: [],
2668
+ total: 0,
2669
+ limit: 50
2670
+ },
2671
+ meta: {
2672
+ requestId: "req_01",
2673
+ surface: "partner",
2674
+ version: "1.0"
2675
+ }
2676
+ }
2677
+ }
2678
+ }
2679
+ }),
2129
2680
  recoverSitePermission: defineHttpOperation({
2130
2681
  ...gscdumpV1OperationRoute("partner.sites.permission.recover"),
2131
2682
  visibility: "public",
@@ -4721,9 +5272,14 @@ function createGscdumpV1Protocol() {
4721
5272
  indexingTransitionsResponse,
4722
5273
  indexingUrlsQuery,
4723
5274
  indexingUrlsResponse,
5275
+ watchedUrlsResponse,
5276
+ watchedUrlsChangeResponse,
4724
5277
  bingIndexingEvidenceQuery,
4725
5278
  bingIndexingEvidenceResponse,
4726
5279
  bingConnectionResponse,
5280
+ indexNowConnectionResponse,
5281
+ indexNowSubmissionResponse,
5282
+ indexNowSubmissionReceiptsResponse,
4727
5283
  lifecycleResponse,
4728
5284
  registerSiteRequest,
4729
5285
  sitemapChangesQuery,
@@ -61,6 +61,31 @@ export declare const GSCDUMP_V1_ROUTE_CATALOG: {
61
61
  readonly method: "GET";
62
62
  readonly template: "/sites/{siteId}/indexing/bing/evidence";
63
63
  };
64
+ readonly 'partner.sites.indexing.indexnow.connection.get': {
65
+ readonly surface: "partner";
66
+ readonly method: "GET";
67
+ readonly template: "/sites/{siteId}/indexing/indexnow/connection";
68
+ };
69
+ readonly 'partner.sites.indexing.indexnow.connection.configure': {
70
+ readonly surface: "partner";
71
+ readonly method: "POST";
72
+ readonly template: "/sites/{siteId}/indexing/indexnow/connection";
73
+ };
74
+ readonly 'partner.sites.indexing.indexnow.connection.verify': {
75
+ readonly surface: "partner";
76
+ readonly method: "POST";
77
+ readonly template: "/sites/{siteId}/indexing/indexnow/connection/verify";
78
+ };
79
+ readonly 'partner.sites.indexing.indexnow.submissions.create': {
80
+ readonly surface: "partner";
81
+ readonly method: "POST";
82
+ readonly template: "/sites/{siteId}/indexing/indexnow/submissions";
83
+ };
84
+ readonly 'partner.sites.indexing.indexnow.submissions.list': {
85
+ readonly surface: "partner";
86
+ readonly method: "GET";
87
+ readonly template: "/sites/{siteId}/indexing/indexnow/submissions";
88
+ };
64
89
  readonly 'partner.sites.indexing.bing.connection.get': {
65
90
  readonly surface: "partner";
66
91
  readonly method: "GET";
@@ -116,6 +141,21 @@ export declare const GSCDUMP_V1_ROUTE_CATALOG: {
116
141
  readonly method: "POST";
117
142
  readonly template: "/sites/{siteId}/indexing/inspect";
118
143
  };
144
+ readonly 'partner.sites.indexing.watched.list': {
145
+ readonly surface: "partner";
146
+ readonly method: "GET";
147
+ readonly template: "/sites/{siteId}/indexing/watched";
148
+ };
149
+ readonly 'partner.sites.indexing.watched.add': {
150
+ readonly surface: "partner";
151
+ readonly method: "POST";
152
+ readonly template: "/sites/{siteId}/indexing/watched";
153
+ };
154
+ readonly 'partner.sites.indexing.watched.remove': {
155
+ readonly surface: "partner";
156
+ readonly method: "POST";
157
+ readonly template: "/sites/{siteId}/indexing/watched/remove";
158
+ };
119
159
  readonly 'partner.sites.permission.recover': {
120
160
  readonly surface: "partner";
121
161
  readonly method: "POST";