@nuxtseo/protocol 0.1.0 → 0.1.2

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.d.ts CHANGED
@@ -1092,119 +1092,70 @@ export declare const searchAnalyticsResponseSchema: import("./core.js").Compatib
1092
1092
  version: z.ZodLiteral<"1.0">;
1093
1093
  }, z.core.$loose>;
1094
1094
  }, z.core.$strip>>;
1095
- declare const searchStatusDataSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
1096
- readonly site: z.ZodString;
1097
- readonly connected: z.ZodLiteral<true>;
1098
- readonly syncStatus: z.ZodString;
1099
- readonly progress: z.ZodObject<{
1100
- percent: z.ZodNumber;
1101
- succeeded: z.ZodNumber;
1102
- failed: z.ZodNumber;
1103
- terminal: z.ZodNumber;
1104
- pending: z.ZodNumber;
1105
- total: z.ZodNumber;
1106
- }, z.core.$strict>;
1107
- readonly dateRange: z.ZodObject<{
1108
- oldest: z.ZodNullable<z.ZodString>;
1109
- newest: z.ZodNullable<z.ZodString>;
1110
- }, z.core.$strict>;
1111
- readonly lastSyncAt: z.ZodNullable<z.ZodString>;
1112
- readonly isSyncing: z.ZodBoolean;
1113
- readonly hasData: z.ZodBoolean;
1114
- readonly completion: z.ZodObject<{
1115
- jobsTerminal: z.ZodBoolean;
1116
- dateCoverageComplete: z.ZodBoolean;
1117
- missingDays: z.ZodNumber;
1118
- }, z.core.$strict>;
1119
- readonly daysSynced: z.ZodNumber;
1120
- readonly daysAvailable: z.ZodNumber;
1121
- }, z.core.$strip>, z.ZodObject<{
1122
- readonly site: z.ZodString;
1123
- readonly connected: z.ZodLiteral<true>;
1124
- readonly syncStatus: z.ZodString;
1125
- readonly progress: z.ZodObject<{
1126
- percent: z.ZodNumber;
1127
- succeeded: z.ZodNumber;
1128
- failed: z.ZodNumber;
1129
- terminal: z.ZodNumber;
1130
- pending: z.ZodNumber;
1131
- total: z.ZodNumber;
1132
- }, z.core.$loose>;
1133
- readonly dateRange: z.ZodObject<{
1134
- oldest: z.ZodNullable<z.ZodString>;
1135
- newest: z.ZodNullable<z.ZodString>;
1136
- }, z.core.$loose>;
1137
- readonly lastSyncAt: z.ZodNullable<z.ZodString>;
1138
- readonly isSyncing: z.ZodBoolean;
1139
- readonly hasData: z.ZodBoolean;
1140
- readonly completion: z.ZodObject<{
1141
- jobsTerminal: z.ZodBoolean;
1142
- dateCoverageComplete: z.ZodBoolean;
1143
- missingDays: z.ZodNumber;
1144
- }, z.core.$loose>;
1145
- readonly daysSynced: z.ZodNumber;
1146
- readonly daysAvailable: z.ZodNumber;
1147
- }, z.core.$strip>>;
1095
+ export declare const searchStatusDataSchema: {
1096
+ producer: z.ZodDiscriminatedUnion<[z.ZodObject<{
1097
+ _tag: z.ZodLiteral<"Connected">;
1098
+ site: z.ZodString;
1099
+ }, z.core.$strict>, z.ZodObject<{
1100
+ _tag: z.ZodLiteral<"ActionRequired">;
1101
+ site: z.ZodString;
1102
+ reason: z.ZodEnum<{
1103
+ credential_inactive: "credential_inactive";
1104
+ credential_missing: "credential_missing";
1105
+ }>;
1106
+ }, z.core.$strict>, z.ZodObject<{
1107
+ _tag: z.ZodLiteral<"Disconnected">;
1108
+ site: z.ZodString;
1109
+ }, z.core.$strict>], "_tag">;
1110
+ client: z.ZodDiscriminatedUnion<[z.ZodObject<{
1111
+ _tag: z.ZodLiteral<"Connected">;
1112
+ site: z.ZodString;
1113
+ }, z.core.$loose>, z.ZodObject<{
1114
+ _tag: z.ZodLiteral<"ActionRequired">;
1115
+ site: z.ZodString;
1116
+ reason: z.ZodEnum<{
1117
+ credential_inactive: "credential_inactive";
1118
+ credential_missing: "credential_missing";
1119
+ }>;
1120
+ }, z.core.$loose>, z.ZodObject<{
1121
+ _tag: z.ZodLiteral<"Disconnected">;
1122
+ site: z.ZodString;
1123
+ }, z.core.$loose>], "_tag">;
1124
+ };
1148
1125
  export declare const searchStatusResponseSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
1149
- data: z.ZodObject<{
1150
- readonly site: z.ZodString;
1151
- readonly connected: z.ZodLiteral<true>;
1152
- readonly syncStatus: z.ZodString;
1153
- readonly progress: z.ZodObject<{
1154
- percent: z.ZodNumber;
1155
- succeeded: z.ZodNumber;
1156
- failed: z.ZodNumber;
1157
- terminal: z.ZodNumber;
1158
- pending: z.ZodNumber;
1159
- total: z.ZodNumber;
1160
- }, z.core.$strict>;
1161
- readonly dateRange: z.ZodObject<{
1162
- oldest: z.ZodNullable<z.ZodString>;
1163
- newest: z.ZodNullable<z.ZodString>;
1164
- }, z.core.$strict>;
1165
- readonly lastSyncAt: z.ZodNullable<z.ZodString>;
1166
- readonly isSyncing: z.ZodBoolean;
1167
- readonly hasData: z.ZodBoolean;
1168
- readonly completion: z.ZodObject<{
1169
- jobsTerminal: z.ZodBoolean;
1170
- dateCoverageComplete: z.ZodBoolean;
1171
- missingDays: z.ZodNumber;
1172
- }, z.core.$strict>;
1173
- readonly daysSynced: z.ZodNumber;
1174
- readonly daysAvailable: z.ZodNumber;
1175
- }, z.core.$strip>;
1126
+ data: z.ZodDiscriminatedUnion<[z.ZodObject<{
1127
+ _tag: z.ZodLiteral<"Connected">;
1128
+ site: z.ZodString;
1129
+ }, z.core.$strict>, z.ZodObject<{
1130
+ _tag: z.ZodLiteral<"ActionRequired">;
1131
+ site: z.ZodString;
1132
+ reason: z.ZodEnum<{
1133
+ credential_inactive: "credential_inactive";
1134
+ credential_missing: "credential_missing";
1135
+ }>;
1136
+ }, z.core.$strict>, z.ZodObject<{
1137
+ _tag: z.ZodLiteral<"Disconnected">;
1138
+ site: z.ZodString;
1139
+ }, z.core.$strict>], "_tag">;
1176
1140
  meta: z.ZodObject<{
1177
1141
  requestId: z.ZodString;
1178
1142
  version: z.ZodLiteral<"1.0">;
1179
1143
  }, z.core.$strict>;
1180
1144
  }, z.core.$strip>, z.ZodObject<{
1181
- data: z.ZodObject<{
1182
- readonly site: z.ZodString;
1183
- readonly connected: z.ZodLiteral<true>;
1184
- readonly syncStatus: z.ZodString;
1185
- readonly progress: z.ZodObject<{
1186
- percent: z.ZodNumber;
1187
- succeeded: z.ZodNumber;
1188
- failed: z.ZodNumber;
1189
- terminal: z.ZodNumber;
1190
- pending: z.ZodNumber;
1191
- total: z.ZodNumber;
1192
- }, z.core.$loose>;
1193
- readonly dateRange: z.ZodObject<{
1194
- oldest: z.ZodNullable<z.ZodString>;
1195
- newest: z.ZodNullable<z.ZodString>;
1196
- }, z.core.$loose>;
1197
- readonly lastSyncAt: z.ZodNullable<z.ZodString>;
1198
- readonly isSyncing: z.ZodBoolean;
1199
- readonly hasData: z.ZodBoolean;
1200
- readonly completion: z.ZodObject<{
1201
- jobsTerminal: z.ZodBoolean;
1202
- dateCoverageComplete: z.ZodBoolean;
1203
- missingDays: z.ZodNumber;
1204
- }, z.core.$loose>;
1205
- readonly daysSynced: z.ZodNumber;
1206
- readonly daysAvailable: z.ZodNumber;
1207
- }, z.core.$strip>;
1145
+ data: z.ZodDiscriminatedUnion<[z.ZodObject<{
1146
+ _tag: z.ZodLiteral<"Connected">;
1147
+ site: z.ZodString;
1148
+ }, z.core.$loose>, z.ZodObject<{
1149
+ _tag: z.ZodLiteral<"ActionRequired">;
1150
+ site: z.ZodString;
1151
+ reason: z.ZodEnum<{
1152
+ credential_inactive: "credential_inactive";
1153
+ credential_missing: "credential_missing";
1154
+ }>;
1155
+ }, z.core.$loose>, z.ZodObject<{
1156
+ _tag: z.ZodLiteral<"Disconnected">;
1157
+ site: z.ZodString;
1158
+ }, z.core.$loose>], "_tag">;
1208
1159
  meta: z.ZodObject<{
1209
1160
  requestId: z.ZodString;
1210
1161
  version: z.ZodLiteral<"1.0">;
@@ -2647,65 +2598,39 @@ export declare const searchStatusReadOperation: {
2647
2598
  };
2648
2599
  readonly responses: {
2649
2600
  readonly 200: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
2650
- data: z.ZodObject<{
2651
- readonly site: z.ZodString;
2652
- readonly connected: z.ZodLiteral<true>;
2653
- readonly syncStatus: z.ZodString;
2654
- readonly progress: z.ZodObject<{
2655
- percent: z.ZodNumber;
2656
- succeeded: z.ZodNumber;
2657
- failed: z.ZodNumber;
2658
- terminal: z.ZodNumber;
2659
- pending: z.ZodNumber;
2660
- total: z.ZodNumber;
2661
- }, z.core.$strict>;
2662
- readonly dateRange: z.ZodObject<{
2663
- oldest: z.ZodNullable<z.ZodString>;
2664
- newest: z.ZodNullable<z.ZodString>;
2665
- }, z.core.$strict>;
2666
- readonly lastSyncAt: z.ZodNullable<z.ZodString>;
2667
- readonly isSyncing: z.ZodBoolean;
2668
- readonly hasData: z.ZodBoolean;
2669
- readonly completion: z.ZodObject<{
2670
- jobsTerminal: z.ZodBoolean;
2671
- dateCoverageComplete: z.ZodBoolean;
2672
- missingDays: z.ZodNumber;
2673
- }, z.core.$strict>;
2674
- readonly daysSynced: z.ZodNumber;
2675
- readonly daysAvailable: z.ZodNumber;
2676
- }, z.core.$strip>;
2601
+ data: z.ZodDiscriminatedUnion<[z.ZodObject<{
2602
+ _tag: z.ZodLiteral<"Connected">;
2603
+ site: z.ZodString;
2604
+ }, z.core.$strict>, z.ZodObject<{
2605
+ _tag: z.ZodLiteral<"ActionRequired">;
2606
+ site: z.ZodString;
2607
+ reason: z.ZodEnum<{
2608
+ credential_inactive: "credential_inactive";
2609
+ credential_missing: "credential_missing";
2610
+ }>;
2611
+ }, z.core.$strict>, z.ZodObject<{
2612
+ _tag: z.ZodLiteral<"Disconnected">;
2613
+ site: z.ZodString;
2614
+ }, z.core.$strict>], "_tag">;
2677
2615
  meta: z.ZodObject<{
2678
2616
  requestId: z.ZodString;
2679
2617
  version: z.ZodLiteral<"1.0">;
2680
2618
  }, z.core.$strict>;
2681
2619
  }, z.core.$strip>, z.ZodObject<{
2682
- data: z.ZodObject<{
2683
- readonly site: z.ZodString;
2684
- readonly connected: z.ZodLiteral<true>;
2685
- readonly syncStatus: z.ZodString;
2686
- readonly progress: z.ZodObject<{
2687
- percent: z.ZodNumber;
2688
- succeeded: z.ZodNumber;
2689
- failed: z.ZodNumber;
2690
- terminal: z.ZodNumber;
2691
- pending: z.ZodNumber;
2692
- total: z.ZodNumber;
2693
- }, z.core.$loose>;
2694
- readonly dateRange: z.ZodObject<{
2695
- oldest: z.ZodNullable<z.ZodString>;
2696
- newest: z.ZodNullable<z.ZodString>;
2697
- }, z.core.$loose>;
2698
- readonly lastSyncAt: z.ZodNullable<z.ZodString>;
2699
- readonly isSyncing: z.ZodBoolean;
2700
- readonly hasData: z.ZodBoolean;
2701
- readonly completion: z.ZodObject<{
2702
- jobsTerminal: z.ZodBoolean;
2703
- dateCoverageComplete: z.ZodBoolean;
2704
- missingDays: z.ZodNumber;
2705
- }, z.core.$loose>;
2706
- readonly daysSynced: z.ZodNumber;
2707
- readonly daysAvailable: z.ZodNumber;
2708
- }, z.core.$strip>;
2620
+ data: z.ZodDiscriminatedUnion<[z.ZodObject<{
2621
+ _tag: z.ZodLiteral<"Connected">;
2622
+ site: z.ZodString;
2623
+ }, z.core.$loose>, z.ZodObject<{
2624
+ _tag: z.ZodLiteral<"ActionRequired">;
2625
+ site: z.ZodString;
2626
+ reason: z.ZodEnum<{
2627
+ credential_inactive: "credential_inactive";
2628
+ credential_missing: "credential_missing";
2629
+ }>;
2630
+ }, z.core.$loose>, z.ZodObject<{
2631
+ _tag: z.ZodLiteral<"Disconnected">;
2632
+ site: z.ZodString;
2633
+ }, z.core.$loose>], "_tag">;
2709
2634
  meta: z.ZodObject<{
2710
2635
  requestId: z.ZodString;
2711
2636
  version: z.ZodLiteral<"1.0">;
@@ -2720,8 +2645,8 @@ export declare const searchStatusReadOperation: {
2720
2645
  readonly changes: readonly [];
2721
2646
  };
2722
2647
  readonly docs: {
2723
- readonly summary: 'Read Site search status';
2724
- readonly description: 'Returns aggregate Search Console synchronization reach for the credential authoritatively bound to the Site Team.';
2648
+ readonly summary: 'Read Site Search Console connection';
2649
+ readonly description: 'Returns the stored Search Console connection state. It never waits for Google or another provider.';
2725
2650
  readonly tags: readonly ["Sites", "Search"];
2726
2651
  readonly examples: readonly [{
2727
2652
  readonly request: {
@@ -2733,31 +2658,8 @@ export declare const searchStatusReadOperation: {
2733
2658
  readonly status: 200;
2734
2659
  readonly body: {
2735
2660
  readonly data: {
2661
+ readonly _tag: 'Connected';
2736
2662
  readonly site: 'https://example.com';
2737
- readonly connected: true;
2738
- readonly syncStatus: 'synced';
2739
- readonly progress: {
2740
- readonly percent: 100;
2741
- readonly succeeded: 4;
2742
- readonly failed: 0;
2743
- readonly terminal: 4;
2744
- readonly pending: 0;
2745
- readonly total: 4;
2746
- };
2747
- readonly dateRange: {
2748
- readonly oldest: '2026-01-01';
2749
- readonly newest: '2026-08-09';
2750
- };
2751
- readonly lastSyncAt: '2026-08-10T00:00:00.000Z';
2752
- readonly isSyncing: false;
2753
- readonly hasData: true;
2754
- readonly completion: {
2755
- readonly jobsTerminal: true;
2756
- readonly dateCoverageComplete: true;
2757
- readonly missingDays: 0;
2758
- };
2759
- readonly daysSynced: 221;
2760
- readonly daysAvailable: 221;
2761
2663
  };
2762
2664
  readonly meta: {
2763
2665
  readonly requestId: 'req_01JXYZ';
@@ -4310,65 +4212,39 @@ export declare const searchV1Registry: import("./core.js").PublicV1Registry<{
4310
4212
  };
4311
4213
  readonly responses: {
4312
4214
  readonly 200: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
4313
- data: z.ZodObject<{
4314
- readonly site: z.ZodString;
4315
- readonly connected: z.ZodLiteral<true>;
4316
- readonly syncStatus: z.ZodString;
4317
- readonly progress: z.ZodObject<{
4318
- percent: z.ZodNumber;
4319
- succeeded: z.ZodNumber;
4320
- failed: z.ZodNumber;
4321
- terminal: z.ZodNumber;
4322
- pending: z.ZodNumber;
4323
- total: z.ZodNumber;
4324
- }, z.core.$strict>;
4325
- readonly dateRange: z.ZodObject<{
4326
- oldest: z.ZodNullable<z.ZodString>;
4327
- newest: z.ZodNullable<z.ZodString>;
4328
- }, z.core.$strict>;
4329
- readonly lastSyncAt: z.ZodNullable<z.ZodString>;
4330
- readonly isSyncing: z.ZodBoolean;
4331
- readonly hasData: z.ZodBoolean;
4332
- readonly completion: z.ZodObject<{
4333
- jobsTerminal: z.ZodBoolean;
4334
- dateCoverageComplete: z.ZodBoolean;
4335
- missingDays: z.ZodNumber;
4336
- }, z.core.$strict>;
4337
- readonly daysSynced: z.ZodNumber;
4338
- readonly daysAvailable: z.ZodNumber;
4339
- }, z.core.$strip>;
4215
+ data: z.ZodDiscriminatedUnion<[z.ZodObject<{
4216
+ _tag: z.ZodLiteral<"Connected">;
4217
+ site: z.ZodString;
4218
+ }, z.core.$strict>, z.ZodObject<{
4219
+ _tag: z.ZodLiteral<"ActionRequired">;
4220
+ site: z.ZodString;
4221
+ reason: z.ZodEnum<{
4222
+ credential_inactive: "credential_inactive";
4223
+ credential_missing: "credential_missing";
4224
+ }>;
4225
+ }, z.core.$strict>, z.ZodObject<{
4226
+ _tag: z.ZodLiteral<"Disconnected">;
4227
+ site: z.ZodString;
4228
+ }, z.core.$strict>], "_tag">;
4340
4229
  meta: z.ZodObject<{
4341
4230
  requestId: z.ZodString;
4342
4231
  version: z.ZodLiteral<"1.0">;
4343
4232
  }, z.core.$strict>;
4344
4233
  }, z.core.$strip>, z.ZodObject<{
4345
- data: z.ZodObject<{
4346
- readonly site: z.ZodString;
4347
- readonly connected: z.ZodLiteral<true>;
4348
- readonly syncStatus: z.ZodString;
4349
- readonly progress: z.ZodObject<{
4350
- percent: z.ZodNumber;
4351
- succeeded: z.ZodNumber;
4352
- failed: z.ZodNumber;
4353
- terminal: z.ZodNumber;
4354
- pending: z.ZodNumber;
4355
- total: z.ZodNumber;
4356
- }, z.core.$loose>;
4357
- readonly dateRange: z.ZodObject<{
4358
- oldest: z.ZodNullable<z.ZodString>;
4359
- newest: z.ZodNullable<z.ZodString>;
4360
- }, z.core.$loose>;
4361
- readonly lastSyncAt: z.ZodNullable<z.ZodString>;
4362
- readonly isSyncing: z.ZodBoolean;
4363
- readonly hasData: z.ZodBoolean;
4364
- readonly completion: z.ZodObject<{
4365
- jobsTerminal: z.ZodBoolean;
4366
- dateCoverageComplete: z.ZodBoolean;
4367
- missingDays: z.ZodNumber;
4368
- }, z.core.$loose>;
4369
- readonly daysSynced: z.ZodNumber;
4370
- readonly daysAvailable: z.ZodNumber;
4371
- }, z.core.$strip>;
4234
+ data: z.ZodDiscriminatedUnion<[z.ZodObject<{
4235
+ _tag: z.ZodLiteral<"Connected">;
4236
+ site: z.ZodString;
4237
+ }, z.core.$loose>, z.ZodObject<{
4238
+ _tag: z.ZodLiteral<"ActionRequired">;
4239
+ site: z.ZodString;
4240
+ reason: z.ZodEnum<{
4241
+ credential_inactive: "credential_inactive";
4242
+ credential_missing: "credential_missing";
4243
+ }>;
4244
+ }, z.core.$loose>, z.ZodObject<{
4245
+ _tag: z.ZodLiteral<"Disconnected">;
4246
+ site: z.ZodString;
4247
+ }, z.core.$loose>], "_tag">;
4372
4248
  meta: z.ZodObject<{
4373
4249
  requestId: z.ZodString;
4374
4250
  version: z.ZodLiteral<"1.0">;
@@ -4383,8 +4259,8 @@ export declare const searchV1Registry: import("./core.js").PublicV1Registry<{
4383
4259
  readonly changes: readonly [];
4384
4260
  };
4385
4261
  readonly docs: {
4386
- readonly summary: 'Read Site search status';
4387
- readonly description: 'Returns aggregate Search Console synchronization reach for the credential authoritatively bound to the Site Team.';
4262
+ readonly summary: 'Read Site Search Console connection';
4263
+ readonly description: 'Returns the stored Search Console connection state. It never waits for Google or another provider.';
4388
4264
  readonly tags: readonly ["Sites", "Search"];
4389
4265
  readonly examples: readonly [{
4390
4266
  readonly request: {
@@ -4396,31 +4272,8 @@ export declare const searchV1Registry: import("./core.js").PublicV1Registry<{
4396
4272
  readonly status: 200;
4397
4273
  readonly body: {
4398
4274
  readonly data: {
4275
+ readonly _tag: 'Connected';
4399
4276
  readonly site: 'https://example.com';
4400
- readonly connected: true;
4401
- readonly syncStatus: 'synced';
4402
- readonly progress: {
4403
- readonly percent: 100;
4404
- readonly succeeded: 4;
4405
- readonly failed: 0;
4406
- readonly terminal: 4;
4407
- readonly pending: 0;
4408
- readonly total: 4;
4409
- };
4410
- readonly dateRange: {
4411
- readonly oldest: '2026-01-01';
4412
- readonly newest: '2026-08-09';
4413
- };
4414
- readonly lastSyncAt: '2026-08-10T00:00:00.000Z';
4415
- readonly isSyncing: false;
4416
- readonly hasData: true;
4417
- readonly completion: {
4418
- readonly jobsTerminal: true;
4419
- readonly dateCoverageComplete: true;
4420
- readonly missingDays: 0;
4421
- };
4422
- readonly daysSynced: 221;
4423
- readonly daysAvailable: 221;
4424
4277
  };
4425
4278
  readonly meta: {
4426
4279
  readonly requestId: 'req_01JXYZ';
@@ -5169,4 +5022,3 @@ export type IndexingDiagnosticsData = z.output<typeof indexingDiagnosticsDataSch
5169
5022
  export type IndexingHistoryQuery = z.input<typeof indexingHistoryQuerySchema>;
5170
5023
  export type IndexingHistoryData = z.output<typeof indexingHistoryDataSchema.client>;
5171
5024
  export type UrlInspectionData = z.output<typeof urlInspectionDataSchema.client>;
5172
- export {};
package/dist/v1/gsc.js CHANGED
@@ -247,53 +247,26 @@ export const searchAnalyticsDataSchema = {
247
247
  ]),
248
248
  };
249
249
  export const searchAnalyticsResponseSchema = defineSuccessEnvelope(searchAnalyticsDataSchema);
250
- const searchStatusDataSchema = defineResponseObject({
251
- site: schema.string().min(1),
252
- connected: schema.literal(true),
253
- syncStatus: schema.string().min(1),
254
- progress: schema.strictObject({
255
- percent: schema.number().min(0).max(100),
256
- succeeded: schema.number().int().nonnegative(),
257
- failed: schema.number().int().nonnegative(),
258
- terminal: schema.number().int().nonnegative(),
259
- pending: schema.number().int().nonnegative(),
260
- total: schema.number().int().nonnegative(),
261
- }),
262
- dateRange: schema.strictObject({ oldest: schema.string().nullable(), newest: schema.string().nullable() }),
263
- lastSyncAt: schema.string().datetime().nullable(),
264
- isSyncing: schema.boolean(),
265
- hasData: schema.boolean(),
266
- completion: schema.strictObject({
267
- jobsTerminal: schema.boolean(),
268
- dateCoverageComplete: schema.boolean(),
269
- missingDays: schema.number().int().nonnegative(),
270
- }),
271
- daysSynced: schema.number().int().nonnegative(),
272
- daysAvailable: schema.number().int().nonnegative(),
273
- }, {
274
- site: schema.string().min(1),
275
- connected: schema.literal(true),
276
- syncStatus: schema.string().min(1),
277
- progress: schema.looseObject({
278
- percent: schema.number().min(0).max(100),
279
- succeeded: schema.number().int().nonnegative(),
280
- failed: schema.number().int().nonnegative(),
281
- terminal: schema.number().int().nonnegative(),
282
- pending: schema.number().int().nonnegative(),
283
- total: schema.number().int().nonnegative(),
284
- }),
285
- dateRange: schema.looseObject({ oldest: schema.string().nullable(), newest: schema.string().nullable() }),
286
- lastSyncAt: schema.string().datetime().nullable(),
287
- isSyncing: schema.boolean(),
288
- hasData: schema.boolean(),
289
- completion: schema.looseObject({
290
- jobsTerminal: schema.boolean(),
291
- dateCoverageComplete: schema.boolean(),
292
- missingDays: schema.number().int().nonnegative(),
293
- }),
294
- daysSynced: schema.number().int().nonnegative(),
295
- daysAvailable: schema.number().int().nonnegative(),
296
- });
250
+ export const searchStatusDataSchema = {
251
+ producer: schema.discriminatedUnion('_tag', [
252
+ schema.strictObject({ _tag: schema.literal('Connected'), site: schema.string().min(1) }),
253
+ schema.strictObject({
254
+ _tag: schema.literal('ActionRequired'),
255
+ site: schema.string().min(1),
256
+ reason: schema.enum(['credential_missing', 'credential_inactive']),
257
+ }),
258
+ schema.strictObject({ _tag: schema.literal('Disconnected'), site: schema.string().min(1) }),
259
+ ]),
260
+ client: schema.discriminatedUnion('_tag', [
261
+ schema.looseObject({ _tag: schema.literal('Connected'), site: schema.string().min(1) }),
262
+ schema.looseObject({
263
+ _tag: schema.literal('ActionRequired'),
264
+ site: schema.string().min(1),
265
+ reason: schema.enum(['credential_missing', 'credential_inactive']),
266
+ }),
267
+ schema.looseObject({ _tag: schema.literal('Disconnected'), site: schema.string().min(1) }),
268
+ ]),
269
+ };
297
270
  export const searchStatusResponseSchema = defineSuccessEnvelope(searchStatusDataSchema);
298
271
  export const indexingDiagnosticsQuerySchema = schema.strictObject({
299
272
  view: schema.enum(['summary', 'urls']).default('summary'),
@@ -520,10 +493,10 @@ export const searchStatusReadOperation = defineOperation({
520
493
  responses: { 200: searchStatusResponseSchema },
521
494
  resources: { reads: [{ type: 'site.identity', idFrom: 'params.siteId' }], changes: [] },
522
495
  docs: {
523
- summary: 'Read Site search status',
524
- description: 'Returns aggregate Search Console synchronization reach for the credential authoritatively bound to the Site Team.',
496
+ summary: 'Read Site Search Console connection',
497
+ description: 'Returns the stored Search Console connection state. It never waits for Google or another provider.',
525
498
  tags: ['Sites', 'Search'],
526
- examples: [{ request: { params: { siteId: 'site_01JXYZ' } }, response: { status: 200, body: { data: { site: 'https://example.com', connected: true, syncStatus: 'synced', progress: { percent: 100, succeeded: 4, failed: 0, terminal: 4, pending: 0, total: 4 }, dateRange: { oldest: '2026-01-01', newest: '2026-08-09' }, lastSyncAt: '2026-08-10T00:00:00.000Z', isSyncing: false, hasData: true, completion: { jobsTerminal: true, dateCoverageComplete: true, missingDays: 0 }, daysSynced: 221, daysAvailable: 221 }, meta: { requestId: 'req_01JXYZ', version: '1.0' } } } }],
499
+ examples: [{ request: { params: { siteId: 'site_01JXYZ' } }, response: { status: 200, body: { data: { _tag: 'Connected', site: 'https://example.com' }, meta: { requestId: 'req_01JXYZ', version: '1.0' } } } }],
527
500
  },
528
501
  });
529
502
  export const indexingDiagnosticsReadOperation = defineOperation({