@nuxtseo/protocol 0.1.5 → 0.2.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.
@@ -973,6 +973,770 @@ export declare const pageScanOperation: {
973
973
  }];
974
974
  };
975
975
  };
976
+ export declare const pageIssuesQuerySchema: z.ZodObject<{
977
+ actionId: z.ZodOptional<z.ZodString>;
978
+ source: z.ZodOptional<z.ZodString>;
979
+ issue: z.ZodOptional<z.ZodString>;
980
+ url: z.ZodOptional<z.ZodString>;
981
+ pathPrefix: z.ZodOptional<z.ZodString>;
982
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
983
+ offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
984
+ includeResolved: z.ZodPipe<z.ZodDefault<z.ZodEnum<{
985
+ 0: "0";
986
+ 1: "1";
987
+ false: "false";
988
+ true: "true";
989
+ }>>, z.ZodTransform<boolean, "0" | "1" | "false" | "true">>;
990
+ }, z.core.$strict>;
991
+ export declare const pageIssueTargetSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
992
+ url: z.ZodString;
993
+ status: z.ZodNullable<z.ZodNumber>;
994
+ }, z.core.$strip>, z.ZodObject<{
995
+ url: z.ZodString;
996
+ status: z.ZodNullable<z.ZodNumber>;
997
+ }, z.core.$strip>>;
998
+ export declare const pageIssueElementSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
999
+ selector: z.ZodNullable<z.ZodString>;
1000
+ snippet: z.ZodNullable<z.ZodString>;
1001
+ message: z.ZodNullable<z.ZodString>;
1002
+ explanation: z.ZodNullable<z.ZodString>;
1003
+ sourceUrl: z.ZodNullable<z.ZodString>;
1004
+ }, z.core.$strip>, z.ZodObject<{
1005
+ selector: z.ZodNullable<z.ZodString>;
1006
+ snippet: z.ZodNullable<z.ZodString>;
1007
+ message: z.ZodNullable<z.ZodString>;
1008
+ explanation: z.ZodNullable<z.ZodString>;
1009
+ sourceUrl: z.ZodNullable<z.ZodString>;
1010
+ }, z.core.$strip>>;
1011
+ /**
1012
+ * `observedContentType` and `observedAt` are evidence, never a gate.
1013
+ * `observedAt` dates a Search Console verdict: a fault fixed since that date is
1014
+ * still reported here until Google re-inspects, so quote it as "as of", never
1015
+ * as current. A null `observedContentType` means unknown, never `text/html`.
1016
+ */
1017
+ export declare const pageIssueDetailSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
1018
+ readonly label: z.ZodNullable<z.ZodString>;
1019
+ readonly resourceUrl: z.ZodNullable<z.ZodString>;
1020
+ readonly statusCode: z.ZodNullable<z.ZodNumber>;
1021
+ readonly targets: z.ZodArray<z.ZodObject<{
1022
+ url: z.ZodString;
1023
+ status: z.ZodNullable<z.ZodNumber>;
1024
+ }, z.core.$strip>>;
1025
+ readonly isNew: z.ZodNullable<z.ZodBoolean>;
1026
+ readonly title: z.ZodNullable<z.ZodString>;
1027
+ readonly description: z.ZodNullable<z.ZodString>;
1028
+ readonly wcag: z.ZodArray<z.ZodString>;
1029
+ readonly elements: z.ZodArray<z.ZodObject<{
1030
+ selector: z.ZodNullable<z.ZodString>;
1031
+ snippet: z.ZodNullable<z.ZodString>;
1032
+ message: z.ZodNullable<z.ZodString>;
1033
+ explanation: z.ZodNullable<z.ZodString>;
1034
+ sourceUrl: z.ZodNullable<z.ZodString>;
1035
+ }, z.core.$strip>>;
1036
+ readonly elementsTotal: z.ZodNullable<z.ZodNumber>;
1037
+ readonly observedContentType: z.ZodNullable<z.ZodString>;
1038
+ /**
1039
+ * Whether the crawl recorded a content type for this row at all. It is the
1040
+ * only way to read a null `observedContentType`: false means the crawl
1041
+ * never captured one, true means it saw a response it could not name.
1042
+ * Neither is `text/html`. The `page_issues` MCP tool carries the same
1043
+ * distinction by omitting the key, so publishing the flag keeps the two
1044
+ * surfaces answering the same question.
1045
+ */
1046
+ readonly observedContentTypeCaptured: z.ZodBoolean;
1047
+ readonly redirectTarget: z.ZodNullable<z.ZodString>;
1048
+ readonly observedAt: z.ZodNullable<z.ZodString>;
1049
+ }, z.core.$strip>, z.ZodObject<{
1050
+ readonly label: z.ZodNullable<z.ZodString>;
1051
+ readonly resourceUrl: z.ZodNullable<z.ZodString>;
1052
+ readonly statusCode: z.ZodNullable<z.ZodNumber>;
1053
+ readonly targets: z.ZodArray<z.ZodObject<{
1054
+ url: z.ZodString;
1055
+ status: z.ZodNullable<z.ZodNumber>;
1056
+ }, z.core.$strip>>;
1057
+ readonly isNew: z.ZodNullable<z.ZodBoolean>;
1058
+ readonly title: z.ZodNullable<z.ZodString>;
1059
+ readonly description: z.ZodNullable<z.ZodString>;
1060
+ readonly wcag: z.ZodArray<z.ZodString>;
1061
+ readonly elements: z.ZodArray<z.ZodObject<{
1062
+ selector: z.ZodNullable<z.ZodString>;
1063
+ snippet: z.ZodNullable<z.ZodString>;
1064
+ message: z.ZodNullable<z.ZodString>;
1065
+ explanation: z.ZodNullable<z.ZodString>;
1066
+ sourceUrl: z.ZodNullable<z.ZodString>;
1067
+ }, z.core.$strip>>;
1068
+ readonly elementsTotal: z.ZodNullable<z.ZodNumber>;
1069
+ readonly observedContentType: z.ZodNullable<z.ZodString>;
1070
+ readonly observedContentTypeCaptured: z.ZodBoolean;
1071
+ readonly redirectTarget: z.ZodNullable<z.ZodString>;
1072
+ readonly observedAt: z.ZodNullable<z.ZodString>;
1073
+ }, z.core.$strip>>;
1074
+ /**
1075
+ * `resolution` says WHY a closed row closed. `unmonitored` and `expired` mean
1076
+ * nobody re-checked the page, so the defect may still be live; only a fixed row
1077
+ * is evidence of a fix.
1078
+ */
1079
+ export declare const pageIssueSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
1080
+ readonly url: z.ZodString;
1081
+ readonly path: z.ZodString;
1082
+ readonly pathWithQuery: z.ZodNullable<z.ZodString>;
1083
+ readonly source: z.ZodString;
1084
+ readonly issueType: z.ZodString;
1085
+ readonly severity: z.ZodString;
1086
+ readonly detail: z.ZodObject<{
1087
+ readonly label: z.ZodNullable<z.ZodString>;
1088
+ readonly resourceUrl: z.ZodNullable<z.ZodString>;
1089
+ readonly statusCode: z.ZodNullable<z.ZodNumber>;
1090
+ readonly targets: z.ZodArray<z.ZodObject<{
1091
+ url: z.ZodString;
1092
+ status: z.ZodNullable<z.ZodNumber>;
1093
+ }, z.core.$strip>>;
1094
+ readonly isNew: z.ZodNullable<z.ZodBoolean>;
1095
+ readonly title: z.ZodNullable<z.ZodString>;
1096
+ readonly description: z.ZodNullable<z.ZodString>;
1097
+ readonly wcag: z.ZodArray<z.ZodString>;
1098
+ readonly elements: z.ZodArray<z.ZodObject<{
1099
+ selector: z.ZodNullable<z.ZodString>;
1100
+ snippet: z.ZodNullable<z.ZodString>;
1101
+ message: z.ZodNullable<z.ZodString>;
1102
+ explanation: z.ZodNullable<z.ZodString>;
1103
+ sourceUrl: z.ZodNullable<z.ZodString>;
1104
+ }, z.core.$strip>>;
1105
+ readonly elementsTotal: z.ZodNullable<z.ZodNumber>;
1106
+ readonly observedContentType: z.ZodNullable<z.ZodString>;
1107
+ /**
1108
+ * Whether the crawl recorded a content type for this row at all. It is the
1109
+ * only way to read a null `observedContentType`: false means the crawl
1110
+ * never captured one, true means it saw a response it could not name.
1111
+ * Neither is `text/html`. The `page_issues` MCP tool carries the same
1112
+ * distinction by omitting the key, so publishing the flag keeps the two
1113
+ * surfaces answering the same question.
1114
+ */
1115
+ readonly observedContentTypeCaptured: z.ZodBoolean;
1116
+ readonly redirectTarget: z.ZodNullable<z.ZodString>;
1117
+ readonly observedAt: z.ZodNullable<z.ZodString>;
1118
+ }, z.core.$strip>;
1119
+ readonly firstSeenAt: z.ZodNullable<z.ZodString>;
1120
+ readonly lastSeenAt: z.ZodNullable<z.ZodString>;
1121
+ readonly resolution: z.ZodNullable<z.ZodString>;
1122
+ readonly linkedFrom: z.ZodArray<z.ZodString>;
1123
+ readonly linkedFromTotal: z.ZodNullable<z.ZodNumber>;
1124
+ }, z.core.$strip>, z.ZodObject<{
1125
+ readonly url: z.ZodString;
1126
+ readonly path: z.ZodString;
1127
+ readonly pathWithQuery: z.ZodNullable<z.ZodString>;
1128
+ readonly source: z.ZodString;
1129
+ readonly issueType: z.ZodString;
1130
+ readonly severity: z.ZodString;
1131
+ readonly detail: z.ZodObject<{
1132
+ readonly label: z.ZodNullable<z.ZodString>;
1133
+ readonly resourceUrl: z.ZodNullable<z.ZodString>;
1134
+ readonly statusCode: z.ZodNullable<z.ZodNumber>;
1135
+ readonly targets: z.ZodArray<z.ZodObject<{
1136
+ url: z.ZodString;
1137
+ status: z.ZodNullable<z.ZodNumber>;
1138
+ }, z.core.$strip>>;
1139
+ readonly isNew: z.ZodNullable<z.ZodBoolean>;
1140
+ readonly title: z.ZodNullable<z.ZodString>;
1141
+ readonly description: z.ZodNullable<z.ZodString>;
1142
+ readonly wcag: z.ZodArray<z.ZodString>;
1143
+ readonly elements: z.ZodArray<z.ZodObject<{
1144
+ selector: z.ZodNullable<z.ZodString>;
1145
+ snippet: z.ZodNullable<z.ZodString>;
1146
+ message: z.ZodNullable<z.ZodString>;
1147
+ explanation: z.ZodNullable<z.ZodString>;
1148
+ sourceUrl: z.ZodNullable<z.ZodString>;
1149
+ }, z.core.$strip>>;
1150
+ readonly elementsTotal: z.ZodNullable<z.ZodNumber>;
1151
+ readonly observedContentType: z.ZodNullable<z.ZodString>;
1152
+ readonly observedContentTypeCaptured: z.ZodBoolean;
1153
+ readonly redirectTarget: z.ZodNullable<z.ZodString>;
1154
+ readonly observedAt: z.ZodNullable<z.ZodString>;
1155
+ }, z.core.$strip>;
1156
+ readonly firstSeenAt: z.ZodNullable<z.ZodString>;
1157
+ readonly lastSeenAt: z.ZodNullable<z.ZodString>;
1158
+ readonly resolution: z.ZodNullable<z.ZodString>;
1159
+ readonly linkedFrom: z.ZodArray<z.ZodString>;
1160
+ readonly linkedFromTotal: z.ZodNullable<z.ZodNumber>;
1161
+ }, z.core.$strip>>;
1162
+ export declare const pageIssuesDataSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
1163
+ readonly semantics: z.ZodLiteral<"raw-observations">;
1164
+ readonly issues: z.ZodArray<z.ZodObject<{
1165
+ readonly url: z.ZodString;
1166
+ readonly path: z.ZodString;
1167
+ readonly pathWithQuery: z.ZodNullable<z.ZodString>;
1168
+ readonly source: z.ZodString;
1169
+ readonly issueType: z.ZodString;
1170
+ readonly severity: z.ZodString;
1171
+ readonly detail: z.ZodObject<{
1172
+ readonly label: z.ZodNullable<z.ZodString>;
1173
+ readonly resourceUrl: z.ZodNullable<z.ZodString>;
1174
+ readonly statusCode: z.ZodNullable<z.ZodNumber>;
1175
+ readonly targets: z.ZodArray<z.ZodObject<{
1176
+ url: z.ZodString;
1177
+ status: z.ZodNullable<z.ZodNumber>;
1178
+ }, z.core.$strip>>;
1179
+ readonly isNew: z.ZodNullable<z.ZodBoolean>;
1180
+ readonly title: z.ZodNullable<z.ZodString>;
1181
+ readonly description: z.ZodNullable<z.ZodString>;
1182
+ readonly wcag: z.ZodArray<z.ZodString>;
1183
+ readonly elements: z.ZodArray<z.ZodObject<{
1184
+ selector: z.ZodNullable<z.ZodString>;
1185
+ snippet: z.ZodNullable<z.ZodString>;
1186
+ message: z.ZodNullable<z.ZodString>;
1187
+ explanation: z.ZodNullable<z.ZodString>;
1188
+ sourceUrl: z.ZodNullable<z.ZodString>;
1189
+ }, z.core.$strip>>;
1190
+ readonly elementsTotal: z.ZodNullable<z.ZodNumber>;
1191
+ readonly observedContentType: z.ZodNullable<z.ZodString>;
1192
+ /**
1193
+ * Whether the crawl recorded a content type for this row at all. It is the
1194
+ * only way to read a null `observedContentType`: false means the crawl
1195
+ * never captured one, true means it saw a response it could not name.
1196
+ * Neither is `text/html`. The `page_issues` MCP tool carries the same
1197
+ * distinction by omitting the key, so publishing the flag keeps the two
1198
+ * surfaces answering the same question.
1199
+ */
1200
+ readonly observedContentTypeCaptured: z.ZodBoolean;
1201
+ readonly redirectTarget: z.ZodNullable<z.ZodString>;
1202
+ readonly observedAt: z.ZodNullable<z.ZodString>;
1203
+ }, z.core.$strip>;
1204
+ readonly firstSeenAt: z.ZodNullable<z.ZodString>;
1205
+ readonly lastSeenAt: z.ZodNullable<z.ZodString>;
1206
+ readonly resolution: z.ZodNullable<z.ZodString>;
1207
+ readonly linkedFrom: z.ZodArray<z.ZodString>;
1208
+ readonly linkedFromTotal: z.ZodNullable<z.ZodNumber>;
1209
+ }, z.core.$strip>>;
1210
+ readonly total: z.ZodNumber;
1211
+ readonly limit: z.ZodNumber;
1212
+ readonly offset: z.ZodNumber;
1213
+ /** Source and issue pairs this Site has, returned when the selector matched nothing. */
1214
+ readonly availableKeys: z.ZodNullable<z.ZodArray<z.ZodObject<{
1215
+ source: z.ZodString;
1216
+ issue: z.ZodString;
1217
+ openCount: z.ZodNumber;
1218
+ }, z.core.$strict>>>;
1219
+ readonly message: z.ZodNullable<z.ZodString>;
1220
+ readonly asOf: z.ZodNullable<z.ZodString>;
1221
+ readonly coverage: z.ZodObject<{
1222
+ perSourceCap: z.ZodNumber;
1223
+ perRowTargetCap: z.ZodNumber;
1224
+ perRowElementCap: z.ZodNumber;
1225
+ possiblyTruncated: z.ZodBoolean;
1226
+ }, z.core.$strict>;
1227
+ }, z.core.$strip>, z.ZodObject<{
1228
+ readonly semantics: z.ZodLiteral<"raw-observations">;
1229
+ readonly issues: z.ZodArray<z.ZodObject<{
1230
+ readonly url: z.ZodString;
1231
+ readonly path: z.ZodString;
1232
+ readonly pathWithQuery: z.ZodNullable<z.ZodString>;
1233
+ readonly source: z.ZodString;
1234
+ readonly issueType: z.ZodString;
1235
+ readonly severity: z.ZodString;
1236
+ readonly detail: z.ZodObject<{
1237
+ readonly label: z.ZodNullable<z.ZodString>;
1238
+ readonly resourceUrl: z.ZodNullable<z.ZodString>;
1239
+ readonly statusCode: z.ZodNullable<z.ZodNumber>;
1240
+ readonly targets: z.ZodArray<z.ZodObject<{
1241
+ url: z.ZodString;
1242
+ status: z.ZodNullable<z.ZodNumber>;
1243
+ }, z.core.$strip>>;
1244
+ readonly isNew: z.ZodNullable<z.ZodBoolean>;
1245
+ readonly title: z.ZodNullable<z.ZodString>;
1246
+ readonly description: z.ZodNullable<z.ZodString>;
1247
+ readonly wcag: z.ZodArray<z.ZodString>;
1248
+ readonly elements: z.ZodArray<z.ZodObject<{
1249
+ selector: z.ZodNullable<z.ZodString>;
1250
+ snippet: z.ZodNullable<z.ZodString>;
1251
+ message: z.ZodNullable<z.ZodString>;
1252
+ explanation: z.ZodNullable<z.ZodString>;
1253
+ sourceUrl: z.ZodNullable<z.ZodString>;
1254
+ }, z.core.$strip>>;
1255
+ readonly elementsTotal: z.ZodNullable<z.ZodNumber>;
1256
+ readonly observedContentType: z.ZodNullable<z.ZodString>;
1257
+ readonly observedContentTypeCaptured: z.ZodBoolean;
1258
+ readonly redirectTarget: z.ZodNullable<z.ZodString>;
1259
+ readonly observedAt: z.ZodNullable<z.ZodString>;
1260
+ }, z.core.$strip>;
1261
+ readonly firstSeenAt: z.ZodNullable<z.ZodString>;
1262
+ readonly lastSeenAt: z.ZodNullable<z.ZodString>;
1263
+ readonly resolution: z.ZodNullable<z.ZodString>;
1264
+ readonly linkedFrom: z.ZodArray<z.ZodString>;
1265
+ readonly linkedFromTotal: z.ZodNullable<z.ZodNumber>;
1266
+ }, z.core.$strip>>;
1267
+ readonly total: z.ZodNumber;
1268
+ readonly limit: z.ZodNumber;
1269
+ readonly offset: z.ZodNumber;
1270
+ readonly availableKeys: z.ZodNullable<z.ZodArray<z.ZodObject<{
1271
+ source: z.ZodString;
1272
+ issue: z.ZodString;
1273
+ openCount: z.ZodNumber;
1274
+ }, z.core.$loose>>>;
1275
+ readonly message: z.ZodNullable<z.ZodString>;
1276
+ readonly asOf: z.ZodNullable<z.ZodString>;
1277
+ readonly coverage: z.ZodObject<{
1278
+ perSourceCap: z.ZodNumber;
1279
+ perRowTargetCap: z.ZodNumber;
1280
+ perRowElementCap: z.ZodNumber;
1281
+ possiblyTruncated: z.ZodBoolean;
1282
+ }, z.core.$loose>;
1283
+ }, z.core.$strip>>;
1284
+ export declare const pageIssuesResponseSchema: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
1285
+ data: z.ZodObject<{
1286
+ readonly semantics: z.ZodLiteral<"raw-observations">;
1287
+ readonly issues: z.ZodArray<z.ZodObject<{
1288
+ readonly url: z.ZodString;
1289
+ readonly path: z.ZodString;
1290
+ readonly pathWithQuery: z.ZodNullable<z.ZodString>;
1291
+ readonly source: z.ZodString;
1292
+ readonly issueType: z.ZodString;
1293
+ readonly severity: z.ZodString;
1294
+ readonly detail: z.ZodObject<{
1295
+ readonly label: z.ZodNullable<z.ZodString>;
1296
+ readonly resourceUrl: z.ZodNullable<z.ZodString>;
1297
+ readonly statusCode: z.ZodNullable<z.ZodNumber>;
1298
+ readonly targets: z.ZodArray<z.ZodObject<{
1299
+ url: z.ZodString;
1300
+ status: z.ZodNullable<z.ZodNumber>;
1301
+ }, z.core.$strip>>;
1302
+ readonly isNew: z.ZodNullable<z.ZodBoolean>;
1303
+ readonly title: z.ZodNullable<z.ZodString>;
1304
+ readonly description: z.ZodNullable<z.ZodString>;
1305
+ readonly wcag: z.ZodArray<z.ZodString>;
1306
+ readonly elements: z.ZodArray<z.ZodObject<{
1307
+ selector: z.ZodNullable<z.ZodString>;
1308
+ snippet: z.ZodNullable<z.ZodString>;
1309
+ message: z.ZodNullable<z.ZodString>;
1310
+ explanation: z.ZodNullable<z.ZodString>;
1311
+ sourceUrl: z.ZodNullable<z.ZodString>;
1312
+ }, z.core.$strip>>;
1313
+ readonly elementsTotal: z.ZodNullable<z.ZodNumber>;
1314
+ readonly observedContentType: z.ZodNullable<z.ZodString>;
1315
+ /**
1316
+ * Whether the crawl recorded a content type for this row at all. It is the
1317
+ * only way to read a null `observedContentType`: false means the crawl
1318
+ * never captured one, true means it saw a response it could not name.
1319
+ * Neither is `text/html`. The `page_issues` MCP tool carries the same
1320
+ * distinction by omitting the key, so publishing the flag keeps the two
1321
+ * surfaces answering the same question.
1322
+ */
1323
+ readonly observedContentTypeCaptured: z.ZodBoolean;
1324
+ readonly redirectTarget: z.ZodNullable<z.ZodString>;
1325
+ readonly observedAt: z.ZodNullable<z.ZodString>;
1326
+ }, z.core.$strip>;
1327
+ readonly firstSeenAt: z.ZodNullable<z.ZodString>;
1328
+ readonly lastSeenAt: z.ZodNullable<z.ZodString>;
1329
+ readonly resolution: z.ZodNullable<z.ZodString>;
1330
+ readonly linkedFrom: z.ZodArray<z.ZodString>;
1331
+ readonly linkedFromTotal: z.ZodNullable<z.ZodNumber>;
1332
+ }, z.core.$strip>>;
1333
+ readonly total: z.ZodNumber;
1334
+ readonly limit: z.ZodNumber;
1335
+ readonly offset: z.ZodNumber;
1336
+ /** Source and issue pairs this Site has, returned when the selector matched nothing. */
1337
+ readonly availableKeys: z.ZodNullable<z.ZodArray<z.ZodObject<{
1338
+ source: z.ZodString;
1339
+ issue: z.ZodString;
1340
+ openCount: z.ZodNumber;
1341
+ }, z.core.$strict>>>;
1342
+ readonly message: z.ZodNullable<z.ZodString>;
1343
+ readonly asOf: z.ZodNullable<z.ZodString>;
1344
+ readonly coverage: z.ZodObject<{
1345
+ perSourceCap: z.ZodNumber;
1346
+ perRowTargetCap: z.ZodNumber;
1347
+ perRowElementCap: z.ZodNumber;
1348
+ possiblyTruncated: z.ZodBoolean;
1349
+ }, z.core.$strict>;
1350
+ }, z.core.$strip>;
1351
+ meta: z.ZodObject<{
1352
+ requestId: z.ZodString;
1353
+ version: z.ZodLiteral<"1.0">;
1354
+ }, z.core.$strict>;
1355
+ }, z.core.$strip>, z.ZodObject<{
1356
+ data: z.ZodObject<{
1357
+ readonly semantics: z.ZodLiteral<"raw-observations">;
1358
+ readonly issues: z.ZodArray<z.ZodObject<{
1359
+ readonly url: z.ZodString;
1360
+ readonly path: z.ZodString;
1361
+ readonly pathWithQuery: z.ZodNullable<z.ZodString>;
1362
+ readonly source: z.ZodString;
1363
+ readonly issueType: z.ZodString;
1364
+ readonly severity: z.ZodString;
1365
+ readonly detail: z.ZodObject<{
1366
+ readonly label: z.ZodNullable<z.ZodString>;
1367
+ readonly resourceUrl: z.ZodNullable<z.ZodString>;
1368
+ readonly statusCode: z.ZodNullable<z.ZodNumber>;
1369
+ readonly targets: z.ZodArray<z.ZodObject<{
1370
+ url: z.ZodString;
1371
+ status: z.ZodNullable<z.ZodNumber>;
1372
+ }, z.core.$strip>>;
1373
+ readonly isNew: z.ZodNullable<z.ZodBoolean>;
1374
+ readonly title: z.ZodNullable<z.ZodString>;
1375
+ readonly description: z.ZodNullable<z.ZodString>;
1376
+ readonly wcag: z.ZodArray<z.ZodString>;
1377
+ readonly elements: z.ZodArray<z.ZodObject<{
1378
+ selector: z.ZodNullable<z.ZodString>;
1379
+ snippet: z.ZodNullable<z.ZodString>;
1380
+ message: z.ZodNullable<z.ZodString>;
1381
+ explanation: z.ZodNullable<z.ZodString>;
1382
+ sourceUrl: z.ZodNullable<z.ZodString>;
1383
+ }, z.core.$strip>>;
1384
+ readonly elementsTotal: z.ZodNullable<z.ZodNumber>;
1385
+ readonly observedContentType: z.ZodNullable<z.ZodString>;
1386
+ readonly observedContentTypeCaptured: z.ZodBoolean;
1387
+ readonly redirectTarget: z.ZodNullable<z.ZodString>;
1388
+ readonly observedAt: z.ZodNullable<z.ZodString>;
1389
+ }, z.core.$strip>;
1390
+ readonly firstSeenAt: z.ZodNullable<z.ZodString>;
1391
+ readonly lastSeenAt: z.ZodNullable<z.ZodString>;
1392
+ readonly resolution: z.ZodNullable<z.ZodString>;
1393
+ readonly linkedFrom: z.ZodArray<z.ZodString>;
1394
+ readonly linkedFromTotal: z.ZodNullable<z.ZodNumber>;
1395
+ }, z.core.$strip>>;
1396
+ readonly total: z.ZodNumber;
1397
+ readonly limit: z.ZodNumber;
1398
+ readonly offset: z.ZodNumber;
1399
+ readonly availableKeys: z.ZodNullable<z.ZodArray<z.ZodObject<{
1400
+ source: z.ZodString;
1401
+ issue: z.ZodString;
1402
+ openCount: z.ZodNumber;
1403
+ }, z.core.$loose>>>;
1404
+ readonly message: z.ZodNullable<z.ZodString>;
1405
+ readonly asOf: z.ZodNullable<z.ZodString>;
1406
+ readonly coverage: z.ZodObject<{
1407
+ perSourceCap: z.ZodNumber;
1408
+ perRowTargetCap: z.ZodNumber;
1409
+ perRowElementCap: z.ZodNumber;
1410
+ possiblyTruncated: z.ZodBoolean;
1411
+ }, z.core.$loose>;
1412
+ }, z.core.$strip>;
1413
+ meta: z.ZodObject<{
1414
+ requestId: z.ZodString;
1415
+ version: z.ZodLiteral<"1.0">;
1416
+ }, z.core.$loose>;
1417
+ }, z.core.$strip>>;
1418
+ export type PageIssues = z.output<typeof pageIssuesDataSchema.producer>;
1419
+ export declare const pageIssuesOperation: {
1420
+ readonly id: 'page.issues';
1421
+ readonly method: 'GET';
1422
+ readonly path: '/api/v1/sites/{siteId}/pages/issues';
1423
+ readonly visibility: 'public';
1424
+ readonly semantics: {
1425
+ readonly kind: 'query';
1426
+ readonly sideEffects: 'none';
1427
+ readonly retry: 'idempotent';
1428
+ readonly readConsistency: 'primary';
1429
+ };
1430
+ readonly auth: {
1431
+ readonly credentials: readonly ["session", "api_token"];
1432
+ readonly scopes: readonly ["page:read"];
1433
+ readonly minimumRole: 'viewer';
1434
+ readonly ownership: 'site';
1435
+ };
1436
+ readonly request: {
1437
+ readonly params: z.ZodObject<{
1438
+ siteId: z.ZodString;
1439
+ }, z.core.$strict>;
1440
+ readonly query: z.ZodObject<{
1441
+ actionId: z.ZodOptional<z.ZodString>;
1442
+ source: z.ZodOptional<z.ZodString>;
1443
+ issue: z.ZodOptional<z.ZodString>;
1444
+ url: z.ZodOptional<z.ZodString>;
1445
+ pathPrefix: z.ZodOptional<z.ZodString>;
1446
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
1447
+ offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
1448
+ includeResolved: z.ZodPipe<z.ZodDefault<z.ZodEnum<{
1449
+ 0: "0";
1450
+ 1: "1";
1451
+ false: "false";
1452
+ true: "true";
1453
+ }>>, z.ZodTransform<boolean, "0" | "1" | "false" | "true">>;
1454
+ }, z.core.$strict>;
1455
+ readonly headers: null;
1456
+ readonly body: null;
1457
+ };
1458
+ readonly responses: {
1459
+ readonly 200: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
1460
+ data: z.ZodObject<{
1461
+ readonly semantics: z.ZodLiteral<"raw-observations">;
1462
+ readonly issues: z.ZodArray<z.ZodObject<{
1463
+ readonly url: z.ZodString;
1464
+ readonly path: z.ZodString;
1465
+ readonly pathWithQuery: z.ZodNullable<z.ZodString>;
1466
+ readonly source: z.ZodString;
1467
+ readonly issueType: z.ZodString;
1468
+ readonly severity: z.ZodString;
1469
+ readonly detail: z.ZodObject<{
1470
+ readonly label: z.ZodNullable<z.ZodString>;
1471
+ readonly resourceUrl: z.ZodNullable<z.ZodString>;
1472
+ readonly statusCode: z.ZodNullable<z.ZodNumber>;
1473
+ readonly targets: z.ZodArray<z.ZodObject<{
1474
+ url: z.ZodString;
1475
+ status: z.ZodNullable<z.ZodNumber>;
1476
+ }, z.core.$strip>>;
1477
+ readonly isNew: z.ZodNullable<z.ZodBoolean>;
1478
+ readonly title: z.ZodNullable<z.ZodString>;
1479
+ readonly description: z.ZodNullable<z.ZodString>;
1480
+ readonly wcag: z.ZodArray<z.ZodString>;
1481
+ readonly elements: z.ZodArray<z.ZodObject<{
1482
+ selector: z.ZodNullable<z.ZodString>;
1483
+ snippet: z.ZodNullable<z.ZodString>;
1484
+ message: z.ZodNullable<z.ZodString>;
1485
+ explanation: z.ZodNullable<z.ZodString>;
1486
+ sourceUrl: z.ZodNullable<z.ZodString>;
1487
+ }, z.core.$strip>>;
1488
+ readonly elementsTotal: z.ZodNullable<z.ZodNumber>;
1489
+ readonly observedContentType: z.ZodNullable<z.ZodString>;
1490
+ /**
1491
+ * Whether the crawl recorded a content type for this row at all. It is the
1492
+ * only way to read a null `observedContentType`: false means the crawl
1493
+ * never captured one, true means it saw a response it could not name.
1494
+ * Neither is `text/html`. The `page_issues` MCP tool carries the same
1495
+ * distinction by omitting the key, so publishing the flag keeps the two
1496
+ * surfaces answering the same question.
1497
+ */
1498
+ readonly observedContentTypeCaptured: z.ZodBoolean;
1499
+ readonly redirectTarget: z.ZodNullable<z.ZodString>;
1500
+ readonly observedAt: z.ZodNullable<z.ZodString>;
1501
+ }, z.core.$strip>;
1502
+ readonly firstSeenAt: z.ZodNullable<z.ZodString>;
1503
+ readonly lastSeenAt: z.ZodNullable<z.ZodString>;
1504
+ readonly resolution: z.ZodNullable<z.ZodString>;
1505
+ readonly linkedFrom: z.ZodArray<z.ZodString>;
1506
+ readonly linkedFromTotal: z.ZodNullable<z.ZodNumber>;
1507
+ }, z.core.$strip>>;
1508
+ readonly total: z.ZodNumber;
1509
+ readonly limit: z.ZodNumber;
1510
+ readonly offset: z.ZodNumber;
1511
+ /** Source and issue pairs this Site has, returned when the selector matched nothing. */
1512
+ readonly availableKeys: z.ZodNullable<z.ZodArray<z.ZodObject<{
1513
+ source: z.ZodString;
1514
+ issue: z.ZodString;
1515
+ openCount: z.ZodNumber;
1516
+ }, z.core.$strict>>>;
1517
+ readonly message: z.ZodNullable<z.ZodString>;
1518
+ readonly asOf: z.ZodNullable<z.ZodString>;
1519
+ readonly coverage: z.ZodObject<{
1520
+ perSourceCap: z.ZodNumber;
1521
+ perRowTargetCap: z.ZodNumber;
1522
+ perRowElementCap: z.ZodNumber;
1523
+ possiblyTruncated: z.ZodBoolean;
1524
+ }, z.core.$strict>;
1525
+ }, z.core.$strip>;
1526
+ meta: z.ZodObject<{
1527
+ requestId: z.ZodString;
1528
+ version: z.ZodLiteral<"1.0">;
1529
+ }, z.core.$strict>;
1530
+ }, z.core.$strip>, z.ZodObject<{
1531
+ data: z.ZodObject<{
1532
+ readonly semantics: z.ZodLiteral<"raw-observations">;
1533
+ readonly issues: z.ZodArray<z.ZodObject<{
1534
+ readonly url: z.ZodString;
1535
+ readonly path: z.ZodString;
1536
+ readonly pathWithQuery: z.ZodNullable<z.ZodString>;
1537
+ readonly source: z.ZodString;
1538
+ readonly issueType: z.ZodString;
1539
+ readonly severity: z.ZodString;
1540
+ readonly detail: z.ZodObject<{
1541
+ readonly label: z.ZodNullable<z.ZodString>;
1542
+ readonly resourceUrl: z.ZodNullable<z.ZodString>;
1543
+ readonly statusCode: z.ZodNullable<z.ZodNumber>;
1544
+ readonly targets: z.ZodArray<z.ZodObject<{
1545
+ url: z.ZodString;
1546
+ status: z.ZodNullable<z.ZodNumber>;
1547
+ }, z.core.$strip>>;
1548
+ readonly isNew: z.ZodNullable<z.ZodBoolean>;
1549
+ readonly title: z.ZodNullable<z.ZodString>;
1550
+ readonly description: z.ZodNullable<z.ZodString>;
1551
+ readonly wcag: z.ZodArray<z.ZodString>;
1552
+ readonly elements: z.ZodArray<z.ZodObject<{
1553
+ selector: z.ZodNullable<z.ZodString>;
1554
+ snippet: z.ZodNullable<z.ZodString>;
1555
+ message: z.ZodNullable<z.ZodString>;
1556
+ explanation: z.ZodNullable<z.ZodString>;
1557
+ sourceUrl: z.ZodNullable<z.ZodString>;
1558
+ }, z.core.$strip>>;
1559
+ readonly elementsTotal: z.ZodNullable<z.ZodNumber>;
1560
+ readonly observedContentType: z.ZodNullable<z.ZodString>;
1561
+ readonly observedContentTypeCaptured: z.ZodBoolean;
1562
+ readonly redirectTarget: z.ZodNullable<z.ZodString>;
1563
+ readonly observedAt: z.ZodNullable<z.ZodString>;
1564
+ }, z.core.$strip>;
1565
+ readonly firstSeenAt: z.ZodNullable<z.ZodString>;
1566
+ readonly lastSeenAt: z.ZodNullable<z.ZodString>;
1567
+ readonly resolution: z.ZodNullable<z.ZodString>;
1568
+ readonly linkedFrom: z.ZodArray<z.ZodString>;
1569
+ readonly linkedFromTotal: z.ZodNullable<z.ZodNumber>;
1570
+ }, z.core.$strip>>;
1571
+ readonly total: z.ZodNumber;
1572
+ readonly limit: z.ZodNumber;
1573
+ readonly offset: z.ZodNumber;
1574
+ readonly availableKeys: z.ZodNullable<z.ZodArray<z.ZodObject<{
1575
+ source: z.ZodString;
1576
+ issue: z.ZodString;
1577
+ openCount: z.ZodNumber;
1578
+ }, z.core.$loose>>>;
1579
+ readonly message: z.ZodNullable<z.ZodString>;
1580
+ readonly asOf: z.ZodNullable<z.ZodString>;
1581
+ readonly coverage: z.ZodObject<{
1582
+ perSourceCap: z.ZodNumber;
1583
+ perRowTargetCap: z.ZodNumber;
1584
+ perRowElementCap: z.ZodNumber;
1585
+ possiblyTruncated: z.ZodBoolean;
1586
+ }, z.core.$loose>;
1587
+ }, z.core.$strip>;
1588
+ meta: z.ZodObject<{
1589
+ requestId: z.ZodString;
1590
+ version: z.ZodLiteral<"1.0">;
1591
+ }, z.core.$loose>;
1592
+ }, z.core.$strip>>;
1593
+ };
1594
+ readonly errors: readonly ["invalid_request", "unauthorized", "auth_expired", "forbidden", "entitlement_required", "conflict", "not_found", "rate_limited", "contract_violation", "internal_error"];
1595
+ readonly errorResponse: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
1596
+ readonly error: z.ZodObject<{
1597
+ code: z.ZodEnum<{
1598
+ auth_expired: "auth_expired";
1599
+ conflict: "conflict";
1600
+ contract_violation: "contract_violation";
1601
+ entitlement_required: "entitlement_required";
1602
+ forbidden: "forbidden";
1603
+ internal_error: "internal_error";
1604
+ invalid_request: "invalid_request";
1605
+ not_found: "not_found";
1606
+ provider_unavailable: "provider_unavailable";
1607
+ quota_exhausted: "quota_exhausted";
1608
+ rate_limited: "rate_limited";
1609
+ site_ambiguous: "site_ambiguous";
1610
+ stale_evidence: "stale_evidence";
1611
+ unauthorized: "unauthorized";
1612
+ }>;
1613
+ message: z.ZodString;
1614
+ requestId: z.ZodString;
1615
+ retryable: z.ZodBoolean;
1616
+ details: z.ZodRecord<z.ZodString, z.ZodUnknown>;
1617
+ }, z.core.$strict>;
1618
+ }, z.core.$strip>, z.ZodObject<{
1619
+ readonly error: z.ZodObject<{
1620
+ code: z.ZodEnum<{
1621
+ auth_expired: "auth_expired";
1622
+ conflict: "conflict";
1623
+ contract_violation: "contract_violation";
1624
+ entitlement_required: "entitlement_required";
1625
+ forbidden: "forbidden";
1626
+ internal_error: "internal_error";
1627
+ invalid_request: "invalid_request";
1628
+ not_found: "not_found";
1629
+ provider_unavailable: "provider_unavailable";
1630
+ quota_exhausted: "quota_exhausted";
1631
+ rate_limited: "rate_limited";
1632
+ site_ambiguous: "site_ambiguous";
1633
+ stale_evidence: "stale_evidence";
1634
+ unauthorized: "unauthorized";
1635
+ }>;
1636
+ message: z.ZodString;
1637
+ requestId: z.ZodString;
1638
+ retryable: z.ZodBoolean;
1639
+ details: z.ZodRecord<z.ZodString, z.ZodUnknown>;
1640
+ }, z.core.$loose>;
1641
+ }, z.core.$strip>>;
1642
+ readonly resources: {
1643
+ readonly reads: readonly [{
1644
+ readonly type: 'site.page';
1645
+ readonly idFrom: 'params.siteId';
1646
+ }];
1647
+ readonly changes: readonly [];
1648
+ };
1649
+ readonly policy: {
1650
+ readonly rate: {
1651
+ readonly name: 'public-v1-fixed-window';
1652
+ readonly limit: 50;
1653
+ readonly windowSeconds: 60;
1654
+ };
1655
+ readonly idempotency: {
1656
+ readonly _tag: 'none';
1657
+ };
1658
+ readonly entitlement: null;
1659
+ readonly meter: null;
1660
+ };
1661
+ readonly lifecycle: {
1662
+ readonly introduced: '1.2.0';
1663
+ };
1664
+ readonly docs: {
1665
+ readonly summary: 'Browse raw Page observations';
1666
+ readonly description: 'Returns raw page observations for one action id, or for one source and issue pair. Pass actionId, or pass both source and issue; passing both selectors is rejected. When the selector matches nothing, availableKeys lists the pairs this Site does have. These rows are the mutable observation store and never represent canonical action membership. Read coverage before quoting a total: storage retains at most 500 rows per source, and one request returns at most 200 rows, 8 targets, and 5 element samples per row.';
1667
+ readonly tags: readonly ["Pages"];
1668
+ readonly examples: readonly [{
1669
+ readonly request: {
1670
+ readonly params: {
1671
+ readonly siteId: 'site_01JXYZ';
1672
+ };
1673
+ readonly query: {
1674
+ readonly source: 'crawl';
1675
+ readonly issue: 'broken-internal-links';
1676
+ readonly limit: 100;
1677
+ readonly offset: 0;
1678
+ readonly includeResolved: '0';
1679
+ };
1680
+ };
1681
+ readonly response: {
1682
+ readonly status: 200;
1683
+ readonly body: {
1684
+ readonly data: {
1685
+ readonly semantics: 'raw-observations';
1686
+ readonly issues: readonly [{
1687
+ readonly url: 'https://example.com/docs/old';
1688
+ readonly path: '/docs/old';
1689
+ readonly pathWithQuery: null;
1690
+ readonly source: 'crawl';
1691
+ readonly issueType: 'broken-internal-links';
1692
+ readonly severity: 'error';
1693
+ readonly detail: {
1694
+ readonly label: 'Broken internal link';
1695
+ readonly resourceUrl: null;
1696
+ readonly statusCode: 404;
1697
+ readonly targets: readonly [{
1698
+ readonly url: 'https://example.com/docs/new';
1699
+ readonly status: 200;
1700
+ }];
1701
+ readonly isNew: true;
1702
+ readonly title: null;
1703
+ readonly description: null;
1704
+ readonly wcag: readonly [];
1705
+ readonly elements: readonly [];
1706
+ readonly elementsTotal: null;
1707
+ readonly observedContentType: 'text/html';
1708
+ readonly observedContentTypeCaptured: true;
1709
+ readonly redirectTarget: null;
1710
+ readonly observedAt: null;
1711
+ };
1712
+ readonly firstSeenAt: '2026-08-01T00:00:00.000Z';
1713
+ readonly lastSeenAt: '2026-09-01T00:00:00.000Z';
1714
+ readonly resolution: null;
1715
+ readonly linkedFrom: readonly ["https://example.com/docs/index"];
1716
+ readonly linkedFromTotal: 1;
1717
+ }];
1718
+ readonly total: 1;
1719
+ readonly limit: 100;
1720
+ readonly offset: 0;
1721
+ readonly availableKeys: null;
1722
+ readonly message: null;
1723
+ readonly asOf: null;
1724
+ readonly coverage: {
1725
+ readonly perSourceCap: 500;
1726
+ readonly perRowTargetCap: 8;
1727
+ readonly perRowElementCap: 5;
1728
+ readonly possiblyTruncated: false;
1729
+ };
1730
+ };
1731
+ readonly meta: {
1732
+ readonly requestId: 'req_01JXYZ';
1733
+ readonly version: '1.0';
1734
+ };
1735
+ };
1736
+ };
1737
+ }];
1738
+ };
1739
+ };
976
1740
  export declare const pagesV1Registry: import("./core.js").PublicV1Registry<{
977
1741
  readonly inspect: {
978
1742
  readonly id: 'page.inspect';
@@ -1465,4 +2229,325 @@ export declare const pagesV1Registry: import("./core.js").PublicV1Registry<{
1465
2229
  }];
1466
2230
  };
1467
2231
  };
2232
+ readonly issues: {
2233
+ readonly id: 'page.issues';
2234
+ readonly method: 'GET';
2235
+ readonly path: '/api/v1/sites/{siteId}/pages/issues';
2236
+ readonly visibility: 'public';
2237
+ readonly semantics: {
2238
+ readonly kind: 'query';
2239
+ readonly sideEffects: 'none';
2240
+ readonly retry: 'idempotent';
2241
+ readonly readConsistency: 'primary';
2242
+ };
2243
+ readonly auth: {
2244
+ readonly credentials: readonly ["session", "api_token"];
2245
+ readonly scopes: readonly ["page:read"];
2246
+ readonly minimumRole: 'viewer';
2247
+ readonly ownership: 'site';
2248
+ };
2249
+ readonly request: {
2250
+ readonly params: z.ZodObject<{
2251
+ siteId: z.ZodString;
2252
+ }, z.core.$strict>;
2253
+ readonly query: z.ZodObject<{
2254
+ actionId: z.ZodOptional<z.ZodString>;
2255
+ source: z.ZodOptional<z.ZodString>;
2256
+ issue: z.ZodOptional<z.ZodString>;
2257
+ url: z.ZodOptional<z.ZodString>;
2258
+ pathPrefix: z.ZodOptional<z.ZodString>;
2259
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
2260
+ offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
2261
+ includeResolved: z.ZodPipe<z.ZodDefault<z.ZodEnum<{
2262
+ 0: "0";
2263
+ 1: "1";
2264
+ false: "false";
2265
+ true: "true";
2266
+ }>>, z.ZodTransform<boolean, "0" | "1" | "false" | "true">>;
2267
+ }, z.core.$strict>;
2268
+ readonly headers: null;
2269
+ readonly body: null;
2270
+ };
2271
+ readonly responses: {
2272
+ readonly 200: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
2273
+ data: z.ZodObject<{
2274
+ readonly semantics: z.ZodLiteral<"raw-observations">;
2275
+ readonly issues: z.ZodArray<z.ZodObject<{
2276
+ readonly url: z.ZodString;
2277
+ readonly path: z.ZodString;
2278
+ readonly pathWithQuery: z.ZodNullable<z.ZodString>;
2279
+ readonly source: z.ZodString;
2280
+ readonly issueType: z.ZodString;
2281
+ readonly severity: z.ZodString;
2282
+ readonly detail: z.ZodObject<{
2283
+ readonly label: z.ZodNullable<z.ZodString>;
2284
+ readonly resourceUrl: z.ZodNullable<z.ZodString>;
2285
+ readonly statusCode: z.ZodNullable<z.ZodNumber>;
2286
+ readonly targets: z.ZodArray<z.ZodObject<{
2287
+ url: z.ZodString;
2288
+ status: z.ZodNullable<z.ZodNumber>;
2289
+ }, z.core.$strip>>;
2290
+ readonly isNew: z.ZodNullable<z.ZodBoolean>;
2291
+ readonly title: z.ZodNullable<z.ZodString>;
2292
+ readonly description: z.ZodNullable<z.ZodString>;
2293
+ readonly wcag: z.ZodArray<z.ZodString>;
2294
+ readonly elements: z.ZodArray<z.ZodObject<{
2295
+ selector: z.ZodNullable<z.ZodString>;
2296
+ snippet: z.ZodNullable<z.ZodString>;
2297
+ message: z.ZodNullable<z.ZodString>;
2298
+ explanation: z.ZodNullable<z.ZodString>;
2299
+ sourceUrl: z.ZodNullable<z.ZodString>;
2300
+ }, z.core.$strip>>;
2301
+ readonly elementsTotal: z.ZodNullable<z.ZodNumber>;
2302
+ readonly observedContentType: z.ZodNullable<z.ZodString>;
2303
+ /**
2304
+ * Whether the crawl recorded a content type for this row at all. It is the
2305
+ * only way to read a null `observedContentType`: false means the crawl
2306
+ * never captured one, true means it saw a response it could not name.
2307
+ * Neither is `text/html`. The `page_issues` MCP tool carries the same
2308
+ * distinction by omitting the key, so publishing the flag keeps the two
2309
+ * surfaces answering the same question.
2310
+ */
2311
+ readonly observedContentTypeCaptured: z.ZodBoolean;
2312
+ readonly redirectTarget: z.ZodNullable<z.ZodString>;
2313
+ readonly observedAt: z.ZodNullable<z.ZodString>;
2314
+ }, z.core.$strip>;
2315
+ readonly firstSeenAt: z.ZodNullable<z.ZodString>;
2316
+ readonly lastSeenAt: z.ZodNullable<z.ZodString>;
2317
+ readonly resolution: z.ZodNullable<z.ZodString>;
2318
+ readonly linkedFrom: z.ZodArray<z.ZodString>;
2319
+ readonly linkedFromTotal: z.ZodNullable<z.ZodNumber>;
2320
+ }, z.core.$strip>>;
2321
+ readonly total: z.ZodNumber;
2322
+ readonly limit: z.ZodNumber;
2323
+ readonly offset: z.ZodNumber;
2324
+ /** Source and issue pairs this Site has, returned when the selector matched nothing. */
2325
+ readonly availableKeys: z.ZodNullable<z.ZodArray<z.ZodObject<{
2326
+ source: z.ZodString;
2327
+ issue: z.ZodString;
2328
+ openCount: z.ZodNumber;
2329
+ }, z.core.$strict>>>;
2330
+ readonly message: z.ZodNullable<z.ZodString>;
2331
+ readonly asOf: z.ZodNullable<z.ZodString>;
2332
+ readonly coverage: z.ZodObject<{
2333
+ perSourceCap: z.ZodNumber;
2334
+ perRowTargetCap: z.ZodNumber;
2335
+ perRowElementCap: z.ZodNumber;
2336
+ possiblyTruncated: z.ZodBoolean;
2337
+ }, z.core.$strict>;
2338
+ }, z.core.$strip>;
2339
+ meta: z.ZodObject<{
2340
+ requestId: z.ZodString;
2341
+ version: z.ZodLiteral<"1.0">;
2342
+ }, z.core.$strict>;
2343
+ }, z.core.$strip>, z.ZodObject<{
2344
+ data: z.ZodObject<{
2345
+ readonly semantics: z.ZodLiteral<"raw-observations">;
2346
+ readonly issues: z.ZodArray<z.ZodObject<{
2347
+ readonly url: z.ZodString;
2348
+ readonly path: z.ZodString;
2349
+ readonly pathWithQuery: z.ZodNullable<z.ZodString>;
2350
+ readonly source: z.ZodString;
2351
+ readonly issueType: z.ZodString;
2352
+ readonly severity: z.ZodString;
2353
+ readonly detail: z.ZodObject<{
2354
+ readonly label: z.ZodNullable<z.ZodString>;
2355
+ readonly resourceUrl: z.ZodNullable<z.ZodString>;
2356
+ readonly statusCode: z.ZodNullable<z.ZodNumber>;
2357
+ readonly targets: z.ZodArray<z.ZodObject<{
2358
+ url: z.ZodString;
2359
+ status: z.ZodNullable<z.ZodNumber>;
2360
+ }, z.core.$strip>>;
2361
+ readonly isNew: z.ZodNullable<z.ZodBoolean>;
2362
+ readonly title: z.ZodNullable<z.ZodString>;
2363
+ readonly description: z.ZodNullable<z.ZodString>;
2364
+ readonly wcag: z.ZodArray<z.ZodString>;
2365
+ readonly elements: z.ZodArray<z.ZodObject<{
2366
+ selector: z.ZodNullable<z.ZodString>;
2367
+ snippet: z.ZodNullable<z.ZodString>;
2368
+ message: z.ZodNullable<z.ZodString>;
2369
+ explanation: z.ZodNullable<z.ZodString>;
2370
+ sourceUrl: z.ZodNullable<z.ZodString>;
2371
+ }, z.core.$strip>>;
2372
+ readonly elementsTotal: z.ZodNullable<z.ZodNumber>;
2373
+ readonly observedContentType: z.ZodNullable<z.ZodString>;
2374
+ readonly observedContentTypeCaptured: z.ZodBoolean;
2375
+ readonly redirectTarget: z.ZodNullable<z.ZodString>;
2376
+ readonly observedAt: z.ZodNullable<z.ZodString>;
2377
+ }, z.core.$strip>;
2378
+ readonly firstSeenAt: z.ZodNullable<z.ZodString>;
2379
+ readonly lastSeenAt: z.ZodNullable<z.ZodString>;
2380
+ readonly resolution: z.ZodNullable<z.ZodString>;
2381
+ readonly linkedFrom: z.ZodArray<z.ZodString>;
2382
+ readonly linkedFromTotal: z.ZodNullable<z.ZodNumber>;
2383
+ }, z.core.$strip>>;
2384
+ readonly total: z.ZodNumber;
2385
+ readonly limit: z.ZodNumber;
2386
+ readonly offset: z.ZodNumber;
2387
+ readonly availableKeys: z.ZodNullable<z.ZodArray<z.ZodObject<{
2388
+ source: z.ZodString;
2389
+ issue: z.ZodString;
2390
+ openCount: z.ZodNumber;
2391
+ }, z.core.$loose>>>;
2392
+ readonly message: z.ZodNullable<z.ZodString>;
2393
+ readonly asOf: z.ZodNullable<z.ZodString>;
2394
+ readonly coverage: z.ZodObject<{
2395
+ perSourceCap: z.ZodNumber;
2396
+ perRowTargetCap: z.ZodNumber;
2397
+ perRowElementCap: z.ZodNumber;
2398
+ possiblyTruncated: z.ZodBoolean;
2399
+ }, z.core.$loose>;
2400
+ }, z.core.$strip>;
2401
+ meta: z.ZodObject<{
2402
+ requestId: z.ZodString;
2403
+ version: z.ZodLiteral<"1.0">;
2404
+ }, z.core.$loose>;
2405
+ }, z.core.$strip>>;
2406
+ };
2407
+ readonly errors: readonly ["invalid_request", "unauthorized", "auth_expired", "forbidden", "entitlement_required", "conflict", "not_found", "rate_limited", "contract_violation", "internal_error"];
2408
+ readonly errorResponse: import("./core.js").CompatibleResponseSchema<z.ZodObject<{
2409
+ readonly error: z.ZodObject<{
2410
+ code: z.ZodEnum<{
2411
+ auth_expired: "auth_expired";
2412
+ conflict: "conflict";
2413
+ contract_violation: "contract_violation";
2414
+ entitlement_required: "entitlement_required";
2415
+ forbidden: "forbidden";
2416
+ internal_error: "internal_error";
2417
+ invalid_request: "invalid_request";
2418
+ not_found: "not_found";
2419
+ provider_unavailable: "provider_unavailable";
2420
+ quota_exhausted: "quota_exhausted";
2421
+ rate_limited: "rate_limited";
2422
+ site_ambiguous: "site_ambiguous";
2423
+ stale_evidence: "stale_evidence";
2424
+ unauthorized: "unauthorized";
2425
+ }>;
2426
+ message: z.ZodString;
2427
+ requestId: z.ZodString;
2428
+ retryable: z.ZodBoolean;
2429
+ details: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2430
+ }, z.core.$strict>;
2431
+ }, z.core.$strip>, z.ZodObject<{
2432
+ readonly error: z.ZodObject<{
2433
+ code: z.ZodEnum<{
2434
+ auth_expired: "auth_expired";
2435
+ conflict: "conflict";
2436
+ contract_violation: "contract_violation";
2437
+ entitlement_required: "entitlement_required";
2438
+ forbidden: "forbidden";
2439
+ internal_error: "internal_error";
2440
+ invalid_request: "invalid_request";
2441
+ not_found: "not_found";
2442
+ provider_unavailable: "provider_unavailable";
2443
+ quota_exhausted: "quota_exhausted";
2444
+ rate_limited: "rate_limited";
2445
+ site_ambiguous: "site_ambiguous";
2446
+ stale_evidence: "stale_evidence";
2447
+ unauthorized: "unauthorized";
2448
+ }>;
2449
+ message: z.ZodString;
2450
+ requestId: z.ZodString;
2451
+ retryable: z.ZodBoolean;
2452
+ details: z.ZodRecord<z.ZodString, z.ZodUnknown>;
2453
+ }, z.core.$loose>;
2454
+ }, z.core.$strip>>;
2455
+ readonly resources: {
2456
+ readonly reads: readonly [{
2457
+ readonly type: 'site.page';
2458
+ readonly idFrom: 'params.siteId';
2459
+ }];
2460
+ readonly changes: readonly [];
2461
+ };
2462
+ readonly policy: {
2463
+ readonly rate: {
2464
+ readonly name: 'public-v1-fixed-window';
2465
+ readonly limit: 50;
2466
+ readonly windowSeconds: 60;
2467
+ };
2468
+ readonly idempotency: {
2469
+ readonly _tag: 'none';
2470
+ };
2471
+ readonly entitlement: null;
2472
+ readonly meter: null;
2473
+ };
2474
+ readonly lifecycle: {
2475
+ readonly introduced: '1.2.0';
2476
+ };
2477
+ readonly docs: {
2478
+ readonly summary: 'Browse raw Page observations';
2479
+ readonly description: 'Returns raw page observations for one action id, or for one source and issue pair. Pass actionId, or pass both source and issue; passing both selectors is rejected. When the selector matches nothing, availableKeys lists the pairs this Site does have. These rows are the mutable observation store and never represent canonical action membership. Read coverage before quoting a total: storage retains at most 500 rows per source, and one request returns at most 200 rows, 8 targets, and 5 element samples per row.';
2480
+ readonly tags: readonly ["Pages"];
2481
+ readonly examples: readonly [{
2482
+ readonly request: {
2483
+ readonly params: {
2484
+ readonly siteId: 'site_01JXYZ';
2485
+ };
2486
+ readonly query: {
2487
+ readonly source: 'crawl';
2488
+ readonly issue: 'broken-internal-links';
2489
+ readonly limit: 100;
2490
+ readonly offset: 0;
2491
+ readonly includeResolved: '0';
2492
+ };
2493
+ };
2494
+ readonly response: {
2495
+ readonly status: 200;
2496
+ readonly body: {
2497
+ readonly data: {
2498
+ readonly semantics: 'raw-observations';
2499
+ readonly issues: readonly [{
2500
+ readonly url: 'https://example.com/docs/old';
2501
+ readonly path: '/docs/old';
2502
+ readonly pathWithQuery: null;
2503
+ readonly source: 'crawl';
2504
+ readonly issueType: 'broken-internal-links';
2505
+ readonly severity: 'error';
2506
+ readonly detail: {
2507
+ readonly label: 'Broken internal link';
2508
+ readonly resourceUrl: null;
2509
+ readonly statusCode: 404;
2510
+ readonly targets: readonly [{
2511
+ readonly url: 'https://example.com/docs/new';
2512
+ readonly status: 200;
2513
+ }];
2514
+ readonly isNew: true;
2515
+ readonly title: null;
2516
+ readonly description: null;
2517
+ readonly wcag: readonly [];
2518
+ readonly elements: readonly [];
2519
+ readonly elementsTotal: null;
2520
+ readonly observedContentType: 'text/html';
2521
+ readonly observedContentTypeCaptured: true;
2522
+ readonly redirectTarget: null;
2523
+ readonly observedAt: null;
2524
+ };
2525
+ readonly firstSeenAt: '2026-08-01T00:00:00.000Z';
2526
+ readonly lastSeenAt: '2026-09-01T00:00:00.000Z';
2527
+ readonly resolution: null;
2528
+ readonly linkedFrom: readonly ["https://example.com/docs/index"];
2529
+ readonly linkedFromTotal: 1;
2530
+ }];
2531
+ readonly total: 1;
2532
+ readonly limit: 100;
2533
+ readonly offset: 0;
2534
+ readonly availableKeys: null;
2535
+ readonly message: null;
2536
+ readonly asOf: null;
2537
+ readonly coverage: {
2538
+ readonly perSourceCap: 500;
2539
+ readonly perRowTargetCap: 8;
2540
+ readonly perRowElementCap: 5;
2541
+ readonly possiblyTruncated: false;
2542
+ };
2543
+ };
2544
+ readonly meta: {
2545
+ readonly requestId: 'req_01JXYZ';
2546
+ readonly version: '1.0';
2547
+ };
2548
+ };
2549
+ };
2550
+ }];
2551
+ };
2552
+ };
1468
2553
  }>;