@nuxtseo/protocol 0.4.0 → 0.5.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.
@@ -361,6 +361,35 @@ export const liveBacklinksQuerySchema = schema.strictObject({
361
361
  limit: schema.coerce.number().int().min(1).max(1000).default(100),
362
362
  });
363
363
  const nullableCount = schema.number().nullable();
364
+ /**
365
+ * A Link Spam Network: referring domains that each place one generated anchor
366
+ * with the Site's host written into it, one link per domain. It is read from
367
+ * the retained Backlinks rows, never from `spamScore`. Google ignores most
368
+ * links like these, so the summary counts them apart from the profile.
369
+ */
370
+ export const linkSpamNetworkSchema = defineResponseObject({
371
+ /** Stable for one anchor template on one Site. */
372
+ id: schema.string().min(1),
373
+ /** The anchor as the provider reported it, with the Site's host in it. */
374
+ anchor: schema.string().min(1),
375
+ referringDomains: schema.number().int().nonnegative(),
376
+ backlinks: schema.number().int().nonnegative(),
377
+ /** When the provider first saw the anchor. */
378
+ firstSeen: schema.string().nullable(),
379
+ /** When the newest sampled member domain was first seen. */
380
+ latestSeen: schema.string().nullable(),
381
+ /** The linking page path every sampled member shares, or null when they differ. */
382
+ linkingPath: schema.string().nullable(),
383
+ /** Paths on the Site that the sampled members link to, most linked first. */
384
+ targetPaths: schema.array(schema.string()),
385
+ /** Other Sites whose anchors carry the same template. */
386
+ otherSites: schema.number().int().nonnegative(),
387
+ });
388
+ /** The profile totals with every Link Spam Network removed. */
389
+ const profileWithoutNetworksSchema = defineResponseObject({
390
+ referringDomains: schema.number().int().nonnegative(),
391
+ backlinks: schema.number().int().nonnegative(),
392
+ });
364
393
  export const backlinksSummaryDataSchema = defineResponseObject({
365
394
  target: schema.string().min(1),
366
395
  rank: nullableCount,
@@ -375,6 +404,21 @@ export const backlinksSummaryDataSchema = defineResponseObject({
375
404
  referringIps: nullableCount,
376
405
  referringSubnets: nullableCount,
377
406
  referringPages: nullableCount,
407
+ /**
408
+ * The Site's Link Spam Networks, largest first. Empty for most Sites. The
409
+ * counts above still include them.
410
+ *
411
+ * A producer must send it and `withoutLinkSpamNetworks`. A client treats
412
+ * both as optional, because a client newer than the deployed server reads
413
+ * answers that predate the fields.
414
+ */
415
+ linkSpamNetworks: schema.array(linkSpamNetworkSchema.producer),
416
+ /**
417
+ * `referringDomains` and `backlinks` without the networks. Null when the
418
+ * Site has no network, or when the provider returned no total to subtract
419
+ * from.
420
+ */
421
+ withoutLinkSpamNetworks: profileWithoutNetworksSchema.producer.nullable(),
378
422
  evidence: liveBacklinksEvidenceProducerSchema,
379
423
  }, {
380
424
  target: schema.string().min(1),
@@ -390,6 +434,8 @@ export const backlinksSummaryDataSchema = defineResponseObject({
390
434
  referringIps: nullableCount,
391
435
  referringSubnets: nullableCount,
392
436
  referringPages: nullableCount,
437
+ linkSpamNetworks: schema.array(linkSpamNetworkSchema.client).optional(),
438
+ withoutLinkSpamNetworks: profileWithoutNetworksSchema.client.nullable().optional(),
393
439
  evidence: liveBacklinksEvidenceClientSchema,
394
440
  });
395
441
  export const backlinksSummaryResponseSchema = defineSuccessEnvelope(backlinksSummaryDataSchema);
@@ -409,7 +455,7 @@ export const backlinksSummaryOperation = defineOperation({
409
455
  lifecycle: { introduced: '1.2.0' },
410
456
  docs: {
411
457
  summary: 'Get Backlinks summary',
412
- description: 'Returns whole-domain inbound link totals for the Site: backlinks, referring domains, broken counts, and the domain rank. Cached reads consume no units.',
458
+ description: 'Returns whole-domain inbound link totals for the Site: backlinks, referring domains, broken counts, and the domain rank. It also lists the link spam networks in the retained rows, and the totals without them. Cached reads consume no units.',
413
459
  tags: ['Research'],
414
460
  examples: [{
415
461
  request: { params: { siteId: 'site_01JXYZ' } },
@@ -430,6 +476,18 @@ export const backlinksSummaryOperation = defineOperation({
430
476
  referringIps: 350,
431
477
  referringSubnets: 322,
432
478
  referringPages: 4800,
479
+ linkSpamNetworks: [{
480
+ id: 'lsn_5d1c07a2',
481
+ anchor: 'Premium SEO Link Building Experts Helping example.com Websites Rank Higher',
482
+ referringDomains: 42,
483
+ backlinks: 42,
484
+ firstSeen: '2026-08-02T00:00:00.000Z',
485
+ latestSeen: '2026-09-20T00:00:00.000Z',
486
+ linkingPath: '/dir/organic-visibility-backlinks-86677',
487
+ targetPaths: ['/'],
488
+ otherSites: 201,
489
+ }],
490
+ withoutLinkSpamNetworks: { referringDomains: 370, backlinks: 5078 },
433
491
  evidence: { _tag: 'live', provider: 'dataforseo', spend: { key: 'dataforseo', units: 1 } },
434
492
  },
435
493
  meta: { requestId: 'req_01JXYZ', version: '1.0' },
@@ -450,6 +508,14 @@ export const referringDomainSchema = defineResponseObject({
450
508
  lostDate: schema.string().nullable(),
451
509
  /** 90-day referral sessions from this domain, or null when no Web Analytics property is linked. */
452
510
  sessions: nullableCount,
511
+ /**
512
+ * The id of the Link Spam Network this domain is a known member of, as in
513
+ * the summary's `linkSpamNetworks`. `null` means not known to be in one,
514
+ * never verified clean: membership is known only for the domains the
515
+ * retained rows sampled or the Timeline recorded. A producer must send it;
516
+ * a client treats it as optional, because older servers do not.
517
+ */
518
+ linkSpamNetworkId: schema.string().min(1).nullable(),
453
519
  }, {
454
520
  domain: schema.string().min(1),
455
521
  rank: nullableCount,
@@ -461,6 +527,7 @@ export const referringDomainSchema = defineResponseObject({
461
527
  firstSeen: schema.string().nullable(),
462
528
  lostDate: schema.string().nullable(),
463
529
  sessions: nullableCount,
530
+ linkSpamNetworkId: schema.string().min(1).nullable().optional(),
464
531
  });
465
532
  export const referringDomainsDataSchema = defineResponseObject({
466
533
  target: schema.string().min(1),
@@ -492,7 +559,7 @@ export const referringDomainsOperation = defineOperation({
492
559
  lifecycle: { introduced: '1.2.0' },
493
560
  docs: {
494
561
  summary: 'List referring domains',
495
- description: 'Returns the domains that link to the Site, highest authority first, with spam score and broken-link counts. When a Web Analytics property is linked, each row also carries its 90-day referral sessions, so a link that sends nobody is visible. Cached reads consume no units.',
562
+ description: 'Returns the domains that link to the Site, highest authority first, with spam score and broken-link counts. When a Web Analytics property is linked, each row also carries its 90-day referral sessions, so a link that sends nobody is visible. A row that is a known member of a link spam network carries its id. Cached reads consume no units.',
496
563
  tags: ['Research'],
497
564
  examples: [{
498
565
  request: { params: { siteId: 'site_01JXYZ' }, query: { limit: 100 } },
@@ -512,6 +579,7 @@ export const referringDomainsOperation = defineOperation({
512
579
  firstSeen: '2026-02-09 20:43:50 +00:00',
513
580
  lostDate: null,
514
581
  sessions: 143,
582
+ linkSpamNetworkId: null,
515
583
  }],
516
584
  total: 1,
517
585
  limit: 100,
@@ -533,6 +601,14 @@ export const backlinkAnchorSchema = defineResponseObject({
533
601
  spamScore: nullableCount,
534
602
  firstSeen: schema.string().nullable(),
535
603
  lostDate: schema.string().nullable(),
604
+ /**
605
+ * The id of the Link Spam Network whose generated sentence this anchor is,
606
+ * as in the summary's `linkSpamNetworks`. Exact, because the anchor is the
607
+ * evidence. `null` means not known to be in one, never verified clean. A
608
+ * producer must send it; a client treats it as optional, because older
609
+ * servers do not.
610
+ */
611
+ linkSpamNetworkId: schema.string().min(1).nullable(),
536
612
  }, {
537
613
  anchor: schema.string(),
538
614
  rank: nullableCount,
@@ -543,6 +619,7 @@ export const backlinkAnchorSchema = defineResponseObject({
543
619
  spamScore: nullableCount,
544
620
  firstSeen: schema.string().nullable(),
545
621
  lostDate: schema.string().nullable(),
622
+ linkSpamNetworkId: schema.string().min(1).nullable().optional(),
546
623
  });
547
624
  export const backlinkAnchorsDataSchema = defineResponseObject({
548
625
  target: schema.string().min(1),
@@ -574,7 +651,7 @@ export const backlinkAnchorsOperation = defineOperation({
574
651
  lifecycle: { introduced: '1.2.0' },
575
652
  docs: {
576
653
  summary: 'List Backlink anchors',
577
- description: 'Returns the anchor text distribution of the Site inbound links, most linked first. Use it to find over-optimised or off-brand anchors. Cached reads consume no units.',
654
+ description: 'Returns the anchor text distribution of the Site inbound links, most linked first. Use it to find over-optimised or off-brand anchors. An anchor that is the generated sentence of a link spam network carries its id. Cached reads consume no units.',
578
655
  tags: ['Research'],
579
656
  examples: [{
580
657
  request: { params: { siteId: 'site_01JXYZ' }, query: { limit: 100 } },
@@ -593,6 +670,7 @@ export const backlinkAnchorsOperation = defineOperation({
593
670
  spamScore: 3,
594
671
  firstSeen: '2026-01-04 11:02:11 +00:00',
595
672
  lostDate: null,
673
+ linkSpamNetworkId: null,
596
674
  }],
597
675
  total: 1,
598
676
  limit: 100,
package/dist/v1/gsc.d.ts CHANGED
@@ -1671,6 +1671,19 @@ export declare const indexingDiagnosticsDataSchema: {
1671
1671
  readonly totalUrls: z.ZodNumber;
1672
1672
  readonly indexed: z.ZodNumber;
1673
1673
  readonly asOf: z.ZodNullable<z.ZodString>;
1674
+ /** Where `asOf` came from: `rollup` build time, `capture` (when gscdump counted the verdicts), or the `newest-check` URL inspection. Null when the age is unknown. */
1675
+ readonly asOfSource: z.ZodNullable<z.ZodEnum<{
1676
+ capture: "capture";
1677
+ "newest-check": "newest-check";
1678
+ rollup: "rollup";
1679
+ }>>;
1680
+ /** The oldest URL inspection behind these counts. With `asOf` it bounds the evidence age. Null when unknown. */
1681
+ readonly oldestCheckAt: z.ZodNullable<z.ZodString>;
1682
+ /** Share of the counted verdicts older than 7 and 30 days when `asOf` was set. Null when gscdump did not measure verdict age. */
1683
+ readonly verdictFreshness: z.ZodNullable<z.ZodObject<{
1684
+ olderThan7dPercent: z.ZodNumber;
1685
+ olderThan30dPercent: z.ZodNumber;
1686
+ }, z.core.$strip>>;
1674
1687
  readonly issues: z.ZodArray<z.ZodObject<{
1675
1688
  type: z.ZodString;
1676
1689
  label: z.ZodString;
@@ -1705,6 +1718,19 @@ export declare const indexingDiagnosticsDataSchema: {
1705
1718
  readonly totalUrls: z.ZodNumber;
1706
1719
  readonly indexed: z.ZodNumber;
1707
1720
  readonly asOf: z.ZodNullable<z.ZodString>;
1721
+ /** Where `asOf` came from: `rollup` build time, `capture` (when gscdump counted the verdicts), or the `newest-check` URL inspection. Null when the age is unknown. */
1722
+ readonly asOfSource: z.ZodNullable<z.ZodEnum<{
1723
+ capture: "capture";
1724
+ "newest-check": "newest-check";
1725
+ rollup: "rollup";
1726
+ }>>;
1727
+ /** The oldest URL inspection behind these counts. With `asOf` it bounds the evidence age. Null when unknown. */
1728
+ readonly oldestCheckAt: z.ZodNullable<z.ZodString>;
1729
+ /** Share of the counted verdicts older than 7 and 30 days when `asOf` was set. Null when gscdump did not measure verdict age. */
1730
+ readonly verdictFreshness: z.ZodNullable<z.ZodObject<{
1731
+ olderThan7dPercent: z.ZodNumber;
1732
+ olderThan30dPercent: z.ZodNumber;
1733
+ }, z.core.$strip>>;
1708
1734
  readonly issues: z.ZodArray<z.ZodObject<{
1709
1735
  type: z.ZodString;
1710
1736
  label: z.ZodString;
@@ -1741,6 +1767,19 @@ export declare const indexingDiagnosticsResponseSchema: import("./core.js").Comp
1741
1767
  readonly totalUrls: z.ZodNumber;
1742
1768
  readonly indexed: z.ZodNumber;
1743
1769
  readonly asOf: z.ZodNullable<z.ZodString>;
1770
+ /** Where `asOf` came from: `rollup` build time, `capture` (when gscdump counted the verdicts), or the `newest-check` URL inspection. Null when the age is unknown. */
1771
+ readonly asOfSource: z.ZodNullable<z.ZodEnum<{
1772
+ capture: "capture";
1773
+ "newest-check": "newest-check";
1774
+ rollup: "rollup";
1775
+ }>>;
1776
+ /** The oldest URL inspection behind these counts. With `asOf` it bounds the evidence age. Null when unknown. */
1777
+ readonly oldestCheckAt: z.ZodNullable<z.ZodString>;
1778
+ /** Share of the counted verdicts older than 7 and 30 days when `asOf` was set. Null when gscdump did not measure verdict age. */
1779
+ readonly verdictFreshness: z.ZodNullable<z.ZodObject<{
1780
+ olderThan7dPercent: z.ZodNumber;
1781
+ olderThan30dPercent: z.ZodNumber;
1782
+ }, z.core.$strip>>;
1744
1783
  readonly issues: z.ZodArray<z.ZodObject<{
1745
1784
  type: z.ZodString;
1746
1785
  label: z.ZodString;
@@ -1780,6 +1819,19 @@ export declare const indexingDiagnosticsResponseSchema: import("./core.js").Comp
1780
1819
  readonly totalUrls: z.ZodNumber;
1781
1820
  readonly indexed: z.ZodNumber;
1782
1821
  readonly asOf: z.ZodNullable<z.ZodString>;
1822
+ /** Where `asOf` came from: `rollup` build time, `capture` (when gscdump counted the verdicts), or the `newest-check` URL inspection. Null when the age is unknown. */
1823
+ readonly asOfSource: z.ZodNullable<z.ZodEnum<{
1824
+ capture: "capture";
1825
+ "newest-check": "newest-check";
1826
+ rollup: "rollup";
1827
+ }>>;
1828
+ /** The oldest URL inspection behind these counts. With `asOf` it bounds the evidence age. Null when unknown. */
1829
+ readonly oldestCheckAt: z.ZodNullable<z.ZodString>;
1830
+ /** Share of the counted verdicts older than 7 and 30 days when `asOf` was set. Null when gscdump did not measure verdict age. */
1831
+ readonly verdictFreshness: z.ZodNullable<z.ZodObject<{
1832
+ olderThan7dPercent: z.ZodNumber;
1833
+ olderThan30dPercent: z.ZodNumber;
1834
+ }, z.core.$strip>>;
1783
1835
  readonly issues: z.ZodArray<z.ZodObject<{
1784
1836
  type: z.ZodString;
1785
1837
  label: z.ZodString;
@@ -1817,9 +1869,9 @@ export declare const indexingDiagnosticsResponseSchema: import("./core.js").Comp
1817
1869
  export declare const indexingHistoryQuerySchema: z.ZodObject<{
1818
1870
  url: z.ZodOptional<z.ZodString>;
1819
1871
  field: z.ZodOptional<z.ZodEnum<{
1872
+ coverageState: "coverageState";
1820
1873
  indexStatus: "indexStatus";
1821
1874
  googleCanonical: "googleCanonical";
1822
- coverageState: "coverageState";
1823
1875
  robotsTxtState: "robotsTxtState";
1824
1876
  indexingState: "indexingState";
1825
1877
  pageFetchState: "pageFetchState";
@@ -1833,9 +1885,9 @@ export declare const indexingHistoryDataSchema: import("./core.js").CompatibleRe
1833
1885
  }, z.core.$strict>, z.ZodObject<{
1834
1886
  _tag: z.ZodLiteral<"site">;
1835
1887
  field: z.ZodEnum<{
1888
+ coverageState: "coverageState";
1836
1889
  indexStatus: "indexStatus";
1837
1890
  googleCanonical: "googleCanonical";
1838
- coverageState: "coverageState";
1839
1891
  robotsTxtState: "robotsTxtState";
1840
1892
  indexingState: "indexingState";
1841
1893
  pageFetchState: "pageFetchState";
@@ -1853,9 +1905,9 @@ export declare const indexingHistoryDataSchema: import("./core.js").CompatibleRe
1853
1905
  readonly changes: z.ZodArray<z.ZodObject<{
1854
1906
  readonly url: z.ZodString;
1855
1907
  readonly field: z.ZodEnum<{
1908
+ coverageState: "coverageState";
1856
1909
  indexStatus: "indexStatus";
1857
1910
  googleCanonical: "googleCanonical";
1858
- coverageState: "coverageState";
1859
1911
  robotsTxtState: "robotsTxtState";
1860
1912
  indexingState: "indexingState";
1861
1913
  pageFetchState: "pageFetchState";
@@ -1896,9 +1948,9 @@ export declare const indexingHistoryDataSchema: import("./core.js").CompatibleRe
1896
1948
  }, z.core.$loose>, z.ZodObject<{
1897
1949
  _tag: z.ZodLiteral<"site">;
1898
1950
  field: z.ZodEnum<{
1951
+ coverageState: "coverageState";
1899
1952
  indexStatus: "indexStatus";
1900
1953
  googleCanonical: "googleCanonical";
1901
- coverageState: "coverageState";
1902
1954
  robotsTxtState: "robotsTxtState";
1903
1955
  indexingState: "indexingState";
1904
1956
  pageFetchState: "pageFetchState";
@@ -1916,9 +1968,9 @@ export declare const indexingHistoryDataSchema: import("./core.js").CompatibleRe
1916
1968
  readonly changes: z.ZodArray<z.ZodObject<{
1917
1969
  readonly url: z.ZodString;
1918
1970
  readonly field: z.ZodEnum<{
1971
+ coverageState: "coverageState";
1919
1972
  indexStatus: "indexStatus";
1920
1973
  googleCanonical: "googleCanonical";
1921
- coverageState: "coverageState";
1922
1974
  robotsTxtState: "robotsTxtState";
1923
1975
  indexingState: "indexingState";
1924
1976
  pageFetchState: "pageFetchState";
@@ -1961,9 +2013,9 @@ export declare const indexingHistoryResponseSchema: import("./core.js").Compatib
1961
2013
  }, z.core.$strict>, z.ZodObject<{
1962
2014
  _tag: z.ZodLiteral<"site">;
1963
2015
  field: z.ZodEnum<{
2016
+ coverageState: "coverageState";
1964
2017
  indexStatus: "indexStatus";
1965
2018
  googleCanonical: "googleCanonical";
1966
- coverageState: "coverageState";
1967
2019
  robotsTxtState: "robotsTxtState";
1968
2020
  indexingState: "indexingState";
1969
2021
  pageFetchState: "pageFetchState";
@@ -1981,9 +2033,9 @@ export declare const indexingHistoryResponseSchema: import("./core.js").Compatib
1981
2033
  readonly changes: z.ZodArray<z.ZodObject<{
1982
2034
  readonly url: z.ZodString;
1983
2035
  readonly field: z.ZodEnum<{
2036
+ coverageState: "coverageState";
1984
2037
  indexStatus: "indexStatus";
1985
2038
  googleCanonical: "googleCanonical";
1986
- coverageState: "coverageState";
1987
2039
  robotsTxtState: "robotsTxtState";
1988
2040
  indexingState: "indexingState";
1989
2041
  pageFetchState: "pageFetchState";
@@ -2030,9 +2082,9 @@ export declare const indexingHistoryResponseSchema: import("./core.js").Compatib
2030
2082
  }, z.core.$loose>, z.ZodObject<{
2031
2083
  _tag: z.ZodLiteral<"site">;
2032
2084
  field: z.ZodEnum<{
2085
+ coverageState: "coverageState";
2033
2086
  indexStatus: "indexStatus";
2034
2087
  googleCanonical: "googleCanonical";
2035
- coverageState: "coverageState";
2036
2088
  robotsTxtState: "robotsTxtState";
2037
2089
  indexingState: "indexingState";
2038
2090
  pageFetchState: "pageFetchState";
@@ -2050,9 +2102,9 @@ export declare const indexingHistoryResponseSchema: import("./core.js").Compatib
2050
2102
  readonly changes: z.ZodArray<z.ZodObject<{
2051
2103
  readonly url: z.ZodString;
2052
2104
  readonly field: z.ZodEnum<{
2105
+ coverageState: "coverageState";
2053
2106
  indexStatus: "indexStatus";
2054
2107
  googleCanonical: "googleCanonical";
2055
- coverageState: "coverageState";
2056
2108
  robotsTxtState: "robotsTxtState";
2057
2109
  indexingState: "indexingState";
2058
2110
  pageFetchState: "pageFetchState";
@@ -3519,6 +3571,19 @@ export declare const indexingDiagnosticsReadOperation: {
3519
3571
  readonly totalUrls: z.ZodNumber;
3520
3572
  readonly indexed: z.ZodNumber;
3521
3573
  readonly asOf: z.ZodNullable<z.ZodString>;
3574
+ /** Where `asOf` came from: `rollup` build time, `capture` (when gscdump counted the verdicts), or the `newest-check` URL inspection. Null when the age is unknown. */
3575
+ readonly asOfSource: z.ZodNullable<z.ZodEnum<{
3576
+ capture: "capture";
3577
+ "newest-check": "newest-check";
3578
+ rollup: "rollup";
3579
+ }>>;
3580
+ /** The oldest URL inspection behind these counts. With `asOf` it bounds the evidence age. Null when unknown. */
3581
+ readonly oldestCheckAt: z.ZodNullable<z.ZodString>;
3582
+ /** Share of the counted verdicts older than 7 and 30 days when `asOf` was set. Null when gscdump did not measure verdict age. */
3583
+ readonly verdictFreshness: z.ZodNullable<z.ZodObject<{
3584
+ olderThan7dPercent: z.ZodNumber;
3585
+ olderThan30dPercent: z.ZodNumber;
3586
+ }, z.core.$strip>>;
3522
3587
  readonly issues: z.ZodArray<z.ZodObject<{
3523
3588
  type: z.ZodString;
3524
3589
  label: z.ZodString;
@@ -3558,6 +3623,19 @@ export declare const indexingDiagnosticsReadOperation: {
3558
3623
  readonly totalUrls: z.ZodNumber;
3559
3624
  readonly indexed: z.ZodNumber;
3560
3625
  readonly asOf: z.ZodNullable<z.ZodString>;
3626
+ /** Where `asOf` came from: `rollup` build time, `capture` (when gscdump counted the verdicts), or the `newest-check` URL inspection. Null when the age is unknown. */
3627
+ readonly asOfSource: z.ZodNullable<z.ZodEnum<{
3628
+ capture: "capture";
3629
+ "newest-check": "newest-check";
3630
+ rollup: "rollup";
3631
+ }>>;
3632
+ /** The oldest URL inspection behind these counts. With `asOf` it bounds the evidence age. Null when unknown. */
3633
+ readonly oldestCheckAt: z.ZodNullable<z.ZodString>;
3634
+ /** Share of the counted verdicts older than 7 and 30 days when `asOf` was set. Null when gscdump did not measure verdict age. */
3635
+ readonly verdictFreshness: z.ZodNullable<z.ZodObject<{
3636
+ olderThan7dPercent: z.ZodNumber;
3637
+ olderThan30dPercent: z.ZodNumber;
3638
+ }, z.core.$strip>>;
3561
3639
  readonly issues: z.ZodArray<z.ZodObject<{
3562
3640
  type: z.ZodString;
3563
3641
  label: z.ZodString;
@@ -3621,6 +3699,12 @@ export declare const indexingDiagnosticsReadOperation: {
3621
3699
  readonly totalUrls: 100;
3622
3700
  readonly indexed: 92;
3623
3701
  readonly asOf: '2026-08-10T00:00:00.000Z';
3702
+ readonly asOfSource: 'newest-check';
3703
+ readonly oldestCheckAt: '2026-07-01T00:00:00.000Z';
3704
+ readonly verdictFreshness: {
3705
+ readonly olderThan7dPercent: 87.4;
3706
+ readonly olderThan30dPercent: 60.5;
3707
+ };
3624
3708
  readonly issues: readonly [];
3625
3709
  };
3626
3710
  readonly meta: {
@@ -3719,9 +3803,9 @@ export declare const indexingHistoryReadOperation: {
3719
3803
  readonly query: z.ZodObject<{
3720
3804
  url: z.ZodOptional<z.ZodString>;
3721
3805
  field: z.ZodOptional<z.ZodEnum<{
3806
+ coverageState: "coverageState";
3722
3807
  indexStatus: "indexStatus";
3723
3808
  googleCanonical: "googleCanonical";
3724
- coverageState: "coverageState";
3725
3809
  robotsTxtState: "robotsTxtState";
3726
3810
  indexingState: "indexingState";
3727
3811
  pageFetchState: "pageFetchState";
@@ -3740,9 +3824,9 @@ export declare const indexingHistoryReadOperation: {
3740
3824
  }, z.core.$strict>, z.ZodObject<{
3741
3825
  _tag: z.ZodLiteral<"site">;
3742
3826
  field: z.ZodEnum<{
3827
+ coverageState: "coverageState";
3743
3828
  indexStatus: "indexStatus";
3744
3829
  googleCanonical: "googleCanonical";
3745
- coverageState: "coverageState";
3746
3830
  robotsTxtState: "robotsTxtState";
3747
3831
  indexingState: "indexingState";
3748
3832
  pageFetchState: "pageFetchState";
@@ -3760,9 +3844,9 @@ export declare const indexingHistoryReadOperation: {
3760
3844
  readonly changes: z.ZodArray<z.ZodObject<{
3761
3845
  readonly url: z.ZodString;
3762
3846
  readonly field: z.ZodEnum<{
3847
+ coverageState: "coverageState";
3763
3848
  indexStatus: "indexStatus";
3764
3849
  googleCanonical: "googleCanonical";
3765
- coverageState: "coverageState";
3766
3850
  robotsTxtState: "robotsTxtState";
3767
3851
  indexingState: "indexingState";
3768
3852
  pageFetchState: "pageFetchState";
@@ -3809,9 +3893,9 @@ export declare const indexingHistoryReadOperation: {
3809
3893
  }, z.core.$loose>, z.ZodObject<{
3810
3894
  _tag: z.ZodLiteral<"site">;
3811
3895
  field: z.ZodEnum<{
3896
+ coverageState: "coverageState";
3812
3897
  indexStatus: "indexStatus";
3813
3898
  googleCanonical: "googleCanonical";
3814
- coverageState: "coverageState";
3815
3899
  robotsTxtState: "robotsTxtState";
3816
3900
  indexingState: "indexingState";
3817
3901
  pageFetchState: "pageFetchState";
@@ -3829,9 +3913,9 @@ export declare const indexingHistoryReadOperation: {
3829
3913
  readonly changes: z.ZodArray<z.ZodObject<{
3830
3914
  readonly url: z.ZodString;
3831
3915
  readonly field: z.ZodEnum<{
3916
+ coverageState: "coverageState";
3832
3917
  indexStatus: "indexStatus";
3833
3918
  googleCanonical: "googleCanonical";
3834
- coverageState: "coverageState";
3835
3919
  robotsTxtState: "robotsTxtState";
3836
3920
  indexingState: "indexingState";
3837
3921
  pageFetchState: "pageFetchState";
@@ -4211,7 +4295,7 @@ export declare const indexCohortsDataSchema: import("./core.js").CompatibleRespo
4211
4295
  }, z.core.$strict>>;
4212
4296
  readonly coverage: z.ZodNullable<z.ZodObject<{
4213
4297
  analysed: z.ZodNumber;
4214
- notIndexedButNeverCrawled: z.ZodNumber;
4298
+ notIndexedNotInCrawl: z.ZodNumber;
4215
4299
  excludedFragments: z.ZodNumber;
4216
4300
  }, z.core.$strict>>;
4217
4301
  readonly method: z.ZodNullable<z.ZodString>;
@@ -4259,7 +4343,7 @@ export declare const indexCohortsDataSchema: import("./core.js").CompatibleRespo
4259
4343
  }, z.core.$loose>>;
4260
4344
  readonly coverage: z.ZodNullable<z.ZodObject<{
4261
4345
  analysed: z.ZodNumber;
4262
- notIndexedButNeverCrawled: z.ZodNumber;
4346
+ notIndexedNotInCrawl: z.ZodNumber;
4263
4347
  excludedFragments: z.ZodNumber;
4264
4348
  }, z.core.$loose>>;
4265
4349
  readonly method: z.ZodNullable<z.ZodString>;
@@ -4302,7 +4386,7 @@ export declare const indexCohortsResponseEnvelopeSchema: import("./core.js").Com
4302
4386
  }, z.core.$strict>>;
4303
4387
  readonly coverage: z.ZodNullable<z.ZodObject<{
4304
4388
  analysed: z.ZodNumber;
4305
- notIndexedButNeverCrawled: z.ZodNumber;
4389
+ notIndexedNotInCrawl: z.ZodNumber;
4306
4390
  excludedFragments: z.ZodNumber;
4307
4391
  }, z.core.$strict>>;
4308
4392
  readonly method: z.ZodNullable<z.ZodString>;
@@ -4356,7 +4440,7 @@ export declare const indexCohortsResponseEnvelopeSchema: import("./core.js").Com
4356
4440
  }, z.core.$loose>>;
4357
4441
  readonly coverage: z.ZodNullable<z.ZodObject<{
4358
4442
  analysed: z.ZodNumber;
4359
- notIndexedButNeverCrawled: z.ZodNumber;
4443
+ notIndexedNotInCrawl: z.ZodNumber;
4360
4444
  excludedFragments: z.ZodNumber;
4361
4445
  }, z.core.$loose>>;
4362
4446
  readonly method: z.ZodNullable<z.ZodString>;
@@ -4434,7 +4518,7 @@ export declare const indexCohortsReadOperation: {
4434
4518
  }, z.core.$strict>>;
4435
4519
  readonly coverage: z.ZodNullable<z.ZodObject<{
4436
4520
  analysed: z.ZodNumber;
4437
- notIndexedButNeverCrawled: z.ZodNumber;
4521
+ notIndexedNotInCrawl: z.ZodNumber;
4438
4522
  excludedFragments: z.ZodNumber;
4439
4523
  }, z.core.$strict>>;
4440
4524
  readonly method: z.ZodNullable<z.ZodString>;
@@ -4488,7 +4572,7 @@ export declare const indexCohortsReadOperation: {
4488
4572
  }, z.core.$loose>>;
4489
4573
  readonly coverage: z.ZodNullable<z.ZodObject<{
4490
4574
  analysed: z.ZodNumber;
4491
- notIndexedButNeverCrawled: z.ZodNumber;
4575
+ notIndexedNotInCrawl: z.ZodNumber;
4492
4576
  excludedFragments: z.ZodNumber;
4493
4577
  }, z.core.$loose>>;
4494
4578
  readonly method: z.ZodNullable<z.ZodString>;
@@ -4623,7 +4707,7 @@ export declare const indexCohortsReadOperation: {
4623
4707
  };
4624
4708
  readonly coverage: {
4625
4709
  readonly analysed: 1200;
4626
- readonly notIndexedButNeverCrawled: 40;
4710
+ readonly notIndexedNotInCrawl: 40;
4627
4711
  readonly excludedFragments: 2;
4628
4712
  };
4629
4713
  readonly method: 'Wilson score interval per family against its own complement, Bonferroni-corrected across 9 tested families (critical value z=2.77).';
@@ -5906,6 +5990,19 @@ export declare const searchV1Registry: import("./core.js").PublicV1Registry<{
5906
5990
  readonly totalUrls: z.ZodNumber;
5907
5991
  readonly indexed: z.ZodNumber;
5908
5992
  readonly asOf: z.ZodNullable<z.ZodString>;
5993
+ /** Where `asOf` came from: `rollup` build time, `capture` (when gscdump counted the verdicts), or the `newest-check` URL inspection. Null when the age is unknown. */
5994
+ readonly asOfSource: z.ZodNullable<z.ZodEnum<{
5995
+ capture: "capture";
5996
+ "newest-check": "newest-check";
5997
+ rollup: "rollup";
5998
+ }>>;
5999
+ /** The oldest URL inspection behind these counts. With `asOf` it bounds the evidence age. Null when unknown. */
6000
+ readonly oldestCheckAt: z.ZodNullable<z.ZodString>;
6001
+ /** Share of the counted verdicts older than 7 and 30 days when `asOf` was set. Null when gscdump did not measure verdict age. */
6002
+ readonly verdictFreshness: z.ZodNullable<z.ZodObject<{
6003
+ olderThan7dPercent: z.ZodNumber;
6004
+ olderThan30dPercent: z.ZodNumber;
6005
+ }, z.core.$strip>>;
5909
6006
  readonly issues: z.ZodArray<z.ZodObject<{
5910
6007
  type: z.ZodString;
5911
6008
  label: z.ZodString;
@@ -5945,6 +6042,19 @@ export declare const searchV1Registry: import("./core.js").PublicV1Registry<{
5945
6042
  readonly totalUrls: z.ZodNumber;
5946
6043
  readonly indexed: z.ZodNumber;
5947
6044
  readonly asOf: z.ZodNullable<z.ZodString>;
6045
+ /** Where `asOf` came from: `rollup` build time, `capture` (when gscdump counted the verdicts), or the `newest-check` URL inspection. Null when the age is unknown. */
6046
+ readonly asOfSource: z.ZodNullable<z.ZodEnum<{
6047
+ capture: "capture";
6048
+ "newest-check": "newest-check";
6049
+ rollup: "rollup";
6050
+ }>>;
6051
+ /** The oldest URL inspection behind these counts. With `asOf` it bounds the evidence age. Null when unknown. */
6052
+ readonly oldestCheckAt: z.ZodNullable<z.ZodString>;
6053
+ /** Share of the counted verdicts older than 7 and 30 days when `asOf` was set. Null when gscdump did not measure verdict age. */
6054
+ readonly verdictFreshness: z.ZodNullable<z.ZodObject<{
6055
+ olderThan7dPercent: z.ZodNumber;
6056
+ olderThan30dPercent: z.ZodNumber;
6057
+ }, z.core.$strip>>;
5948
6058
  readonly issues: z.ZodArray<z.ZodObject<{
5949
6059
  type: z.ZodString;
5950
6060
  label: z.ZodString;
@@ -6008,6 +6118,12 @@ export declare const searchV1Registry: import("./core.js").PublicV1Registry<{
6008
6118
  readonly totalUrls: 100;
6009
6119
  readonly indexed: 92;
6010
6120
  readonly asOf: '2026-08-10T00:00:00.000Z';
6121
+ readonly asOfSource: 'newest-check';
6122
+ readonly oldestCheckAt: '2026-07-01T00:00:00.000Z';
6123
+ readonly verdictFreshness: {
6124
+ readonly olderThan7dPercent: 87.4;
6125
+ readonly olderThan30dPercent: 60.5;
6126
+ };
6011
6127
  readonly issues: readonly [];
6012
6128
  };
6013
6129
  readonly meta: {
@@ -6106,9 +6222,9 @@ export declare const searchV1Registry: import("./core.js").PublicV1Registry<{
6106
6222
  readonly query: z.ZodObject<{
6107
6223
  url: z.ZodOptional<z.ZodString>;
6108
6224
  field: z.ZodOptional<z.ZodEnum<{
6225
+ coverageState: "coverageState";
6109
6226
  indexStatus: "indexStatus";
6110
6227
  googleCanonical: "googleCanonical";
6111
- coverageState: "coverageState";
6112
6228
  robotsTxtState: "robotsTxtState";
6113
6229
  indexingState: "indexingState";
6114
6230
  pageFetchState: "pageFetchState";
@@ -6127,9 +6243,9 @@ export declare const searchV1Registry: import("./core.js").PublicV1Registry<{
6127
6243
  }, z.core.$strict>, z.ZodObject<{
6128
6244
  _tag: z.ZodLiteral<"site">;
6129
6245
  field: z.ZodEnum<{
6246
+ coverageState: "coverageState";
6130
6247
  indexStatus: "indexStatus";
6131
6248
  googleCanonical: "googleCanonical";
6132
- coverageState: "coverageState";
6133
6249
  robotsTxtState: "robotsTxtState";
6134
6250
  indexingState: "indexingState";
6135
6251
  pageFetchState: "pageFetchState";
@@ -6147,9 +6263,9 @@ export declare const searchV1Registry: import("./core.js").PublicV1Registry<{
6147
6263
  readonly changes: z.ZodArray<z.ZodObject<{
6148
6264
  readonly url: z.ZodString;
6149
6265
  readonly field: z.ZodEnum<{
6266
+ coverageState: "coverageState";
6150
6267
  indexStatus: "indexStatus";
6151
6268
  googleCanonical: "googleCanonical";
6152
- coverageState: "coverageState";
6153
6269
  robotsTxtState: "robotsTxtState";
6154
6270
  indexingState: "indexingState";
6155
6271
  pageFetchState: "pageFetchState";
@@ -6196,9 +6312,9 @@ export declare const searchV1Registry: import("./core.js").PublicV1Registry<{
6196
6312
  }, z.core.$loose>, z.ZodObject<{
6197
6313
  _tag: z.ZodLiteral<"site">;
6198
6314
  field: z.ZodEnum<{
6315
+ coverageState: "coverageState";
6199
6316
  indexStatus: "indexStatus";
6200
6317
  googleCanonical: "googleCanonical";
6201
- coverageState: "coverageState";
6202
6318
  robotsTxtState: "robotsTxtState";
6203
6319
  indexingState: "indexingState";
6204
6320
  pageFetchState: "pageFetchState";
@@ -6216,9 +6332,9 @@ export declare const searchV1Registry: import("./core.js").PublicV1Registry<{
6216
6332
  readonly changes: z.ZodArray<z.ZodObject<{
6217
6333
  readonly url: z.ZodString;
6218
6334
  readonly field: z.ZodEnum<{
6335
+ coverageState: "coverageState";
6219
6336
  indexStatus: "indexStatus";
6220
6337
  googleCanonical: "googleCanonical";
6221
- coverageState: "coverageState";
6222
6338
  robotsTxtState: "robotsTxtState";
6223
6339
  indexingState: "indexingState";
6224
6340
  pageFetchState: "pageFetchState";
@@ -6569,7 +6685,7 @@ export declare const searchV1Registry: import("./core.js").PublicV1Registry<{
6569
6685
  }, z.core.$strict>>;
6570
6686
  readonly coverage: z.ZodNullable<z.ZodObject<{
6571
6687
  analysed: z.ZodNumber;
6572
- notIndexedButNeverCrawled: z.ZodNumber;
6688
+ notIndexedNotInCrawl: z.ZodNumber;
6573
6689
  excludedFragments: z.ZodNumber;
6574
6690
  }, z.core.$strict>>;
6575
6691
  readonly method: z.ZodNullable<z.ZodString>;
@@ -6623,7 +6739,7 @@ export declare const searchV1Registry: import("./core.js").PublicV1Registry<{
6623
6739
  }, z.core.$loose>>;
6624
6740
  readonly coverage: z.ZodNullable<z.ZodObject<{
6625
6741
  analysed: z.ZodNumber;
6626
- notIndexedButNeverCrawled: z.ZodNumber;
6742
+ notIndexedNotInCrawl: z.ZodNumber;
6627
6743
  excludedFragments: z.ZodNumber;
6628
6744
  }, z.core.$loose>>;
6629
6745
  readonly method: z.ZodNullable<z.ZodString>;
@@ -6758,7 +6874,7 @@ export declare const searchV1Registry: import("./core.js").PublicV1Registry<{
6758
6874
  };
6759
6875
  readonly coverage: {
6760
6876
  readonly analysed: 1200;
6761
- readonly notIndexedButNeverCrawled: 40;
6877
+ readonly notIndexedNotInCrawl: 40;
6762
6878
  readonly excludedFragments: 2;
6763
6879
  };
6764
6880
  readonly method: 'Wilson score interval per family against its own complement, Bonferroni-corrected across 9 tested families (critical value z=2.77).';