@gscdump/contracts 5.2.0 → 5.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.
@@ -1,9 +1,10 @@
1
1
  import { siteHoldReasonSchema } from "../entitlements.mjs";
2
2
  import { watchedUrlsChangeRequestSchema, watchedUrlsChangeResponseSchema, watchedUrlsResponseSchema } from "../indexing-coverage.mjs";
3
3
  import { addPartnerTeamMemberSchema, bindPartnerSiteTeamSchema, bindPartnerTeamCatalogResponseSchema, bindPartnerTeamCatalogSchema, builderStateSchema, createPartnerTeamSchema, gscComparisonFilterSchema, gscdumpAnalysisBundleResponseSchema, gscdumpAnalysisPresetSchema, gscdumpAnalysisResponseSchema, gscdumpAvailableSiteSchema, gscdumpCanonicalMismatchesResponseSchema, gscdumpDataDetailResponseSchema, gscdumpDataResponseSchema, gscdumpDeletePartnerUserResponseSchema, gscdumpIndexPercentResponseSchema, gscdumpIndexingDiagnosticsResponseSchema, gscdumpIndexingResponseSchema, gscdumpIndexingTransitionFieldSchema, gscdumpKeywordSparklinesResponseSchema, gscdumpPageTrendResponseSchema, gscdumpQueryTrendResponseSchema, gscdumpSiteRegistrationSchema, gscdumpSitemapChangesResponseSchema, gscdumpSitemapExportQuerySchema, gscdumpSitemapExportResponseSchema, gscdumpSitemapMembershipParamsSchema, gscdumpSitemapMembershipResponseSchema, gscdumpSitemapUrlsQuerySchema, gscdumpSitemapUrlsResponseSchema, gscdumpSitemapsResponseSchema, gscdumpTeamRoleSchema, gscdumpTopAssociationResponseSchema, gscdumpUserRegistrationSchema, indexingUrlsResponseSchema, partnerSiteTeamBindingResponseSchema, partnerSitemapActionResponseSchema, partnerSitemapActionSchema, partnerTeamCreatedResponseSchema, partnerTeamDeletedResponseSchema, partnerTeamMemberAddedResponseSchema, partnerTeamMemberRemovedResponseSchema, partnerTeamMemberRoleResponseSchema, partnerTeamMembersResponseSchema, partnerTeamRenamedResponseSchema, registerPartnerSiteSchema, registerPartnerUserSchema, renamePartnerTeamSchema, searchTypeSchema, siteIntIdCrosswalkResponseSchema, sitemapChangesTruncationReasonSchema, teamCatalogRefSchema, updatePartnerUserTokensSchema } from "../schemas.mjs";
4
- import { bingConnectionV1Schemas } from "./bing.mjs";
5
4
  import "./version.mjs";
6
5
  import { HTTP_V1_ERROR_CODES, defineHttpOperation, defineHttpSurface, defineResponseObject, defineSuccessResponse } from "./http-core.mjs";
6
+ import { analyticsCoverageQueryV1Schema, analyticsCoverageV1Schemas } from "./analytics-coverage.mjs";
7
+ import { bingConnectionV1Schemas } from "./bing.mjs";
7
8
  import { bingDataQueryV1Schema, bingDataV1Schemas } from "./bing-data.mjs";
8
9
  import { bingAuthorizationRequestV1Schema, bingAuthorizationV1Schemas, bingLinkResultV1Schemas, bingSitemapSubmitRequestV1Schema, bingSitemapSubmitResultV1Schemas, bingSitesQueryV1Schema, bingSitesV1Schemas } from "./bing-sites.mjs";
9
10
  import { GSCDUMP_REALTIME_ACK_POLICY, GSCDUMP_REALTIME_CLOSE_CODES, GSCDUMP_REALTIME_CONNECTION_POLICY, GSCDUMP_REALTIME_LIMITS, GSCDUMP_REALTIME_PING, GSCDUMP_REALTIME_PONG, GSCDUMP_REALTIME_REPLAY_POLICY, GSCDUMP_REALTIME_SUBPROTOCOL, GSCDUMP_REALTIME_TICKET_AUDIENCE, GSCDUMP_REALTIME_TICKET_ISSUER, GSCDUMP_REALTIME_TICKET_POLICY, GSCDUMP_REALTIME_TICKET_PREFIX, REALTIME_V1_EVENT_SEMANTICS, createRealtimeV1Schemas } from "./realtime.mjs";
@@ -1209,6 +1210,76 @@ function createGscdumpV1Protocol() {
1209
1210
  }
1210
1211
  }
1211
1212
  }),
1213
+ getSiteAnalyticsCoverage: defineHttpOperation({
1214
+ ...gscdumpV1OperationRoute("partner.sites.analytics.coverage.get"),
1215
+ visibility: "public",
1216
+ semantics: {
1217
+ kind: "query",
1218
+ sideEffects: "none",
1219
+ idempotent: true,
1220
+ retry: "idempotent",
1221
+ readConsistency: "primary"
1222
+ },
1223
+ auth: {
1224
+ credentials: ["user_key", "partner_key"],
1225
+ scopes: ["analytics:read"],
1226
+ ownership: [{
1227
+ credential: "user_key",
1228
+ rule: "authorized_site"
1229
+ }, {
1230
+ credential: "partner_key",
1231
+ rule: "authorized_site"
1232
+ }]
1233
+ },
1234
+ request: {
1235
+ params: z.strictObject({ siteId: realtimeSchemas.publicSiteId }),
1236
+ query: analyticsCoverageQueryV1Schema,
1237
+ headers: requestHeaders,
1238
+ body: null
1239
+ },
1240
+ responses: { 200: defineSuccessResponse(analyticsCoverageV1Schemas, partnerResponseMeta) },
1241
+ errors: partnerSiteErrors,
1242
+ errorResponse: errorEnvelopeSchemas(partnerSiteErrors, realtimeSchemas.publicRequestId),
1243
+ resources: {
1244
+ reads: [{
1245
+ type: "site.analytics",
1246
+ idFrom: "params.siteId"
1247
+ }],
1248
+ changes: []
1249
+ },
1250
+ lifecycle: { introduced: "5.5.0" },
1251
+ docs: {
1252
+ summary: "Get recorded analytics coverage",
1253
+ description: "Checks continuous recorded coverage for the current and comparison windows. Successful zero-row days count. Missing days prevent completeness.",
1254
+ tags: ["Analytics"],
1255
+ examples: {
1256
+ request: {
1257
+ params: { siteId: "s_01" },
1258
+ query: {
1259
+ startDate: "2026-10-01",
1260
+ endDate: "2026-10-02",
1261
+ searchType: "web"
1262
+ }
1263
+ },
1264
+ response: {
1265
+ data: {
1266
+ searchType: "web",
1267
+ current: {
1268
+ startDate: "2026-10-01",
1269
+ endDate: "2026-10-02",
1270
+ complete: true
1271
+ },
1272
+ comparison: null
1273
+ },
1274
+ meta: {
1275
+ requestId: "req_01",
1276
+ surface: "partner",
1277
+ version: "1.0"
1278
+ }
1279
+ }
1280
+ }
1281
+ }
1282
+ }),
1212
1283
  getSiteIndexing: defineHttpOperation({
1213
1284
  ...gscdumpV1OperationRoute("partner.sites.indexing.get"),
1214
1285
  visibility: "public",
@@ -2755,7 +2826,7 @@ function createGscdumpV1Protocol() {
2755
2826
  lifecycle: { introduced: "1.0.0" },
2756
2827
  docs: {
2757
2828
  summary: "Get sitemap snapshot",
2758
- description: "Returns registered sitemaps and their aggregate and per-sitemap history.",
2829
+ description: "Returns registered sitemaps and their aggregate and per-sitemap history. Each Sitemap's `feed` says whether it counts toward the next Generation. A Sitemap that answered 404 or 410 for 3 UTC days is `dropped`.",
2759
2830
  tags: ["Sitemaps"],
2760
2831
  examples: {
2761
2832
  request: { params: { siteId: "s_01" } },
@@ -5374,7 +5445,7 @@ function createGscdumpV1Protocol() {
5374
5445
  lifecycle: { introduced: "1.3.0" },
5375
5446
  docs: {
5376
5447
  summary: "Delete a partner user",
5377
- description: "Queues cascade deletion of a partner-linked user and their sites.",
5448
+ description: "Queues removal of the calling partner's part of a linked user: its Sites, Usage pool, credential, and issued API keys. gscdump deletes the user only when nothing outside the partner holds them. `searchConsoleGrant` reports what happened to the Search Console grant that the partner's own OAuth client issued.",
5378
5449
  tags: ["Users"],
5379
5450
  examples: {
5380
5451
  request: { params: { userId: "u_01" } },
@@ -5383,7 +5454,8 @@ function createGscdumpV1Protocol() {
5383
5454
  ok: true,
5384
5455
  queued: true,
5385
5456
  userId: 1,
5386
- publicId: "u_01"
5457
+ publicId: "u_01",
5458
+ searchConsoleGrant: { _tag: "revoked" }
5387
5459
  },
5388
5460
  meta: {
5389
5461
  requestId: "req_01",
@@ -16,6 +16,11 @@ export declare const GSCDUMP_V1_ROUTE_CATALOG: {
16
16
  };
17
17
  };
18
18
  readonly operations: {
19
+ readonly 'partner.sites.analytics.coverage.get': {
20
+ readonly surface: "partner";
21
+ readonly method: "GET";
22
+ readonly template: "/sites/{siteId}/analytics/coverage";
23
+ };
19
24
  readonly 'partner.users.lifecycle.get': {
20
25
  readonly surface: "partner";
21
26
  readonly method: "GET";
@@ -3,6 +3,11 @@ import { GSCDUMP_V1_ROUTE_SURFACES } from "./route-surfaces.mjs";
3
3
  const GSCDUMP_V1_ROUTE_CATALOG = {
4
4
  surfaces: GSCDUMP_V1_ROUTE_SURFACES,
5
5
  operations: {
6
+ "partner.sites.analytics.coverage.get": {
7
+ surface: "partner",
8
+ method: "GET",
9
+ template: "/sites/{siteId}/analytics/coverage"
10
+ },
6
11
  "partner.users.lifecycle.get": {
7
12
  surface: "partner",
8
13
  method: "GET",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gscdump/contracts",
3
3
  "type": "module",
4
- "version": "5.2.0",
4
+ "version": "5.5.0",
5
5
  "description": "Shared gscdump.com API, webhook, realtime, and lifecycle contracts.",
6
6
  "author": {
7
7
  "name": "Harlan Wilton",