@nuxtseo/protocol 0.4.1 → 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.
package/dist/v1/gsc.js CHANGED
@@ -342,12 +342,24 @@ const diagnosticsSummaryDataSchema = defineResponseObject({
342
342
  totalUrls: schema.number().int().nonnegative(),
343
343
  indexed: schema.number().int().nonnegative(),
344
344
  asOf: schema.string().datetime().nullable(),
345
+ /** 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. */
346
+ asOfSource: schema.enum(['rollup', 'capture', 'newest-check']).nullable(),
347
+ /** The oldest URL inspection behind these counts. With `asOf` it bounds the evidence age. Null when unknown. */
348
+ oldestCheckAt: schema.string().datetime().nullable(),
349
+ /** Share of the counted verdicts older than 7 and 30 days when `asOf` was set. Null when gscdump did not measure verdict age. */
350
+ verdictFreshness: schema.object({ olderThan7dPercent: schema.number().min(0).max(100), olderThan30dPercent: schema.number().min(0).max(100) }).nullable(),
345
351
  issues: schema.array(issueSchema.producer),
346
352
  }, {
347
353
  view: schema.literal('summary'),
348
354
  totalUrls: schema.number().int().nonnegative(),
349
355
  indexed: schema.number().int().nonnegative(),
350
356
  asOf: schema.string().datetime().nullable(),
357
+ /** 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. */
358
+ asOfSource: schema.enum(['rollup', 'capture', 'newest-check']).nullable(),
359
+ /** The oldest URL inspection behind these counts. With `asOf` it bounds the evidence age. Null when unknown. */
360
+ oldestCheckAt: schema.string().datetime().nullable(),
361
+ /** Share of the counted verdicts older than 7 and 30 days when `asOf` was set. Null when gscdump did not measure verdict age. */
362
+ verdictFreshness: schema.object({ olderThan7dPercent: schema.number().min(0).max(100), olderThan30dPercent: schema.number().min(0).max(100) }).nullable(),
351
363
  issues: schema.array(issueSchema.client),
352
364
  });
353
365
  const diagnosticsUrlSchema = defineResponseObject({
@@ -572,7 +584,7 @@ export const indexingDiagnosticsReadOperation = defineOperation({
572
584
  summary: 'Diagnose Site indexing',
573
585
  description: 'Returns indexed coverage and issue counts, or one filtered page of affected URLs, from retained Search Console evidence.',
574
586
  tags: ['Sites', 'Search', 'Indexing'],
575
- examples: [{ request: { params: { siteId: 'site_01JXYZ' }, query: { view: 'summary' } }, response: { status: 200, body: { data: { view: 'summary', totalUrls: 100, indexed: 92, asOf: '2026-08-10T00:00:00.000Z', issues: [] }, meta: { requestId: 'req_01JXYZ', version: '1.0' } } } }],
587
+ examples: [{ request: { params: { siteId: 'site_01JXYZ' }, query: { view: 'summary' } }, response: { status: 200, body: { data: { view: 'summary', totalUrls: 100, indexed: 92, asOf: '2026-08-10T00:00:00.000Z', asOfSource: 'newest-check', oldestCheckAt: '2026-07-01T00:00:00.000Z', verdictFreshness: { olderThan7dPercent: 87.4, olderThan30dPercent: 60.5 }, issues: [] }, meta: { requestId: 'req_01JXYZ', version: '1.0' } } } }],
576
588
  },
577
589
  });
578
590
  export const indexingHistoryReadOperation = defineOperation({
@@ -663,7 +675,7 @@ const cohortBaselineShape = {
663
675
  };
664
676
  const cohortCoverageShape = {
665
677
  analysed: schema.number().int().nonnegative(),
666
- notIndexedButNeverCrawled: schema.number().int().nonnegative(),
678
+ notIndexedNotInCrawl: schema.number().int().nonnegative(),
667
679
  excludedFragments: schema.number().int().nonnegative(),
668
680
  };
669
681
  /**
@@ -759,7 +771,7 @@ export const indexCohortsReadOperation = defineOperation({
759
771
  message: null,
760
772
  asOf: '2026-09-01T00:00:00.000Z',
761
773
  baseline: { pages: 1200, notIndexed: 180, notIndexedPercent: 15 },
762
- coverage: { analysed: 1200, notIndexedButNeverCrawled: 40, excludedFragments: 2 },
774
+ coverage: { analysed: 1200, notIndexedNotInCrawl: 40, excludedFragments: 2 },
763
775
  method: 'Wilson score interval per family against its own complement, Bonferroni-corrected across 9 tested families (critical value z=2.77).',
764
776
  familiesTested: 9,
765
777
  established: [{
@@ -23,6 +23,13 @@ export declare const siteSitemapsResponseSchema: import("./core.js").CompatibleR
23
23
  lastError: z.ZodOptional<z.ZodNullable<z.ZodString>>;
24
24
  isPending: z.ZodOptional<z.ZodBoolean>;
25
25
  fetchedAt: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
26
+ feed: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
27
+ _tag: z.ZodLiteral<"counted">;
28
+ }, z.core.$strict>, z.ZodObject<{
29
+ _tag: z.ZodLiteral<"dropped">;
30
+ status: z.ZodUnion<readonly [z.ZodLiteral<404>, z.ZodLiteral<410>]>;
31
+ since: z.ZodNumber;
32
+ }, z.core.$strict>], "_tag">>;
26
33
  }, z.core.$loose>>;
27
34
  history: z.ZodArray<z.ZodObject<{
28
35
  date: z.ZodString;
@@ -81,6 +88,13 @@ export declare const siteSitemapsResponseSchema: import("./core.js").CompatibleR
81
88
  lastError: z.ZodOptional<z.ZodNullable<z.ZodString>>;
82
89
  isPending: z.ZodOptional<z.ZodBoolean>;
83
90
  fetchedAt: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
91
+ feed: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
92
+ _tag: z.ZodLiteral<"counted">;
93
+ }, z.core.$strict>, z.ZodObject<{
94
+ _tag: z.ZodLiteral<"dropped">;
95
+ status: z.ZodUnion<readonly [z.ZodLiteral<404>, z.ZodLiteral<410>]>;
96
+ since: z.ZodNumber;
97
+ }, z.core.$strict>], "_tag">>;
84
98
  }, z.core.$loose>>;
85
99
  history: z.ZodArray<z.ZodObject<{
86
100
  date: z.ZodString;
@@ -271,6 +285,13 @@ export declare const siteSitemapsListOperation: {
271
285
  lastError: z.ZodOptional<z.ZodNullable<z.ZodString>>;
272
286
  isPending: z.ZodOptional<z.ZodBoolean>;
273
287
  fetchedAt: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
288
+ feed: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
289
+ _tag: z.ZodLiteral<"counted">;
290
+ }, z.core.$strict>, z.ZodObject<{
291
+ _tag: z.ZodLiteral<"dropped">;
292
+ status: z.ZodUnion<readonly [z.ZodLiteral<404>, z.ZodLiteral<410>]>;
293
+ since: z.ZodNumber;
294
+ }, z.core.$strict>], "_tag">>;
274
295
  }, z.core.$loose>>;
275
296
  history: z.ZodArray<z.ZodObject<{
276
297
  date: z.ZodString;
@@ -329,6 +350,13 @@ export declare const siteSitemapsListOperation: {
329
350
  lastError: z.ZodOptional<z.ZodNullable<z.ZodString>>;
330
351
  isPending: z.ZodOptional<z.ZodBoolean>;
331
352
  fetchedAt: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
353
+ feed: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
354
+ _tag: z.ZodLiteral<"counted">;
355
+ }, z.core.$strict>, z.ZodObject<{
356
+ _tag: z.ZodLiteral<"dropped">;
357
+ status: z.ZodUnion<readonly [z.ZodLiteral<404>, z.ZodLiteral<410>]>;
358
+ since: z.ZodNumber;
359
+ }, z.core.$strict>], "_tag">>;
332
360
  }, z.core.$loose>>;
333
361
  history: z.ZodArray<z.ZodObject<{
334
362
  date: z.ZodString;
@@ -907,6 +935,13 @@ export declare const sitemapsV1Registry: import("./core.js").PublicV1Registry<{
907
935
  lastError: z.ZodOptional<z.ZodNullable<z.ZodString>>;
908
936
  isPending: z.ZodOptional<z.ZodBoolean>;
909
937
  fetchedAt: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
938
+ feed: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
939
+ _tag: z.ZodLiteral<"counted">;
940
+ }, z.core.$strict>, z.ZodObject<{
941
+ _tag: z.ZodLiteral<"dropped">;
942
+ status: z.ZodUnion<readonly [z.ZodLiteral<404>, z.ZodLiteral<410>]>;
943
+ since: z.ZodNumber;
944
+ }, z.core.$strict>], "_tag">>;
910
945
  }, z.core.$loose>>;
911
946
  history: z.ZodArray<z.ZodObject<{
912
947
  date: z.ZodString;
@@ -965,6 +1000,13 @@ export declare const sitemapsV1Registry: import("./core.js").PublicV1Registry<{
965
1000
  lastError: z.ZodOptional<z.ZodNullable<z.ZodString>>;
966
1001
  isPending: z.ZodOptional<z.ZodBoolean>;
967
1002
  fetchedAt: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1003
+ feed: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1004
+ _tag: z.ZodLiteral<"counted">;
1005
+ }, z.core.$strict>, z.ZodObject<{
1006
+ _tag: z.ZodLiteral<"dropped">;
1007
+ status: z.ZodUnion<readonly [z.ZodLiteral<404>, z.ZodLiteral<410>]>;
1008
+ since: z.ZodNumber;
1009
+ }, z.core.$strict>], "_tag">>;
968
1010
  }, z.core.$loose>>;
969
1011
  history: z.ZodArray<z.ZodObject<{
970
1012
  date: z.ZodString;
@@ -10,7 +10,6 @@ export declare const siteMonitoringModeSchema: z.ZodNullable<z.ZodEnum<{
10
10
  }>>;
11
11
  export declare const siteMonitoringStatusSchema: z.ZodEnum<{
12
12
  active: "active";
13
- archived: "archived";
14
13
  paused: "paused";
15
14
  unconfigured: "unconfigured";
16
15
  }>;
@@ -32,7 +31,6 @@ export declare const siteSummaryProducerSchema: z.ZodObject<{
32
31
  }>>;
33
32
  status: z.ZodEnum<{
34
33
  active: "active";
35
- archived: "archived";
36
34
  paused: "paused";
37
35
  unconfigured: "unconfigured";
38
36
  }>;
@@ -57,7 +55,6 @@ export declare const siteSummaryClientSchema: z.ZodObject<{
57
55
  }>>;
58
56
  status: z.ZodEnum<{
59
57
  active: "active";
60
- archived: "archived";
61
58
  paused: "paused";
62
59
  unconfigured: "unconfigured";
63
60
  }>;
@@ -86,7 +83,6 @@ export declare const sitesListDataSchema: import("./core.js").CompatibleResponse
86
83
  }>>;
87
84
  status: z.ZodEnum<{
88
85
  active: "active";
89
- archived: "archived";
90
86
  paused: "paused";
91
87
  unconfigured: "unconfigured";
92
88
  }>;
@@ -111,7 +107,6 @@ export declare const sitesListDataSchema: import("./core.js").CompatibleResponse
111
107
  }>>;
112
108
  status: z.ZodEnum<{
113
109
  active: "active";
114
- archived: "archived";
115
110
  paused: "paused";
116
111
  unconfigured: "unconfigured";
117
112
  }>;
@@ -143,7 +138,6 @@ export declare const sitesListDataSchema: import("./core.js").CompatibleResponse
143
138
  }>>;
144
139
  status: z.ZodEnum<{
145
140
  active: "active";
146
- archived: "archived";
147
141
  paused: "paused";
148
142
  unconfigured: "unconfigured";
149
143
  }>;
@@ -168,7 +162,6 @@ export declare const sitesListDataSchema: import("./core.js").CompatibleResponse
168
162
  }>>;
169
163
  status: z.ZodEnum<{
170
164
  active: "active";
171
- archived: "archived";
172
165
  paused: "paused";
173
166
  unconfigured: "unconfigured";
174
167
  }>;
@@ -214,7 +207,6 @@ export declare const sitesListResponseSchema: import("./core.js").CompatibleResp
214
207
  }>>;
215
208
  status: z.ZodEnum<{
216
209
  active: "active";
217
- archived: "archived";
218
210
  paused: "paused";
219
211
  unconfigured: "unconfigured";
220
212
  }>;
@@ -239,7 +231,6 @@ export declare const sitesListResponseSchema: import("./core.js").CompatibleResp
239
231
  }>>;
240
232
  status: z.ZodEnum<{
241
233
  active: "active";
242
- archived: "archived";
243
234
  paused: "paused";
244
235
  unconfigured: "unconfigured";
245
236
  }>;
@@ -278,7 +269,6 @@ export declare const sitesListResponseSchema: import("./core.js").CompatibleResp
278
269
  }>>;
279
270
  status: z.ZodEnum<{
280
271
  active: "active";
281
- archived: "archived";
282
272
  paused: "paused";
283
273
  unconfigured: "unconfigured";
284
274
  }>;
@@ -303,7 +293,6 @@ export declare const sitesListResponseSchema: import("./core.js").CompatibleResp
303
293
  }>>;
304
294
  status: z.ZodEnum<{
305
295
  active: "active";
306
- archived: "archived";
307
296
  paused: "paused";
308
297
  unconfigured: "unconfigured";
309
298
  }>;
@@ -372,7 +361,6 @@ export declare const sitesListOperation: {
372
361
  }>>;
373
362
  status: z.ZodEnum<{
374
363
  active: "active";
375
- archived: "archived";
376
364
  paused: "paused";
377
365
  unconfigured: "unconfigured";
378
366
  }>;
@@ -397,7 +385,6 @@ export declare const sitesListOperation: {
397
385
  }>>;
398
386
  status: z.ZodEnum<{
399
387
  active: "active";
400
- archived: "archived";
401
388
  paused: "paused";
402
389
  unconfigured: "unconfigured";
403
390
  }>;
@@ -436,7 +423,6 @@ export declare const sitesListOperation: {
436
423
  }>>;
437
424
  status: z.ZodEnum<{
438
425
  active: "active";
439
- archived: "archived";
440
426
  paused: "paused";
441
427
  unconfigured: "unconfigured";
442
428
  }>;
@@ -461,7 +447,6 @@ export declare const sitesListOperation: {
461
447
  }>>;
462
448
  status: z.ZodEnum<{
463
449
  active: "active";
464
- archived: "archived";
465
450
  paused: "paused";
466
451
  unconfigured: "unconfigured";
467
452
  }>;
@@ -608,6 +593,25 @@ export declare const sitesListOperation: {
608
593
  export declare const siteStatusParamsSchema: z.ZodObject<{
609
594
  siteId: z.ZodString;
610
595
  }, z.core.$strict>;
596
+ /**
597
+ * The Site-wide verdict. `assessment.aggregate` carries it unchanged, so a
598
+ * reader sees the whole-Site state even when a Route family leads the headline.
599
+ */
600
+ export declare const siteAggregateVerdictSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
601
+ reachStage: z.ZodNullable<z.ZodString>;
602
+ healthStage: z.ZodNullable<z.ZodString>;
603
+ headlineAxis: z.ZodNullable<z.ZodString>;
604
+ summary: z.ZodString;
605
+ recommendation: z.ZodString;
606
+ assessedAt: z.ZodNullable<z.ZodString>;
607
+ }, z.core.$strip>, z.ZodObject<{
608
+ reachStage: z.ZodNullable<z.ZodString>;
609
+ healthStage: z.ZodNullable<z.ZodString>;
610
+ headlineAxis: z.ZodNullable<z.ZodString>;
611
+ summary: z.ZodString;
612
+ recommendation: z.ZodString;
613
+ assessedAt: z.ZodNullable<z.ZodString>;
614
+ }, z.core.$strip>>;
611
615
  export declare const siteAssessmentSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
612
616
  readonly reachStage: z.ZodNullable<z.ZodString>;
613
617
  readonly healthStage: z.ZodNullable<z.ZodString>;
@@ -615,6 +619,24 @@ export declare const siteAssessmentSchema: import("./core.js").CompatibleRespons
615
619
  readonly summary: z.ZodString;
616
620
  readonly recommendation: z.ZodString;
617
621
  readonly assessedAt: z.ZodNullable<z.ZodString>;
622
+ /**
623
+ * What the headline (`summary`, `recommendation`) describes. `site`: the
624
+ * whole Site. `route-family`: one Route family, a lead to check against
625
+ * `aggregate`. It is `site` whenever health is `quality_rejection` or most
626
+ * tracked URLs are not indexed.
627
+ */
628
+ readonly scope: z.ZodEnum<{
629
+ "route-family": "route-family";
630
+ site: "site";
631
+ }>;
632
+ readonly aggregate: z.ZodNullable<z.ZodObject<{
633
+ reachStage: z.ZodNullable<z.ZodString>;
634
+ healthStage: z.ZodNullable<z.ZodString>;
635
+ headlineAxis: z.ZodNullable<z.ZodString>;
636
+ summary: z.ZodString;
637
+ recommendation: z.ZodString;
638
+ assessedAt: z.ZodNullable<z.ZodString>;
639
+ }, z.core.$strip>>;
618
640
  }, z.core.$strip>, z.ZodObject<{
619
641
  readonly reachStage: z.ZodNullable<z.ZodString>;
620
642
  readonly healthStage: z.ZodNullable<z.ZodString>;
@@ -622,6 +644,18 @@ export declare const siteAssessmentSchema: import("./core.js").CompatibleRespons
622
644
  readonly summary: z.ZodString;
623
645
  readonly recommendation: z.ZodString;
624
646
  readonly assessedAt: z.ZodNullable<z.ZodString>;
647
+ readonly scope: z.ZodEnum<{
648
+ "route-family": "route-family";
649
+ site: "site";
650
+ }>;
651
+ readonly aggregate: z.ZodNullable<z.ZodObject<{
652
+ reachStage: z.ZodNullable<z.ZodString>;
653
+ healthStage: z.ZodNullable<z.ZodString>;
654
+ headlineAxis: z.ZodNullable<z.ZodString>;
655
+ summary: z.ZodString;
656
+ recommendation: z.ZodString;
657
+ assessedAt: z.ZodNullable<z.ZodString>;
658
+ }, z.core.$strip>>;
625
659
  }, z.core.$strip>>;
626
660
  /**
627
661
  * The one ranked thing to do next. `kind` says what it is: `connect` asks for a
@@ -710,6 +744,24 @@ export declare const siteStatusDataSchema: import("./core.js").CompatibleRespons
710
744
  readonly summary: z.ZodString;
711
745
  readonly recommendation: z.ZodString;
712
746
  readonly assessedAt: z.ZodNullable<z.ZodString>;
747
+ /**
748
+ * What the headline (`summary`, `recommendation`) describes. `site`: the
749
+ * whole Site. `route-family`: one Route family, a lead to check against
750
+ * `aggregate`. It is `site` whenever health is `quality_rejection` or most
751
+ * tracked URLs are not indexed.
752
+ */
753
+ readonly scope: z.ZodEnum<{
754
+ "route-family": "route-family";
755
+ site: "site";
756
+ }>;
757
+ readonly aggregate: z.ZodNullable<z.ZodObject<{
758
+ reachStage: z.ZodNullable<z.ZodString>;
759
+ healthStage: z.ZodNullable<z.ZodString>;
760
+ headlineAxis: z.ZodNullable<z.ZodString>;
761
+ summary: z.ZodString;
762
+ recommendation: z.ZodString;
763
+ assessedAt: z.ZodNullable<z.ZodString>;
764
+ }, z.core.$strip>>;
713
765
  }, z.core.$strip>>;
714
766
  readonly nextAction: z.ZodNullable<z.ZodObject<{
715
767
  readonly kind: z.ZodEnum<{
@@ -778,6 +830,18 @@ export declare const siteStatusDataSchema: import("./core.js").CompatibleRespons
778
830
  readonly summary: z.ZodString;
779
831
  readonly recommendation: z.ZodString;
780
832
  readonly assessedAt: z.ZodNullable<z.ZodString>;
833
+ readonly scope: z.ZodEnum<{
834
+ "route-family": "route-family";
835
+ site: "site";
836
+ }>;
837
+ readonly aggregate: z.ZodNullable<z.ZodObject<{
838
+ reachStage: z.ZodNullable<z.ZodString>;
839
+ healthStage: z.ZodNullable<z.ZodString>;
840
+ headlineAxis: z.ZodNullable<z.ZodString>;
841
+ summary: z.ZodString;
842
+ recommendation: z.ZodString;
843
+ assessedAt: z.ZodNullable<z.ZodString>;
844
+ }, z.core.$strip>>;
781
845
  }, z.core.$strip>>;
782
846
  readonly nextAction: z.ZodNullable<z.ZodObject<{
783
847
  readonly kind: z.ZodEnum<{
@@ -847,6 +911,24 @@ export declare const siteStatusResponseSchema: import("./core.js").CompatibleRes
847
911
  readonly summary: z.ZodString;
848
912
  readonly recommendation: z.ZodString;
849
913
  readonly assessedAt: z.ZodNullable<z.ZodString>;
914
+ /**
915
+ * What the headline (`summary`, `recommendation`) describes. `site`: the
916
+ * whole Site. `route-family`: one Route family, a lead to check against
917
+ * `aggregate`. It is `site` whenever health is `quality_rejection` or most
918
+ * tracked URLs are not indexed.
919
+ */
920
+ readonly scope: z.ZodEnum<{
921
+ "route-family": "route-family";
922
+ site: "site";
923
+ }>;
924
+ readonly aggregate: z.ZodNullable<z.ZodObject<{
925
+ reachStage: z.ZodNullable<z.ZodString>;
926
+ healthStage: z.ZodNullable<z.ZodString>;
927
+ headlineAxis: z.ZodNullable<z.ZodString>;
928
+ summary: z.ZodString;
929
+ recommendation: z.ZodString;
930
+ assessedAt: z.ZodNullable<z.ZodString>;
931
+ }, z.core.$strip>>;
850
932
  }, z.core.$strip>>;
851
933
  readonly nextAction: z.ZodNullable<z.ZodObject<{
852
934
  readonly kind: z.ZodEnum<{
@@ -921,6 +1003,18 @@ export declare const siteStatusResponseSchema: import("./core.js").CompatibleRes
921
1003
  readonly summary: z.ZodString;
922
1004
  readonly recommendation: z.ZodString;
923
1005
  readonly assessedAt: z.ZodNullable<z.ZodString>;
1006
+ readonly scope: z.ZodEnum<{
1007
+ "route-family": "route-family";
1008
+ site: "site";
1009
+ }>;
1010
+ readonly aggregate: z.ZodNullable<z.ZodObject<{
1011
+ reachStage: z.ZodNullable<z.ZodString>;
1012
+ healthStage: z.ZodNullable<z.ZodString>;
1013
+ headlineAxis: z.ZodNullable<z.ZodString>;
1014
+ summary: z.ZodString;
1015
+ recommendation: z.ZodString;
1016
+ assessedAt: z.ZodNullable<z.ZodString>;
1017
+ }, z.core.$strip>>;
924
1018
  }, z.core.$strip>>;
925
1019
  readonly nextAction: z.ZodNullable<z.ZodObject<{
926
1020
  readonly kind: z.ZodEnum<{
@@ -1022,6 +1116,24 @@ export declare const siteStatusOperation: {
1022
1116
  readonly summary: z.ZodString;
1023
1117
  readonly recommendation: z.ZodString;
1024
1118
  readonly assessedAt: z.ZodNullable<z.ZodString>;
1119
+ /**
1120
+ * What the headline (`summary`, `recommendation`) describes. `site`: the
1121
+ * whole Site. `route-family`: one Route family, a lead to check against
1122
+ * `aggregate`. It is `site` whenever health is `quality_rejection` or most
1123
+ * tracked URLs are not indexed.
1124
+ */
1125
+ readonly scope: z.ZodEnum<{
1126
+ "route-family": "route-family";
1127
+ site: "site";
1128
+ }>;
1129
+ readonly aggregate: z.ZodNullable<z.ZodObject<{
1130
+ reachStage: z.ZodNullable<z.ZodString>;
1131
+ healthStage: z.ZodNullable<z.ZodString>;
1132
+ headlineAxis: z.ZodNullable<z.ZodString>;
1133
+ summary: z.ZodString;
1134
+ recommendation: z.ZodString;
1135
+ assessedAt: z.ZodNullable<z.ZodString>;
1136
+ }, z.core.$strip>>;
1025
1137
  }, z.core.$strip>>;
1026
1138
  readonly nextAction: z.ZodNullable<z.ZodObject<{
1027
1139
  readonly kind: z.ZodEnum<{
@@ -1096,6 +1208,18 @@ export declare const siteStatusOperation: {
1096
1208
  readonly summary: z.ZodString;
1097
1209
  readonly recommendation: z.ZodString;
1098
1210
  readonly assessedAt: z.ZodNullable<z.ZodString>;
1211
+ readonly scope: z.ZodEnum<{
1212
+ "route-family": "route-family";
1213
+ site: "site";
1214
+ }>;
1215
+ readonly aggregate: z.ZodNullable<z.ZodObject<{
1216
+ reachStage: z.ZodNullable<z.ZodString>;
1217
+ healthStage: z.ZodNullable<z.ZodString>;
1218
+ headlineAxis: z.ZodNullable<z.ZodString>;
1219
+ summary: z.ZodString;
1220
+ recommendation: z.ZodString;
1221
+ assessedAt: z.ZodNullable<z.ZodString>;
1222
+ }, z.core.$strip>>;
1099
1223
  }, z.core.$strip>>;
1100
1224
  readonly nextAction: z.ZodNullable<z.ZodObject<{
1101
1225
  readonly kind: z.ZodEnum<{
@@ -1253,6 +1377,15 @@ export declare const siteStatusOperation: {
1253
1377
  readonly summary: 'Indexing is slipping on the docs template.';
1254
1378
  readonly recommendation: 'Fix the canonical tag on /docs pages.';
1255
1379
  readonly assessedAt: '2026-09-04T02:00:00.000Z';
1380
+ readonly scope: 'site';
1381
+ readonly aggregate: {
1382
+ readonly reachStage: 'growing';
1383
+ readonly healthStage: 'at-risk';
1384
+ readonly headlineAxis: 'health';
1385
+ readonly summary: 'Indexing is slipping on the docs template.';
1386
+ readonly recommendation: 'Fix the canonical tag on /docs pages.';
1387
+ readonly assessedAt: '2026-09-04T02:00:00.000Z';
1388
+ };
1256
1389
  };
1257
1390
  readonly nextAction: {
1258
1391
  readonly kind: 'action';
@@ -1355,7 +1488,6 @@ export declare const sitesV1Registry: import("./core.js").PublicV1Registry<{
1355
1488
  }>>;
1356
1489
  status: z.ZodEnum<{
1357
1490
  active: "active";
1358
- archived: "archived";
1359
1491
  paused: "paused";
1360
1492
  unconfigured: "unconfigured";
1361
1493
  }>;
@@ -1380,7 +1512,6 @@ export declare const sitesV1Registry: import("./core.js").PublicV1Registry<{
1380
1512
  }>>;
1381
1513
  status: z.ZodEnum<{
1382
1514
  active: "active";
1383
- archived: "archived";
1384
1515
  paused: "paused";
1385
1516
  unconfigured: "unconfigured";
1386
1517
  }>;
@@ -1419,7 +1550,6 @@ export declare const sitesV1Registry: import("./core.js").PublicV1Registry<{
1419
1550
  }>>;
1420
1551
  status: z.ZodEnum<{
1421
1552
  active: "active";
1422
- archived: "archived";
1423
1553
  paused: "paused";
1424
1554
  unconfigured: "unconfigured";
1425
1555
  }>;
@@ -1444,7 +1574,6 @@ export declare const sitesV1Registry: import("./core.js").PublicV1Registry<{
1444
1574
  }>>;
1445
1575
  status: z.ZodEnum<{
1446
1576
  active: "active";
1447
- archived: "archived";
1448
1577
  paused: "paused";
1449
1578
  unconfigured: "unconfigured";
1450
1579
  }>;
@@ -1626,6 +1755,24 @@ export declare const sitesV1Registry: import("./core.js").PublicV1Registry<{
1626
1755
  readonly summary: z.ZodString;
1627
1756
  readonly recommendation: z.ZodString;
1628
1757
  readonly assessedAt: z.ZodNullable<z.ZodString>;
1758
+ /**
1759
+ * What the headline (`summary`, `recommendation`) describes. `site`: the
1760
+ * whole Site. `route-family`: one Route family, a lead to check against
1761
+ * `aggregate`. It is `site` whenever health is `quality_rejection` or most
1762
+ * tracked URLs are not indexed.
1763
+ */
1764
+ readonly scope: z.ZodEnum<{
1765
+ "route-family": "route-family";
1766
+ site: "site";
1767
+ }>;
1768
+ readonly aggregate: z.ZodNullable<z.ZodObject<{
1769
+ reachStage: z.ZodNullable<z.ZodString>;
1770
+ healthStage: z.ZodNullable<z.ZodString>;
1771
+ headlineAxis: z.ZodNullable<z.ZodString>;
1772
+ summary: z.ZodString;
1773
+ recommendation: z.ZodString;
1774
+ assessedAt: z.ZodNullable<z.ZodString>;
1775
+ }, z.core.$strip>>;
1629
1776
  }, z.core.$strip>>;
1630
1777
  readonly nextAction: z.ZodNullable<z.ZodObject<{
1631
1778
  readonly kind: z.ZodEnum<{
@@ -1700,6 +1847,18 @@ export declare const sitesV1Registry: import("./core.js").PublicV1Registry<{
1700
1847
  readonly summary: z.ZodString;
1701
1848
  readonly recommendation: z.ZodString;
1702
1849
  readonly assessedAt: z.ZodNullable<z.ZodString>;
1850
+ readonly scope: z.ZodEnum<{
1851
+ "route-family": "route-family";
1852
+ site: "site";
1853
+ }>;
1854
+ readonly aggregate: z.ZodNullable<z.ZodObject<{
1855
+ reachStage: z.ZodNullable<z.ZodString>;
1856
+ healthStage: z.ZodNullable<z.ZodString>;
1857
+ headlineAxis: z.ZodNullable<z.ZodString>;
1858
+ summary: z.ZodString;
1859
+ recommendation: z.ZodString;
1860
+ assessedAt: z.ZodNullable<z.ZodString>;
1861
+ }, z.core.$strip>>;
1703
1862
  }, z.core.$strip>>;
1704
1863
  readonly nextAction: z.ZodNullable<z.ZodObject<{
1705
1864
  readonly kind: z.ZodEnum<{
@@ -1857,6 +2016,15 @@ export declare const sitesV1Registry: import("./core.js").PublicV1Registry<{
1857
2016
  readonly summary: 'Indexing is slipping on the docs template.';
1858
2017
  readonly recommendation: 'Fix the canonical tag on /docs pages.';
1859
2018
  readonly assessedAt: '2026-09-04T02:00:00.000Z';
2019
+ readonly scope: 'site';
2020
+ readonly aggregate: {
2021
+ readonly reachStage: 'growing';
2022
+ readonly healthStage: 'at-risk';
2023
+ readonly headlineAxis: 'health';
2024
+ readonly summary: 'Indexing is slipping on the docs template.';
2025
+ readonly recommendation: 'Fix the canonical tag on /docs pages.';
2026
+ readonly assessedAt: '2026-09-04T02:00:00.000Z';
2027
+ };
1860
2028
  };
1861
2029
  readonly nextAction: {
1862
2030
  readonly kind: 'action';
package/dist/v1/sites.js CHANGED
@@ -2,7 +2,7 @@ import { z as schema } from 'zod';
2
2
  import { defineOperation, defineRegistry, defineResponseObject, defineSuccessEnvelope, publicV1ErrorEnvelope, publicV1MetaClientSchema, publicV1MetaProducerSchema, publicV1PageSchema, publicV1StandardRatePolicy, } from './core.js';
3
3
  export const siteSearchConsoleStatusSchema = schema.enum(['connected', 'disconnected', 'action_required']);
4
4
  export const siteMonitoringModeSchema = schema.enum(['search_tracking', 'full_monitoring']).nullable();
5
- export const siteMonitoringStatusSchema = schema.enum(['active', 'paused', 'archived', 'unconfigured']);
5
+ export const siteMonitoringStatusSchema = schema.enum(['active', 'paused', 'unconfigured']);
6
6
  export const siteSummaryProducerSchema = schema.strictObject({
7
7
  id: schema.string().min(1),
8
8
  name: schema.string().min(1).nullable(),
@@ -121,20 +121,33 @@ export const sitesListOperation = defineOperation({
121
121
  export const siteStatusParamsSchema = schema.strictObject({
122
122
  siteId: schema.string().min(1),
123
123
  });
124
- export const siteAssessmentSchema = defineResponseObject({
124
+ const siteVerdictShape = {
125
125
  reachStage: schema.string().nullable(),
126
126
  healthStage: schema.string().nullable(),
127
127
  headlineAxis: schema.string().nullable(),
128
128
  summary: schema.string(),
129
129
  recommendation: schema.string(),
130
130
  assessedAt: schema.string().datetime().nullable(),
131
+ };
132
+ /**
133
+ * The Site-wide verdict. `assessment.aggregate` carries it unchanged, so a
134
+ * reader sees the whole-Site state even when a Route family leads the headline.
135
+ */
136
+ export const siteAggregateVerdictSchema = defineResponseObject(siteVerdictShape, siteVerdictShape);
137
+ export const siteAssessmentSchema = defineResponseObject({
138
+ ...siteVerdictShape,
139
+ /**
140
+ * What the headline (`summary`, `recommendation`) describes. `site`: the
141
+ * whole Site. `route-family`: one Route family, a lead to check against
142
+ * `aggregate`. It is `site` whenever health is `quality_rejection` or most
143
+ * tracked URLs are not indexed.
144
+ */
145
+ scope: schema.enum(['site', 'route-family']),
146
+ aggregate: siteAggregateVerdictSchema.producer.nullable(),
131
147
  }, {
132
- reachStage: schema.string().nullable(),
133
- healthStage: schema.string().nullable(),
134
- headlineAxis: schema.string().nullable(),
135
- summary: schema.string(),
136
- recommendation: schema.string(),
137
- assessedAt: schema.string().datetime().nullable(),
148
+ ...siteVerdictShape,
149
+ scope: schema.enum(['site', 'route-family']),
150
+ aggregate: siteAggregateVerdictSchema.client.nullable(),
138
151
  });
139
152
  /**
140
153
  * The one ranked thing to do next. `kind` says what it is: `connect` asks for a
@@ -300,6 +313,15 @@ export const siteStatusOperation = defineOperation({
300
313
  summary: 'Indexing is slipping on the docs template.',
301
314
  recommendation: 'Fix the canonical tag on /docs pages.',
302
315
  assessedAt: '2026-09-04T02:00:00.000Z',
316
+ scope: 'site',
317
+ aggregate: {
318
+ reachStage: 'growing',
319
+ healthStage: 'at-risk',
320
+ headlineAxis: 'health',
321
+ summary: 'Indexing is slipping on the docs template.',
322
+ recommendation: 'Fix the canonical tag on /docs pages.',
323
+ assessedAt: '2026-09-04T02:00:00.000Z',
324
+ },
303
325
  },
304
326
  nextAction: {
305
327
  kind: 'action',