@gscdump/contracts 4.5.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";
@@ -454,6 +455,8 @@ function createGscdumpV1Protocol() {
454
455
  reason: z.enum(["domain_mismatch", "rate_limited"])
455
456
  }))
456
457
  }), partnerResponseMeta);
458
+ const watchedUrlsResponse = defineSuccessResponse(defineResponseObject(watchedUrlsResponseSchema.shape), partnerResponseMeta);
459
+ const watchedUrlsChangeResponse = defineSuccessResponse(defineResponseObject(watchedUrlsChangeResponseSchema.shape), partnerResponseMeta);
457
460
  const dateRangeQuery = z.strictObject({
458
461
  startDate: calendarDate,
459
462
  endDate: calendarDate
@@ -2469,6 +2472,211 @@ function createGscdumpV1Protocol() {
2469
2472
  }
2470
2473
  }
2471
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
+ }),
2472
2680
  recoverSitePermission: defineHttpOperation({
2473
2681
  ...gscdumpV1OperationRoute("partner.sites.permission.recover"),
2474
2682
  visibility: "public",
@@ -5064,6 +5272,8 @@ function createGscdumpV1Protocol() {
5064
5272
  indexingTransitionsResponse,
5065
5273
  indexingUrlsQuery,
5066
5274
  indexingUrlsResponse,
5275
+ watchedUrlsResponse,
5276
+ watchedUrlsChangeResponse,
5067
5277
  bingIndexingEvidenceQuery,
5068
5278
  bingIndexingEvidenceResponse,
5069
5279
  bingConnectionResponse,
@@ -141,6 +141,21 @@ export declare const GSCDUMP_V1_ROUTE_CATALOG: {
141
141
  readonly method: "POST";
142
142
  readonly template: "/sites/{siteId}/indexing/inspect";
143
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
+ };
144
159
  readonly 'partner.sites.permission.recover': {
145
160
  readonly surface: "partner";
146
161
  readonly method: "POST";
@@ -128,6 +128,21 @@ const GSCDUMP_V1_ROUTE_CATALOG = {
128
128
  method: "POST",
129
129
  template: "/sites/{siteId}/indexing/inspect"
130
130
  },
131
+ "partner.sites.indexing.watched.list": {
132
+ surface: "partner",
133
+ method: "GET",
134
+ template: "/sites/{siteId}/indexing/watched"
135
+ },
136
+ "partner.sites.indexing.watched.add": {
137
+ surface: "partner",
138
+ method: "POST",
139
+ template: "/sites/{siteId}/indexing/watched"
140
+ },
141
+ "partner.sites.indexing.watched.remove": {
142
+ surface: "partner",
143
+ method: "POST",
144
+ template: "/sites/{siteId}/indexing/watched/remove"
145
+ },
131
146
  "partner.sites.permission.recover": {
132
147
  surface: "partner",
133
148
  method: "POST",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gscdump/contracts",
3
3
  "type": "module",
4
- "version": "4.5.0",
4
+ "version": "4.6.0",
5
5
  "description": "Shared gscdump.com API, webhook, realtime, and lifecycle contracts.",
6
6
  "author": {
7
7
  "name": "Harlan Wilton",