@gscdump/contracts 0.33.0 → 0.33.3

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.
@@ -1191,6 +1191,14 @@ declare const bulkRegisterPartnerSitesSchema: z.ZodObject<{
1191
1191
  "site.auth.failed": "site.auth.failed";
1192
1192
  "job.failed": "job.failed";
1193
1193
  }>>>;
1194
+ enabledSearchTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<{
1195
+ web: "web";
1196
+ image: "image";
1197
+ video: "video";
1198
+ news: "news";
1199
+ discover: "discover";
1200
+ googleNews: "googleNews";
1201
+ }>>>;
1194
1202
  }, z.core.$loose>>>;
1195
1203
  }, z.core.$strip>;
1196
1204
  declare const bulkRegisterPartnerSitesResponseSchema: z.ZodObject<{
@@ -1765,9 +1773,63 @@ declare const gscdumpTopAssociationResponseSchema: z.ZodObject<{
1765
1773
  value: z.ZodNullable<z.ZodString>;
1766
1774
  }, z.core.$loose>;
1767
1775
  declare const gscdumpAnalysisSourcesResponseSchema: z.ZodObject<{
1768
- tables: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
1776
+ siteId: z.ZodString;
1777
+ searchType: z.ZodEnum<{
1778
+ web: "web";
1779
+ image: "image";
1780
+ video: "video";
1781
+ news: "news";
1782
+ discover: "discover";
1783
+ googleNews: "googleNews";
1784
+ }>;
1785
+ range: z.ZodObject<{
1786
+ start: z.ZodString;
1787
+ end: z.ZodString;
1788
+ }, z.core.$strip>;
1789
+ snapshotVersion: z.ZodString;
1769
1790
  generatedAt: z.ZodString;
1770
- manifestVersion: z.ZodString;
1791
+ tables: z.ZodArray<z.ZodObject<{
1792
+ table: z.ZodEnum<{
1793
+ pages: "pages";
1794
+ queries: "queries";
1795
+ countries: "countries";
1796
+ page_queries: "page_queries";
1797
+ dates: "dates";
1798
+ search_appearance: "search_appearance";
1799
+ search_appearance_pages: "search_appearance_pages";
1800
+ search_appearance_queries: "search_appearance_queries";
1801
+ search_appearance_page_queries: "search_appearance_page_queries";
1802
+ }>;
1803
+ mode: z.ZodEnum<{
1804
+ browser: "browser";
1805
+ server: "server";
1806
+ }>;
1807
+ files: z.ZodArray<z.ZodObject<{
1808
+ url: z.ZodString;
1809
+ bytes: z.ZodNumber;
1810
+ contentHash: z.ZodString;
1811
+ rowCount: z.ZodNumber;
1812
+ }, z.core.$loose>>;
1813
+ overlay: z.ZodOptional<z.ZodObject<{
1814
+ url: z.ZodString;
1815
+ bytes: z.ZodNumber;
1816
+ contentHash: z.ZodString;
1817
+ rowCount: z.ZodNumber;
1818
+ }, z.core.$loose>>;
1819
+ totalBytes: z.ZodNumber;
1820
+ totalRows: z.ZodNumber;
1821
+ }, z.core.$loose>>;
1822
+ serverTail: z.ZodOptional<z.ZodObject<{
1823
+ engine: z.ZodEnum<{
1824
+ "r2-sql": "r2-sql";
1825
+ duckdb: "duckdb";
1826
+ }>;
1827
+ endpoint: z.ZodString;
1828
+ }, z.core.$strip>>;
1829
+ eligibilityCeiling: z.ZodObject<{
1830
+ maxBytes: z.ZodNumber;
1831
+ maxRows: z.ZodNumber;
1832
+ }, z.core.$strip>;
1771
1833
  }, z.core.$loose>;
1772
1834
  declare const gscdumpKeywordSparklinesParamsSchema: z.ZodObject<{
1773
1835
  keywords: z.ZodArray<z.ZodString>;
@@ -2462,9 +2524,63 @@ declare const analyticsEndpointSchemas: {
2462
2524
  };
2463
2525
  readonly analyticsAnalysisSources: {
2464
2526
  readonly response: z.ZodObject<{
2465
- tables: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
2527
+ siteId: z.ZodString;
2528
+ searchType: z.ZodEnum<{
2529
+ web: "web";
2530
+ image: "image";
2531
+ video: "video";
2532
+ news: "news";
2533
+ discover: "discover";
2534
+ googleNews: "googleNews";
2535
+ }>;
2536
+ range: z.ZodObject<{
2537
+ start: z.ZodString;
2538
+ end: z.ZodString;
2539
+ }, z.core.$strip>;
2540
+ snapshotVersion: z.ZodString;
2466
2541
  generatedAt: z.ZodString;
2467
- manifestVersion: z.ZodString;
2542
+ tables: z.ZodArray<z.ZodObject<{
2543
+ table: z.ZodEnum<{
2544
+ pages: "pages";
2545
+ queries: "queries";
2546
+ countries: "countries";
2547
+ page_queries: "page_queries";
2548
+ dates: "dates";
2549
+ search_appearance: "search_appearance";
2550
+ search_appearance_pages: "search_appearance_pages";
2551
+ search_appearance_queries: "search_appearance_queries";
2552
+ search_appearance_page_queries: "search_appearance_page_queries";
2553
+ }>;
2554
+ mode: z.ZodEnum<{
2555
+ browser: "browser";
2556
+ server: "server";
2557
+ }>;
2558
+ files: z.ZodArray<z.ZodObject<{
2559
+ url: z.ZodString;
2560
+ bytes: z.ZodNumber;
2561
+ contentHash: z.ZodString;
2562
+ rowCount: z.ZodNumber;
2563
+ }, z.core.$loose>>;
2564
+ overlay: z.ZodOptional<z.ZodObject<{
2565
+ url: z.ZodString;
2566
+ bytes: z.ZodNumber;
2567
+ contentHash: z.ZodString;
2568
+ rowCount: z.ZodNumber;
2569
+ }, z.core.$loose>>;
2570
+ totalBytes: z.ZodNumber;
2571
+ totalRows: z.ZodNumber;
2572
+ }, z.core.$loose>>;
2573
+ serverTail: z.ZodOptional<z.ZodObject<{
2574
+ engine: z.ZodEnum<{
2575
+ "r2-sql": "r2-sql";
2576
+ duckdb: "duckdb";
2577
+ }>;
2578
+ endpoint: z.ZodString;
2579
+ }, z.core.$strip>>;
2580
+ eligibilityCeiling: z.ZodObject<{
2581
+ maxBytes: z.ZodNumber;
2582
+ maxRows: z.ZodNumber;
2583
+ }, z.core.$strip>;
2468
2584
  }, z.core.$loose>;
2469
2585
  };
2470
2586
  readonly analyticsSourceInfo: {
@@ -3010,6 +3126,14 @@ declare const partnerControlEndpointSchemas: {
3010
3126
  "site.auth.failed": "site.auth.failed";
3011
3127
  "job.failed": "job.failed";
3012
3128
  }>>>;
3129
+ enabledSearchTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<{
3130
+ web: "web";
3131
+ image: "image";
3132
+ video: "video";
3133
+ news: "news";
3134
+ discover: "discover";
3135
+ googleNews: "googleNews";
3136
+ }>>>;
3013
3137
  }, z.core.$loose>>>;
3014
3138
  }, z.core.$strip>;
3015
3139
  readonly response: z.ZodObject<{
@@ -3050,9 +3174,63 @@ declare const partnerControlEndpointSchemas: {
3050
3174
  };
3051
3175
  readonly getAnalysisSources: {
3052
3176
  readonly response: z.ZodObject<{
3053
- tables: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
3177
+ siteId: z.ZodString;
3178
+ searchType: z.ZodEnum<{
3179
+ web: "web";
3180
+ image: "image";
3181
+ video: "video";
3182
+ news: "news";
3183
+ discover: "discover";
3184
+ googleNews: "googleNews";
3185
+ }>;
3186
+ range: z.ZodObject<{
3187
+ start: z.ZodString;
3188
+ end: z.ZodString;
3189
+ }, z.core.$strip>;
3190
+ snapshotVersion: z.ZodString;
3054
3191
  generatedAt: z.ZodString;
3055
- manifestVersion: z.ZodString;
3192
+ tables: z.ZodArray<z.ZodObject<{
3193
+ table: z.ZodEnum<{
3194
+ pages: "pages";
3195
+ queries: "queries";
3196
+ countries: "countries";
3197
+ page_queries: "page_queries";
3198
+ dates: "dates";
3199
+ search_appearance: "search_appearance";
3200
+ search_appearance_pages: "search_appearance_pages";
3201
+ search_appearance_queries: "search_appearance_queries";
3202
+ search_appearance_page_queries: "search_appearance_page_queries";
3203
+ }>;
3204
+ mode: z.ZodEnum<{
3205
+ browser: "browser";
3206
+ server: "server";
3207
+ }>;
3208
+ files: z.ZodArray<z.ZodObject<{
3209
+ url: z.ZodString;
3210
+ bytes: z.ZodNumber;
3211
+ contentHash: z.ZodString;
3212
+ rowCount: z.ZodNumber;
3213
+ }, z.core.$loose>>;
3214
+ overlay: z.ZodOptional<z.ZodObject<{
3215
+ url: z.ZodString;
3216
+ bytes: z.ZodNumber;
3217
+ contentHash: z.ZodString;
3218
+ rowCount: z.ZodNumber;
3219
+ }, z.core.$loose>>;
3220
+ totalBytes: z.ZodNumber;
3221
+ totalRows: z.ZodNumber;
3222
+ }, z.core.$loose>>;
3223
+ serverTail: z.ZodOptional<z.ZodObject<{
3224
+ engine: z.ZodEnum<{
3225
+ "r2-sql": "r2-sql";
3226
+ duckdb: "duckdb";
3227
+ }>;
3228
+ endpoint: z.ZodString;
3229
+ }, z.core.$strip>>;
3230
+ eligibilityCeiling: z.ZodObject<{
3231
+ maxBytes: z.ZodNumber;
3232
+ maxRows: z.ZodNumber;
3233
+ }, z.core.$strip>;
3056
3234
  }, z.core.$loose>;
3057
3235
  };
3058
3236
  readonly getData: {
@@ -4446,6 +4624,14 @@ declare const partnerEndpointSchemas: {
4446
4624
  "site.auth.failed": "site.auth.failed";
4447
4625
  "job.failed": "job.failed";
4448
4626
  }>>>;
4627
+ enabledSearchTypes: z.ZodOptional<z.ZodArray<z.ZodEnum<{
4628
+ web: "web";
4629
+ image: "image";
4630
+ video: "video";
4631
+ news: "news";
4632
+ discover: "discover";
4633
+ googleNews: "googleNews";
4634
+ }>>>;
4449
4635
  }, z.core.$loose>>>;
4450
4636
  }, z.core.$strip>;
4451
4637
  readonly response: z.ZodObject<{
@@ -4486,9 +4672,63 @@ declare const partnerEndpointSchemas: {
4486
4672
  };
4487
4673
  readonly getAnalysisSources: {
4488
4674
  readonly response: z.ZodObject<{
4489
- tables: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
4675
+ siteId: z.ZodString;
4676
+ searchType: z.ZodEnum<{
4677
+ web: "web";
4678
+ image: "image";
4679
+ video: "video";
4680
+ news: "news";
4681
+ discover: "discover";
4682
+ googleNews: "googleNews";
4683
+ }>;
4684
+ range: z.ZodObject<{
4685
+ start: z.ZodString;
4686
+ end: z.ZodString;
4687
+ }, z.core.$strip>;
4688
+ snapshotVersion: z.ZodString;
4490
4689
  generatedAt: z.ZodString;
4491
- manifestVersion: z.ZodString;
4690
+ tables: z.ZodArray<z.ZodObject<{
4691
+ table: z.ZodEnum<{
4692
+ pages: "pages";
4693
+ queries: "queries";
4694
+ countries: "countries";
4695
+ page_queries: "page_queries";
4696
+ dates: "dates";
4697
+ search_appearance: "search_appearance";
4698
+ search_appearance_pages: "search_appearance_pages";
4699
+ search_appearance_queries: "search_appearance_queries";
4700
+ search_appearance_page_queries: "search_appearance_page_queries";
4701
+ }>;
4702
+ mode: z.ZodEnum<{
4703
+ browser: "browser";
4704
+ server: "server";
4705
+ }>;
4706
+ files: z.ZodArray<z.ZodObject<{
4707
+ url: z.ZodString;
4708
+ bytes: z.ZodNumber;
4709
+ contentHash: z.ZodString;
4710
+ rowCount: z.ZodNumber;
4711
+ }, z.core.$loose>>;
4712
+ overlay: z.ZodOptional<z.ZodObject<{
4713
+ url: z.ZodString;
4714
+ bytes: z.ZodNumber;
4715
+ contentHash: z.ZodString;
4716
+ rowCount: z.ZodNumber;
4717
+ }, z.core.$loose>>;
4718
+ totalBytes: z.ZodNumber;
4719
+ totalRows: z.ZodNumber;
4720
+ }, z.core.$loose>>;
4721
+ serverTail: z.ZodOptional<z.ZodObject<{
4722
+ engine: z.ZodEnum<{
4723
+ "r2-sql": "r2-sql";
4724
+ duckdb: "duckdb";
4725
+ }>;
4726
+ endpoint: z.ZodString;
4727
+ }, z.core.$strip>>;
4728
+ eligibilityCeiling: z.ZodObject<{
4729
+ maxBytes: z.ZodNumber;
4730
+ maxRows: z.ZodNumber;
4731
+ }, z.core.$strip>;
4492
4732
  }, z.core.$loose>;
4493
4733
  };
4494
4734
  readonly getData: {
@@ -5700,9 +5940,63 @@ declare const partnerEndpointSchemas: {
5700
5940
  };
5701
5941
  readonly analyticsAnalysisSources: {
5702
5942
  readonly response: z.ZodObject<{
5703
- tables: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>;
5943
+ siteId: z.ZodString;
5944
+ searchType: z.ZodEnum<{
5945
+ web: "web";
5946
+ image: "image";
5947
+ video: "video";
5948
+ news: "news";
5949
+ discover: "discover";
5950
+ googleNews: "googleNews";
5951
+ }>;
5952
+ range: z.ZodObject<{
5953
+ start: z.ZodString;
5954
+ end: z.ZodString;
5955
+ }, z.core.$strip>;
5956
+ snapshotVersion: z.ZodString;
5704
5957
  generatedAt: z.ZodString;
5705
- manifestVersion: z.ZodString;
5958
+ tables: z.ZodArray<z.ZodObject<{
5959
+ table: z.ZodEnum<{
5960
+ pages: "pages";
5961
+ queries: "queries";
5962
+ countries: "countries";
5963
+ page_queries: "page_queries";
5964
+ dates: "dates";
5965
+ search_appearance: "search_appearance";
5966
+ search_appearance_pages: "search_appearance_pages";
5967
+ search_appearance_queries: "search_appearance_queries";
5968
+ search_appearance_page_queries: "search_appearance_page_queries";
5969
+ }>;
5970
+ mode: z.ZodEnum<{
5971
+ browser: "browser";
5972
+ server: "server";
5973
+ }>;
5974
+ files: z.ZodArray<z.ZodObject<{
5975
+ url: z.ZodString;
5976
+ bytes: z.ZodNumber;
5977
+ contentHash: z.ZodString;
5978
+ rowCount: z.ZodNumber;
5979
+ }, z.core.$loose>>;
5980
+ overlay: z.ZodOptional<z.ZodObject<{
5981
+ url: z.ZodString;
5982
+ bytes: z.ZodNumber;
5983
+ contentHash: z.ZodString;
5984
+ rowCount: z.ZodNumber;
5985
+ }, z.core.$loose>>;
5986
+ totalBytes: z.ZodNumber;
5987
+ totalRows: z.ZodNumber;
5988
+ }, z.core.$loose>>;
5989
+ serverTail: z.ZodOptional<z.ZodObject<{
5990
+ engine: z.ZodEnum<{
5991
+ "r2-sql": "r2-sql";
5992
+ duckdb: "duckdb";
5993
+ }>;
5994
+ endpoint: z.ZodString;
5995
+ }, z.core.$strip>>;
5996
+ eligibilityCeiling: z.ZodObject<{
5997
+ maxBytes: z.ZodNumber;
5998
+ maxRows: z.ZodNumber;
5999
+ }, z.core.$strip>;
5706
6000
  }, z.core.$loose>;
5707
6001
  };
5708
6002
  readonly analyticsSourceInfo: {
@@ -709,7 +709,8 @@ const bulkRegisterPartnerSitesSchema = z.object({
709
709
  externalSiteId: z.string().optional(),
710
710
  externalSiteUrl: z.string().optional(),
711
711
  webhookUrl: z.url().optional(),
712
- webhookEvents: z.array(z.enum(CANONICAL_WEBHOOK_EVENTS)).optional()
712
+ webhookEvents: z.array(z.enum(CANONICAL_WEBHOOK_EVENTS)).optional(),
713
+ enabledSearchTypes: z.array(searchTypeSchema).optional()
713
714
  }).loose()).optional()
714
715
  }).refine((value) => (value.siteUrls?.length ?? 0) > 0 || (value.sites?.length ?? 0) > 0, { message: "siteUrls or sites is required" });
715
716
  const bulkRegisterPartnerSitesResponseSchema = z.object({
@@ -1109,9 +1110,50 @@ const gscdumpTopAssociationParamsSchema = z.object({
1109
1110
  });
1110
1111
  const gscdumpTopAssociationResponseSchema = z.object({ value: z.string().nullable() }).loose();
1111
1112
  const gscdumpAnalysisSourcesResponseSchema = z.object({
1112
- tables: z.record(z.string(), z.array(z.string())),
1113
+ siteId: z.string(),
1114
+ searchType: searchTypeSchema,
1115
+ range: z.object({
1116
+ start: z.string(),
1117
+ end: z.string()
1118
+ }),
1119
+ snapshotVersion: z.string(),
1113
1120
  generatedAt: z.string(),
1114
- manifestVersion: z.string()
1121
+ tables: z.array(z.object({
1122
+ table: z.enum([
1123
+ "pages",
1124
+ "queries",
1125
+ "countries",
1126
+ "page_queries",
1127
+ "dates",
1128
+ "search_appearance",
1129
+ "search_appearance_pages",
1130
+ "search_appearance_queries",
1131
+ "search_appearance_page_queries"
1132
+ ]),
1133
+ mode: z.enum(["browser", "server"]),
1134
+ files: z.array(z.object({
1135
+ url: z.string(),
1136
+ bytes: z.number(),
1137
+ contentHash: z.string(),
1138
+ rowCount: z.number()
1139
+ }).loose()),
1140
+ overlay: z.object({
1141
+ url: z.string(),
1142
+ bytes: z.number(),
1143
+ contentHash: z.string(),
1144
+ rowCount: z.number()
1145
+ }).loose().optional(),
1146
+ totalBytes: z.number(),
1147
+ totalRows: z.number()
1148
+ }).loose()),
1149
+ serverTail: z.object({
1150
+ engine: z.enum(["r2-sql", "duckdb"]),
1151
+ endpoint: z.string()
1152
+ }).optional(),
1153
+ eligibilityCeiling: z.object({
1154
+ maxBytes: z.number(),
1155
+ maxRows: z.number()
1156
+ })
1115
1157
  }).loose();
1116
1158
  const gscdumpKeywordSparklinesParamsSchema = z.object({
1117
1159
  keywords: z.array(z.string()).min(1).max(20),
@@ -1,3 +1,124 @@
1
+ /** The 6 Iceberg fact tables — string-typed here to avoid an engine dep. */
2
+ type FileResolutionTable = 'pages' | 'queries' | 'countries' | 'page_queries' | 'dates' | 'search_appearance' | 'search_appearance_pages' | 'search_appearance_queries' | 'search_appearance_page_queries';
3
+ /** Request query params for `GET /api/sites/[siteId]/analysis-sources`. */
4
+ interface FileResolutionRequest {
5
+ /** `YYYY-MM-DD` inclusive. Required — no date range = no resolution. */
6
+ start: string;
7
+ /** `YYYY-MM-DD` inclusive. */
8
+ end: string;
9
+ searchType?: GscSearchType;
10
+ /**
11
+ * Restrict resolution to these tables. Omitted = all 5. The archetype the
12
+ * caller intends determines which tables it needs.
13
+ */
14
+ tables?: FileResolutionTable[];
15
+ /**
16
+ * The archetype the caller will run. Lets the endpoint route the 2
17
+ * window-function archetypes straight to the server tail even when the
18
+ * data would be browser-eligible by size.
19
+ */
20
+ archetype?: string;
21
+ }
22
+ /**
23
+ * One compacted Iceberg parquet data file the browser should fetch into OPFS.
24
+ */
25
+ interface ResolvedParquetFile {
26
+ /**
27
+ * Same-origin URL (`/api/r2-data/<key>?...`) carrying a signed size hint
28
+ * and a short-lived exact-key access token. Stable for the file's lifetime
29
+ * (content-addressed).
30
+ */
31
+ url: string;
32
+ /** Byte size — drives the browser-eligibility sum and OPFS quota planning. */
33
+ bytes: number;
34
+ /**
35
+ * Opaque content-stable identifier for this parquet file. Two requests for
36
+ * the same bytes MUST return the same `contentHash`; any change in bytes
37
+ * MUST yield a different one. The OPFS cache uses this as the file's
38
+ * address (encoded into the cache filename) — it is NOT required to be a
39
+ * SHA-256.
40
+ *
41
+ * In practice the server returns the Iceberg `data_file.file_path` object
42
+ * key, which is UUID-derived and content-addressed by convention.
43
+ */
44
+ contentHash: string;
45
+ /** Row count, for eligibility accounting + diagnostics. */
46
+ rowCount: number;
47
+ }
48
+ /** Per-table resolution result. */
49
+ interface ResolvedTable {
50
+ table: FileResolutionTable;
51
+ /**
52
+ * `'browser'` — `files` is populated; the browser downloads + attaches.
53
+ * `'server'` — this `(site, table)` exceeds the eligibility ceiling;
54
+ * `files` is empty and queries route to the server tail.
55
+ */
56
+ mode: 'browser' | 'server';
57
+ /** Compacted Iceberg data files. Empty when `mode === 'server'`. */
58
+ files: ResolvedParquetFile[];
59
+ /**
60
+ * Recent-window overlay parquet — the non-stable tail (the freshest days the
61
+ * ingest stability cutoff excludes from the lake), materialized out-of-band at
62
+ * `_recent_overlay/{site}/{searchType}/{table}.parquet`. When present, the
63
+ * browser unions it with an anti-join dedup (the lake wins on any shared day;
64
+ * the overlay supplies only days the lake lacks) so the freshest days serve
65
+ * from the overlay instead of returning 0. Absent (`undefined`) when no
66
+ * overlay exists for this `(site, searchType, table)` or for `mode: 'server'`.
67
+ *
68
+ * The overlay is OVERWRITTEN in place each sync, so its `contentHash` MUST
69
+ * change whenever the bytes change (the server derives it from the R2 object
70
+ * etag) — otherwise the OPFS cache would serve a stale overlay. The enclosing
71
+ * `FileResolutionResponse.snapshotVersion` folds the overlay hash in for the
72
+ * same reason (it gates browser re-attach).
73
+ */
74
+ overlay?: ResolvedParquetFile;
75
+ /** Total bytes across `files` — compared against the ceiling. */
76
+ totalBytes: number;
77
+ /** Total rows across `files`. */
78
+ totalRows: number;
79
+ }
80
+ /** Server-tail directive — how an ineligible `(site, table)` is queried. */
81
+ interface ServerTailDirective {
82
+ /**
83
+ * `'r2-sql'` — server runs the query via R2 SQL over the Iceberg table.
84
+ * `'duckdb'` — server runs DuckDB-over-Iceberg-files (window functions).
85
+ * The hybrid split (POC Spike 4): 8/10 archetypes `r2-sql`, 2 `duckdb`.
86
+ */
87
+ engine: 'r2-sql' | 'duckdb';
88
+ /** Endpoint the consumer POSTs the archetype query to. */
89
+ endpoint: string;
90
+ }
91
+ /** Response body of the file-resolution endpoint. */
92
+ interface FileResolutionResponse {
93
+ siteId: string;
94
+ searchType: GscSearchType;
95
+ range: {
96
+ start: string;
97
+ end: string;
98
+ };
99
+ /**
100
+ * Stable hash over the resolved file set. The browser re-attaches only when
101
+ * this changes (new compaction landed). Replaces the old `manifestVersion`.
102
+ */
103
+ snapshotVersion: string;
104
+ generatedAt: string;
105
+ /** Per-table resolution. */
106
+ tables: ResolvedTable[];
107
+ /**
108
+ * Present iff at least one table resolved to `mode: 'server'`. Tells the
109
+ * consumer how to route the server-tail queries for those tables.
110
+ */
111
+ serverTail?: ServerTailDirective;
112
+ /**
113
+ * The per-(site,table) browser-eligibility ceiling in effect, echoed so the
114
+ * consumer can show "X is too large for local analysis" UX without
115
+ * hard-coding the threshold.
116
+ */
117
+ eligibilityCeiling: {
118
+ maxBytes: number;
119
+ maxRows: number;
120
+ };
121
+ }
1
122
  declare const GSCDUMP_ONBOARDING_CONTRACT_VERSION: "2026-05-11";
2
123
  declare const GSCDUMP_REQUIRED_ANALYTICS_SCOPE: "https://www.googleapis.com/auth/webmasters.readonly";
3
124
  declare const GSCDUMP_WRITE_ANALYTICS_SCOPE: "https://www.googleapis.com/auth/webmasters";
@@ -916,6 +1037,7 @@ interface RegisterPartnerSiteParams {
916
1037
  webhookUrl?: string;
917
1038
  webhookEvents?: WebhookEventType[];
918
1039
  teamId?: string;
1040
+ enabledSearchTypes?: GscSearchType[];
919
1041
  }
920
1042
  interface BulkRegisterPartnerSitesParams {
921
1043
  userId?: string;
@@ -928,6 +1050,7 @@ interface BulkRegisterPartnerSitesParams {
928
1050
  externalSiteUrl?: string;
929
1051
  webhookUrl?: string;
930
1052
  webhookEvents?: WebhookEventType[];
1053
+ enabledSearchTypes?: GscSearchType[];
931
1054
  }>;
932
1055
  }
933
1056
  interface BulkRegisterPartnerSiteResult {
@@ -956,18 +1079,7 @@ interface DeletePartnerUserResponse {
956
1079
  userId: number;
957
1080
  publicId: string;
958
1081
  }
959
- interface GscdumpAnalysisSourcesResponse {
960
- tables: Record<string, string[]>;
961
- generatedAt: string;
962
- manifestVersion: string;
963
- searchType?: GscSearchType;
964
- canUseBrowser?: boolean;
965
- fallback?: string;
966
- reason?: string;
967
- estimatedBytes?: number;
968
- estimatedFiles?: number;
969
- coveragePlan?: unknown;
970
- }
1082
+ type GscdumpAnalysisSourcesResponse = FileResolutionResponse;
971
1083
  interface SearchTypeOptions {
972
1084
  searchType?: GscSearchType;
973
1085
  }
@@ -1607,4 +1719,4 @@ interface PartnerWebhookHeaders {
1607
1719
  timestamp?: string | null;
1608
1720
  signature?: string | null;
1609
1721
  }
1610
- export { AccountNextAction, AccountStatus, AddPartnerTeamMemberParams, AnalysisSourcesOptions, AnalysisSourcesResponse, AnalyticsClient, AnalyticsNextAction, AnalyticsStatus, BackfillRange, BackfillResponse, BindPartnerSiteTeamParams, BuilderState, BulkRegisterPartnerSiteResult, BulkRegisterPartnerSitesParams, BulkRegisterPartnerSitesResponse, CanonicalWebhookEventType, ColumnDef, ColumnType, CountriesResponse, CountryRow, CreatePartnerTeamParams, CreateWebhookEnvelopeOptions, DataDetailOptions, DataQueryOptions, DeletePartnerUserResponse, Dimension, Filter, GSCDUMP_ONBOARDING_CONTRACT_VERSION, GSCDUMP_OPTIONAL_INDEXING_SCOPE, GSCDUMP_REQUIRED_ANALYTICS_SCOPE, GSCDUMP_WRITE_ANALYTICS_SCOPE, Grain, GscApiRange, GscComparisonFilter, GscRowQueryMeta, GscRowQueryResponse, GscSearchType, GscdumpAnalysisParams, GscdumpAnalysisPreset, GscdumpAnalysisResponse, GscdumpAnalysisSourcesResponse, GscdumpAvailableSite, GscdumpCanonicalMismatchRow, GscdumpCanonicalMismatchesResponse, GscdumpDataDetailResponse, GscdumpDataResponse, GscdumpDataRow, GscdumpDateRangeParams, GscdumpHealthResponse, GscdumpIndexPercentResponse, GscdumpIndexPercentSitemap, GscdumpIndexPercentTrendPoint, GscdumpIndexingDiagnosticsResponse, GscdumpIndexingInspectRateLimited, GscdumpIndexingInspectRequest, GscdumpIndexingInspectResponse, GscdumpIndexingInspectResult, GscdumpIndexingIssueSeverity, GscdumpIndexingResponse, GscdumpIndexingTrendPoint, GscdumpIndexingUrl, GscdumpIndexingUrlStatus, GscdumpIndexingUrlsResponse, GscdumpInvisibleUrlRow, GscdumpKeywordSparklinesParams, GscdumpKeywordSparklinesResponse, GscdumpMeta, GscdumpOrphanPageRow, GscdumpPageTrendParams, GscdumpPageTrendResponse, GscdumpPerSitemapHistoryEntry, GscdumpPermissionRecovery, GscdumpQueryTrendParams, GscdumpQueryTrendResponse, GscdumpRichResultItem, GscdumpSiteRegistration, GscdumpSiteReportResponse, GscdumpSitemap, GscdumpSitemapChangesResponse, GscdumpSitemapHistory, GscdumpSitemapsResponse, GscdumpSyncJobItem, GscdumpSyncJobStatus, GscdumpSyncJobsQueueCounts, GscdumpSyncJobsResponse, GscdumpSyncProgressDateStatus, GscdumpSyncProgressPhaseCounts, GscdumpSyncProgressResponse, GscdumpSyncProgressSite, GscdumpSyncStatusResponse, GscdumpTeamMemberRow, GscdumpTeamRow, GscdumpTopAssociationParams, GscdumpTopAssociationResponse, GscdumpTotals, GscdumpUserMeResponse, GscdumpUserRegistration, GscdumpUserSettings, GscdumpUserSite, GscdumpUserStatus, GscdumpUserTokenUpdate, IndexingDiagnostics, IndexingDiagnosticsParams, IndexingInspectRateLimit, IndexingInspectRateLimited, IndexingInspectRequest, IndexingInspectResponse, IndexingInspectResult, IndexingIssue, IndexingIssueSeverity, IndexingNextAction, IndexingStatus, IndexingUrlRow, IndexingUrlStatus, IndexingUrlsParams, IndexingUrlsResponse, InspectionHistoryRecord, InspectionHistoryResponse, InspectionIndex, InspectionRecordRaw, LifecycleError, LifecycleErrorCode, LifecycleProgress, LifecycleWebhookEnvelope, LifecycleWebhookEvent, Metric, PartnerClient, PartnerLifecycleAccount, PartnerLifecycleResponse, PartnerLifecycleSite, PartnerRealtimeEvent, PartnerRealtimeEventType, PartnerRealtimeMessage, PartnerWebhookData, PartnerWebhookHeaders, PropertyNextAction, PropertyStatus, QuerySourceMode, RealtimeAuthFailedEvent, RealtimeAuthRequiredMessage, RealtimeConnectedMessage, RealtimeEnrichmentCompleteEvent, RealtimeErrorMessage, RealtimeIndexingCompleteEvent, RealtimeIndexingProgressEvent, RealtimeJobFailedEvent, RealtimeNeedsReauthEvent, RealtimePongMessage, RealtimeSiteAddedEvent, RealtimeSiteRemovedEvent, RealtimeSitemapCompleteEvent, RealtimeSitemapProgressEvent, RealtimeSubscribedMessage, RealtimeSyncCompleteEvent, RealtimeSyncFailedEvent, RealtimeSyncJobCompleteEvent, RealtimeSyncProgressEvent, RealtimeSyncSiteCompleteEvent, RegisterPartnerSiteParams, RegisterPartnerUserParams, RollupEnvelope, Row, ScheduleState, SearchAppearanceResponse, SearchAppearanceRow, SearchTypeOptions, SiteListItem, SitemapAddedRow, SitemapChangesResponse, SitemapHistoryRecord, SitemapHistoryResponse, SitemapIndex, SitemapNextAction, SitemapRemovedRow, SitemapStatus, SourceInfoOptions, SourceInfoResponse, TableName, TableSchema, TenantCtx, UpdatePartnerUserTokensParams, WebhookEnvelope, WebhookEventType, WhoamiResponse, accountNextActions, accountStatuses, analyticsNextActions, analyticsStatuses, hasOptionalIndexingScope, hasRequiredAnalyticsScope, indexingNextActions, indexingStatuses, lifecycleErrorCodes, lifecycleWebhookEvents, parseGrantedScopes, propertyNextActions, propertyStatuses, querySourceModes, sitemapNextActions, sitemapStatuses };
1722
+ export { AccountNextAction, AccountStatus, AddPartnerTeamMemberParams, AnalysisSourcesOptions, AnalysisSourcesResponse, AnalyticsClient, AnalyticsNextAction, AnalyticsStatus, BackfillRange, BackfillResponse, BindPartnerSiteTeamParams, BuilderState, BulkRegisterPartnerSiteResult, BulkRegisterPartnerSitesParams, BulkRegisterPartnerSitesResponse, CanonicalWebhookEventType, ColumnDef, ColumnType, CountriesResponse, CountryRow, CreatePartnerTeamParams, CreateWebhookEnvelopeOptions, DataDetailOptions, DataQueryOptions, DeletePartnerUserResponse, Dimension, FileResolutionRequest, FileResolutionResponse, FileResolutionTable, Filter, GSCDUMP_ONBOARDING_CONTRACT_VERSION, GSCDUMP_OPTIONAL_INDEXING_SCOPE, GSCDUMP_REQUIRED_ANALYTICS_SCOPE, GSCDUMP_WRITE_ANALYTICS_SCOPE, Grain, GscApiRange, GscComparisonFilter, GscRowQueryMeta, GscRowQueryResponse, GscSearchType, GscdumpAnalysisParams, GscdumpAnalysisPreset, GscdumpAnalysisResponse, GscdumpAnalysisSourcesResponse, GscdumpAvailableSite, GscdumpCanonicalMismatchRow, GscdumpCanonicalMismatchesResponse, GscdumpDataDetailResponse, GscdumpDataResponse, GscdumpDataRow, GscdumpDateRangeParams, GscdumpHealthResponse, GscdumpIndexPercentResponse, GscdumpIndexPercentSitemap, GscdumpIndexPercentTrendPoint, GscdumpIndexingDiagnosticsResponse, GscdumpIndexingInspectRateLimited, GscdumpIndexingInspectRequest, GscdumpIndexingInspectResponse, GscdumpIndexingInspectResult, GscdumpIndexingIssueSeverity, GscdumpIndexingResponse, GscdumpIndexingTrendPoint, GscdumpIndexingUrl, GscdumpIndexingUrlStatus, GscdumpIndexingUrlsResponse, GscdumpInvisibleUrlRow, GscdumpKeywordSparklinesParams, GscdumpKeywordSparklinesResponse, GscdumpMeta, GscdumpOrphanPageRow, GscdumpPageTrendParams, GscdumpPageTrendResponse, GscdumpPerSitemapHistoryEntry, GscdumpPermissionRecovery, GscdumpQueryTrendParams, GscdumpQueryTrendResponse, GscdumpRichResultItem, GscdumpSiteRegistration, GscdumpSiteReportResponse, GscdumpSitemap, GscdumpSitemapChangesResponse, GscdumpSitemapHistory, GscdumpSitemapsResponse, GscdumpSyncJobItem, GscdumpSyncJobStatus, GscdumpSyncJobsQueueCounts, GscdumpSyncJobsResponse, GscdumpSyncProgressDateStatus, GscdumpSyncProgressPhaseCounts, GscdumpSyncProgressResponse, GscdumpSyncProgressSite, GscdumpSyncStatusResponse, GscdumpTeamMemberRow, GscdumpTeamRow, GscdumpTopAssociationParams, GscdumpTopAssociationResponse, GscdumpTotals, GscdumpUserMeResponse, GscdumpUserRegistration, GscdumpUserSettings, GscdumpUserSite, GscdumpUserStatus, GscdumpUserTokenUpdate, IndexingDiagnostics, IndexingDiagnosticsParams, IndexingInspectRateLimit, IndexingInspectRateLimited, IndexingInspectRequest, IndexingInspectResponse, IndexingInspectResult, IndexingIssue, IndexingIssueSeverity, IndexingNextAction, IndexingStatus, IndexingUrlRow, IndexingUrlStatus, IndexingUrlsParams, IndexingUrlsResponse, InspectionHistoryRecord, InspectionHistoryResponse, InspectionIndex, InspectionRecordRaw, LifecycleError, LifecycleErrorCode, LifecycleProgress, LifecycleWebhookEnvelope, LifecycleWebhookEvent, Metric, PartnerClient, PartnerLifecycleAccount, PartnerLifecycleResponse, PartnerLifecycleSite, PartnerRealtimeEvent, PartnerRealtimeEventType, PartnerRealtimeMessage, PartnerWebhookData, PartnerWebhookHeaders, PropertyNextAction, PropertyStatus, QuerySourceMode, RealtimeAuthFailedEvent, RealtimeAuthRequiredMessage, RealtimeConnectedMessage, RealtimeEnrichmentCompleteEvent, RealtimeErrorMessage, RealtimeIndexingCompleteEvent, RealtimeIndexingProgressEvent, RealtimeJobFailedEvent, RealtimeNeedsReauthEvent, RealtimePongMessage, RealtimeSiteAddedEvent, RealtimeSiteRemovedEvent, RealtimeSitemapCompleteEvent, RealtimeSitemapProgressEvent, RealtimeSubscribedMessage, RealtimeSyncCompleteEvent, RealtimeSyncFailedEvent, RealtimeSyncJobCompleteEvent, RealtimeSyncProgressEvent, RealtimeSyncSiteCompleteEvent, RegisterPartnerSiteParams, RegisterPartnerUserParams, ResolvedParquetFile, ResolvedTable, RollupEnvelope, Row, ScheduleState, SearchAppearanceResponse, SearchAppearanceRow, SearchTypeOptions, ServerTailDirective, SiteListItem, SitemapAddedRow, SitemapChangesResponse, SitemapHistoryRecord, SitemapHistoryResponse, SitemapIndex, SitemapNextAction, SitemapRemovedRow, SitemapStatus, SourceInfoOptions, SourceInfoResponse, TableName, TableSchema, TenantCtx, UpdatePartnerUserTokensParams, WebhookEnvelope, WebhookEventType, WhoamiResponse, accountNextActions, accountStatuses, analyticsNextActions, analyticsStatuses, hasOptionalIndexingScope, hasRequiredAnalyticsScope, indexingNextActions, indexingStatuses, lifecycleErrorCodes, lifecycleWebhookEvents, parseGrantedScopes, propertyNextActions, propertyStatuses, querySourceModes, sitemapNextActions, sitemapStatuses };
package/dist/index.d.mts CHANGED
@@ -1,126 +1,5 @@
1
1
  import { addPartnerTeamMemberSchema, analyticsEndpointSchemas, analyticsRoutes, backfillRangeSchema, backfillResponseSchema, bindPartnerSiteTeamSchema, builderStateSchema, bulkRegisterPartnerSitesResponseSchema, bulkRegisterPartnerSitesSchema, canonicalWebhookEventTypeSchema, countriesResponseSchema, countryRowSchema, createPartnerTeamSchema, dataDetailOptionsSchema, dataQueryOptionsSchema, gscApiRangeSchema, gscComparisonFilterSchema, gscRowQueryMetaSchema, gscRowQueryResponseSchema, gscdumpAnalysisParamsSchema, gscdumpAnalysisPresetSchema, gscdumpAnalysisResponseSchema, gscdumpAnalysisSourcesResponseSchema, gscdumpAvailableSiteSchema, gscdumpCanonicalMismatchesResponseSchema, gscdumpDataDetailResponseSchema, gscdumpDataResponseSchema, gscdumpDataRowSchema, gscdumpDateRangeParamsSchema, gscdumpDeletePartnerUserResponseSchema, gscdumpHealthResponseSchema, gscdumpIndexPercentParamsSchema, gscdumpIndexPercentResponseSchema, gscdumpIndexingDiagnosticsResponseSchema, gscdumpIndexingResponseSchema, gscdumpIndexingUrlsResponseSchema, gscdumpKeywordSparklinesParamsSchema, gscdumpKeywordSparklinesResponseSchema, gscdumpMetaSchema, gscdumpPageTrendParamsSchema, gscdumpPageTrendResponseSchema, gscdumpPermissionRecoverySchema, gscdumpQueryTrendParamsSchema, gscdumpQueryTrendResponseSchema, gscdumpSiteRegistrationSchema, gscdumpSiteReportResponseSchema, gscdumpSitemapChangesResponseSchema, gscdumpSitemapsResponseSchema, gscdumpSyncJobsResponseSchema, gscdumpSyncProgressResponseSchema, gscdumpTeamMemberRowSchema, gscdumpTeamRoleSchema, gscdumpTeamRowSchema, gscdumpTopAssociationParamsSchema, gscdumpTopAssociationResponseSchema, gscdumpTotalsSchema, gscdumpUserMeResponseSchema, gscdumpUserRegistrationSchema, gscdumpUserSettingsSchema, gscdumpUserSiteSchema, gscdumpUserStatusSchema, indexingDiagnosticsParamsSchema, indexingDiagnosticsSchema, indexingInspectAnyResponseSchema, indexingInspectRateLimitedSchema, indexingInspectRequestSchema, indexingInspectResponseSchema, indexingInspectResultSchema, indexingIssueSchema, indexingUrlRowSchema, indexingUrlStatusSchema, indexingUrlsParamsSchema, indexingUrlsResponseSchema, inspectionHistoryRecordSchema, inspectionHistoryResponseSchema, inspectionIndexSchema, inspectionRecordRawSchema, jobFailedWebhookPayloadSchema, lifecycleErrorSchema, lifecycleProgressSchema, partnerControlEndpointSchemas, partnerEndpointSchemas, partnerLifecycleAccountSchema, partnerLifecycleResponseSchema, partnerLifecycleSiteSchema, partnerRealtimeEventSchema, partnerRoutes, partnerWebhookDataSchema, partnerWebhookEnvelopeSchema, registerPartnerSiteSchema, registerPartnerUserSchema, rollupEnvelopeSchema, scheduleStateSchema, searchAppearanceResponseSchema, searchAppearanceRowSchema, searchTypeSchema, siteListItemSchema, sitemapChangesResponseSchema, sitemapHistoryRecordSchema, sitemapHistoryResponseSchema, sitemapIndexSchema, sourceInfoResponseSchema, updatePartnerUserTokensSchema, webhookEventTypeSchema, whoamiResponseSchema } from "./_chunks/schemas.mjs";
2
- import { AccountNextAction, AccountStatus, AddPartnerTeamMemberParams, AnalysisSourcesOptions, AnalysisSourcesResponse, AnalyticsClient, AnalyticsNextAction, AnalyticsStatus, BackfillRange, BackfillResponse, BindPartnerSiteTeamParams, BuilderState, BulkRegisterPartnerSiteResult, BulkRegisterPartnerSitesParams, BulkRegisterPartnerSitesResponse, CanonicalWebhookEventType, ColumnDef, ColumnType, CountriesResponse, CountryRow, CreatePartnerTeamParams, CreateWebhookEnvelopeOptions, DataDetailOptions, DataQueryOptions, DeletePartnerUserResponse, Dimension, Filter, GSCDUMP_ONBOARDING_CONTRACT_VERSION, GSCDUMP_OPTIONAL_INDEXING_SCOPE, GSCDUMP_REQUIRED_ANALYTICS_SCOPE, GSCDUMP_WRITE_ANALYTICS_SCOPE, Grain, GscApiRange, GscComparisonFilter, GscRowQueryMeta, GscRowQueryResponse, GscSearchType, GscdumpAnalysisParams, GscdumpAnalysisPreset, GscdumpAnalysisResponse, GscdumpAnalysisSourcesResponse, GscdumpAvailableSite, GscdumpCanonicalMismatchRow, GscdumpCanonicalMismatchesResponse, GscdumpDataDetailResponse, GscdumpDataResponse, GscdumpDataRow, GscdumpDateRangeParams, GscdumpHealthResponse, GscdumpIndexPercentResponse, GscdumpIndexPercentSitemap, GscdumpIndexPercentTrendPoint, GscdumpIndexingDiagnosticsResponse, GscdumpIndexingInspectRateLimited, GscdumpIndexingInspectRequest, GscdumpIndexingInspectResponse, GscdumpIndexingInspectResult, GscdumpIndexingIssueSeverity, GscdumpIndexingResponse, GscdumpIndexingTrendPoint, GscdumpIndexingUrl, GscdumpIndexingUrlStatus, GscdumpIndexingUrlsResponse, GscdumpInvisibleUrlRow, GscdumpKeywordSparklinesParams, GscdumpKeywordSparklinesResponse, GscdumpMeta, GscdumpOrphanPageRow, GscdumpPageTrendParams, GscdumpPageTrendResponse, GscdumpPerSitemapHistoryEntry, GscdumpPermissionRecovery, GscdumpQueryTrendParams, GscdumpQueryTrendResponse, GscdumpRichResultItem, GscdumpSiteRegistration, GscdumpSiteReportResponse, GscdumpSitemap, GscdumpSitemapChangesResponse, GscdumpSitemapHistory, GscdumpSitemapsResponse, GscdumpSyncJobItem, GscdumpSyncJobStatus, GscdumpSyncJobsQueueCounts, GscdumpSyncJobsResponse, GscdumpSyncProgressDateStatus, GscdumpSyncProgressPhaseCounts, GscdumpSyncProgressResponse, GscdumpSyncProgressSite, GscdumpSyncStatusResponse, GscdumpTeamMemberRow, GscdumpTeamRow, GscdumpTopAssociationParams, GscdumpTopAssociationResponse, GscdumpTotals, GscdumpUserMeResponse, GscdumpUserRegistration, GscdumpUserSettings, GscdumpUserSite, GscdumpUserStatus, GscdumpUserTokenUpdate, IndexingDiagnostics, IndexingDiagnosticsParams, IndexingInspectRateLimit, IndexingInspectRateLimited, IndexingInspectRequest, IndexingInspectResponse, IndexingInspectResult, IndexingIssue, IndexingIssueSeverity, IndexingNextAction, IndexingStatus, IndexingUrlRow, IndexingUrlStatus, IndexingUrlsParams, IndexingUrlsResponse, InspectionHistoryRecord, InspectionHistoryResponse, InspectionIndex, InspectionRecordRaw, LifecycleError, LifecycleErrorCode, LifecycleProgress, LifecycleWebhookEnvelope, LifecycleWebhookEvent, Metric, PartnerClient, PartnerLifecycleAccount, PartnerLifecycleResponse, PartnerLifecycleSite, PartnerRealtimeEvent, PartnerRealtimeEventType, PartnerRealtimeMessage, PartnerWebhookData, PartnerWebhookHeaders, PropertyNextAction, PropertyStatus, QuerySourceMode, RealtimeAuthFailedEvent, RealtimeAuthRequiredMessage, RealtimeConnectedMessage, RealtimeEnrichmentCompleteEvent, RealtimeErrorMessage, RealtimeIndexingCompleteEvent, RealtimeIndexingProgressEvent, RealtimeJobFailedEvent, RealtimeNeedsReauthEvent, RealtimePongMessage, RealtimeSiteAddedEvent, RealtimeSiteRemovedEvent, RealtimeSitemapCompleteEvent, RealtimeSitemapProgressEvent, RealtimeSubscribedMessage, RealtimeSyncCompleteEvent, RealtimeSyncFailedEvent, RealtimeSyncJobCompleteEvent, RealtimeSyncProgressEvent, RealtimeSyncSiteCompleteEvent, RegisterPartnerSiteParams, RegisterPartnerUserParams, RollupEnvelope, Row, ScheduleState, SearchAppearanceResponse, SearchAppearanceRow, SearchTypeOptions, SiteListItem, SitemapAddedRow, SitemapChangesResponse, SitemapHistoryRecord, SitemapHistoryResponse, SitemapIndex, SitemapNextAction, SitemapRemovedRow, SitemapStatus, SourceInfoOptions, SourceInfoResponse, TableName, TableSchema, TenantCtx, UpdatePartnerUserTokensParams, WebhookEnvelope, WebhookEventType, WhoamiResponse, accountNextActions, accountStatuses, analyticsNextActions, analyticsStatuses, hasOptionalIndexingScope, hasRequiredAnalyticsScope, indexingNextActions, indexingStatuses, lifecycleErrorCodes, lifecycleWebhookEvents, parseGrantedScopes, propertyNextActions, propertyStatuses, querySourceModes, sitemapNextActions, sitemapStatuses } from "./_chunks/types.mjs";
2
+ import { AccountNextAction, AccountStatus, AddPartnerTeamMemberParams, AnalysisSourcesOptions, AnalysisSourcesResponse, AnalyticsClient, AnalyticsNextAction, AnalyticsStatus, BackfillRange, BackfillResponse, BindPartnerSiteTeamParams, BuilderState, BulkRegisterPartnerSiteResult, BulkRegisterPartnerSitesParams, BulkRegisterPartnerSitesResponse, CanonicalWebhookEventType, ColumnDef, ColumnType, CountriesResponse, CountryRow, CreatePartnerTeamParams, CreateWebhookEnvelopeOptions, DataDetailOptions, DataQueryOptions, DeletePartnerUserResponse, Dimension, FileResolutionRequest, FileResolutionResponse, FileResolutionTable, Filter, GSCDUMP_ONBOARDING_CONTRACT_VERSION, GSCDUMP_OPTIONAL_INDEXING_SCOPE, GSCDUMP_REQUIRED_ANALYTICS_SCOPE, GSCDUMP_WRITE_ANALYTICS_SCOPE, Grain, GscApiRange, GscComparisonFilter, GscRowQueryMeta, GscRowQueryResponse, GscSearchType, GscdumpAnalysisParams, GscdumpAnalysisPreset, GscdumpAnalysisResponse, GscdumpAnalysisSourcesResponse, GscdumpAvailableSite, GscdumpCanonicalMismatchRow, GscdumpCanonicalMismatchesResponse, GscdumpDataDetailResponse, GscdumpDataResponse, GscdumpDataRow, GscdumpDateRangeParams, GscdumpHealthResponse, GscdumpIndexPercentResponse, GscdumpIndexPercentSitemap, GscdumpIndexPercentTrendPoint, GscdumpIndexingDiagnosticsResponse, GscdumpIndexingInspectRateLimited, GscdumpIndexingInspectRequest, GscdumpIndexingInspectResponse, GscdumpIndexingInspectResult, GscdumpIndexingIssueSeverity, GscdumpIndexingResponse, GscdumpIndexingTrendPoint, GscdumpIndexingUrl, GscdumpIndexingUrlStatus, GscdumpIndexingUrlsResponse, GscdumpInvisibleUrlRow, GscdumpKeywordSparklinesParams, GscdumpKeywordSparklinesResponse, GscdumpMeta, GscdumpOrphanPageRow, GscdumpPageTrendParams, GscdumpPageTrendResponse, GscdumpPerSitemapHistoryEntry, GscdumpPermissionRecovery, GscdumpQueryTrendParams, GscdumpQueryTrendResponse, GscdumpRichResultItem, GscdumpSiteRegistration, GscdumpSiteReportResponse, GscdumpSitemap, GscdumpSitemapChangesResponse, GscdumpSitemapHistory, GscdumpSitemapsResponse, GscdumpSyncJobItem, GscdumpSyncJobStatus, GscdumpSyncJobsQueueCounts, GscdumpSyncJobsResponse, GscdumpSyncProgressDateStatus, GscdumpSyncProgressPhaseCounts, GscdumpSyncProgressResponse, GscdumpSyncProgressSite, GscdumpSyncStatusResponse, GscdumpTeamMemberRow, GscdumpTeamRow, GscdumpTopAssociationParams, GscdumpTopAssociationResponse, GscdumpTotals, GscdumpUserMeResponse, GscdumpUserRegistration, GscdumpUserSettings, GscdumpUserSite, GscdumpUserStatus, GscdumpUserTokenUpdate, IndexingDiagnostics, IndexingDiagnosticsParams, IndexingInspectRateLimit, IndexingInspectRateLimited, IndexingInspectRequest, IndexingInspectResponse, IndexingInspectResult, IndexingIssue, IndexingIssueSeverity, IndexingNextAction, IndexingStatus, IndexingUrlRow, IndexingUrlStatus, IndexingUrlsParams, IndexingUrlsResponse, InspectionHistoryRecord, InspectionHistoryResponse, InspectionIndex, InspectionRecordRaw, LifecycleError, LifecycleErrorCode, LifecycleProgress, LifecycleWebhookEnvelope, LifecycleWebhookEvent, Metric, PartnerClient, PartnerLifecycleAccount, PartnerLifecycleResponse, PartnerLifecycleSite, PartnerRealtimeEvent, PartnerRealtimeEventType, PartnerRealtimeMessage, PartnerWebhookData, PartnerWebhookHeaders, PropertyNextAction, PropertyStatus, QuerySourceMode, RealtimeAuthFailedEvent, RealtimeAuthRequiredMessage, RealtimeConnectedMessage, RealtimeEnrichmentCompleteEvent, RealtimeErrorMessage, RealtimeIndexingCompleteEvent, RealtimeIndexingProgressEvent, RealtimeJobFailedEvent, RealtimeNeedsReauthEvent, RealtimePongMessage, RealtimeSiteAddedEvent, RealtimeSiteRemovedEvent, RealtimeSitemapCompleteEvent, RealtimeSitemapProgressEvent, RealtimeSubscribedMessage, RealtimeSyncCompleteEvent, RealtimeSyncFailedEvent, RealtimeSyncJobCompleteEvent, RealtimeSyncProgressEvent, RealtimeSyncSiteCompleteEvent, RegisterPartnerSiteParams, RegisterPartnerUserParams, ResolvedParquetFile, ResolvedTable, RollupEnvelope, Row, ScheduleState, SearchAppearanceResponse, SearchAppearanceRow, SearchTypeOptions, ServerTailDirective, SiteListItem, SitemapAddedRow, SitemapChangesResponse, SitemapHistoryRecord, SitemapHistoryResponse, SitemapIndex, SitemapNextAction, SitemapRemovedRow, SitemapStatus, SourceInfoOptions, SourceInfoResponse, TableName, TableSchema, TenantCtx, UpdatePartnerUserTokensParams, WebhookEnvelope, WebhookEventType, WhoamiResponse, accountNextActions, accountStatuses, analyticsNextActions, analyticsStatuses, hasOptionalIndexingScope, hasRequiredAnalyticsScope, indexingNextActions, indexingStatuses, lifecycleErrorCodes, lifecycleWebhookEvents, parseGrantedScopes, propertyNextActions, propertyStatuses, querySourceModes, sitemapNextActions, sitemapStatuses } from "./_chunks/types.mjs";
3
3
  import { ARCHETYPE_EXECUTION_CLASS, ArbitrarySqlQuery, ArchetypeExecutionClass, ArchetypeFacet, ArchetypeQuery, ArchetypeQueryBase, ArchetypeResult, ArchetypeResultRow, ArchetypeResultSource, AuxCloudOnlyQuery, DateRange, EntityDailySparklineQuery, EntityDailyTimeseriesQuery, MultiSeriesStackedDailyQuery, QueryArchetype, ResolvedArchetypeQuery, SingleRowLookupQuery, SiteDailyTimeseriesQuery, TopNBreakdownQuery, TwoDimensionDetailQuery } from "./archetypes.mjs";
4
4
  import { CANONICAL_WEBHOOK_EVENTS, VALID_WEBHOOK_EVENTS, WEBHOOK_CONTRACT_VERSION, WEBHOOK_CONTRACT_VERSION_HEADER, WEBHOOK_DELIVERY_HEADER, WEBHOOK_EVENT_HEADER, WEBHOOK_SIGNATURE_HEADER, WEBHOOK_TIMESTAMP_HEADER } from "./_chunks/webhook-constants.mjs";
5
- /** The 6 Iceberg fact tables — string-typed here to avoid an engine dep. */
6
- type FileResolutionTable = 'pages' | 'queries' | 'countries' | 'page_queries' | 'dates' | 'search_appearance' | 'search_appearance_pages' | 'search_appearance_queries' | 'search_appearance_page_queries';
7
- /** Request query params for `GET /api/sites/[siteId]/analysis-sources`. */
8
- interface FileResolutionRequest {
9
- /** `YYYY-MM-DD` inclusive. Required — no date range = no resolution. */
10
- start: string;
11
- /** `YYYY-MM-DD` inclusive. */
12
- end: string;
13
- searchType?: GscSearchType;
14
- /**
15
- * Restrict resolution to these tables. Omitted = all 5. The archetype the
16
- * caller intends determines which tables it needs.
17
- */
18
- tables?: FileResolutionTable[];
19
- /**
20
- * The archetype the caller will run. Lets the endpoint route the 2
21
- * window-function archetypes straight to the server tail even when the
22
- * data would be browser-eligible by size.
23
- */
24
- archetype?: string;
25
- }
26
- /**
27
- * One compacted Iceberg parquet data file the browser should fetch into OPFS.
28
- */
29
- interface ResolvedParquetFile {
30
- /**
31
- * Same-origin URL (`/api/r2-data/<key>?...`) carrying a signed size hint
32
- * and a short-lived exact-key access token. Stable for the file's lifetime
33
- * (content-addressed).
34
- */
35
- url: string;
36
- /** Byte size — drives the browser-eligibility sum and OPFS quota planning. */
37
- bytes: number;
38
- /**
39
- * Opaque content-stable identifier for this parquet file. Two requests for
40
- * the same bytes MUST return the same `contentHash`; any change in bytes
41
- * MUST yield a different one. The OPFS cache uses this as the file's
42
- * address (encoded into the cache filename) — it is NOT required to be a
43
- * SHA-256.
44
- *
45
- * In practice the server returns the Iceberg `data_file.file_path` object
46
- * key, which is UUID-derived and content-addressed by convention.
47
- */
48
- contentHash: string;
49
- /** Row count, for eligibility accounting + diagnostics. */
50
- rowCount: number;
51
- }
52
- /** Per-table resolution result. */
53
- interface ResolvedTable {
54
- table: FileResolutionTable;
55
- /**
56
- * `'browser'` — `files` is populated; the browser downloads + attaches.
57
- * `'server'` — this `(site, table)` exceeds the eligibility ceiling;
58
- * `files` is empty and queries route to the server tail.
59
- */
60
- mode: 'browser' | 'server';
61
- /** Compacted Iceberg data files. Empty when `mode === 'server'`. */
62
- files: ResolvedParquetFile[];
63
- /**
64
- * Recent-window overlay parquet — the non-stable tail (the freshest days the
65
- * ingest stability cutoff excludes from the lake), materialized out-of-band at
66
- * `_recent_overlay/{site}/{searchType}/{table}.parquet`. When present, the
67
- * browser unions it with an anti-join dedup (the lake wins on any shared day;
68
- * the overlay supplies only days the lake lacks) so the freshest days serve
69
- * from the overlay instead of returning 0. Absent (`undefined`) when no
70
- * overlay exists for this `(site, searchType, table)` or for `mode: 'server'`.
71
- *
72
- * The overlay is OVERWRITTEN in place each sync, so its `contentHash` MUST
73
- * change whenever the bytes change (the server derives it from the R2 object
74
- * etag) — otherwise the OPFS cache would serve a stale overlay. The enclosing
75
- * `FileResolutionResponse.snapshotVersion` folds the overlay hash in for the
76
- * same reason (it gates browser re-attach).
77
- */
78
- overlay?: ResolvedParquetFile;
79
- /** Total bytes across `files` — compared against the ceiling. */
80
- totalBytes: number;
81
- /** Total rows across `files`. */
82
- totalRows: number;
83
- }
84
- /** Server-tail directive — how an ineligible `(site, table)` is queried. */
85
- interface ServerTailDirective {
86
- /**
87
- * `'r2-sql'` — server runs the query via R2 SQL over the Iceberg table.
88
- * `'duckdb'` — server runs DuckDB-over-Iceberg-files (window functions).
89
- * The hybrid split (POC Spike 4): 8/10 archetypes `r2-sql`, 2 `duckdb`.
90
- */
91
- engine: 'r2-sql' | 'duckdb';
92
- /** Endpoint the consumer POSTs the archetype query to. */
93
- endpoint: string;
94
- }
95
- /** Response body of the file-resolution endpoint. */
96
- interface FileResolutionResponse {
97
- siteId: string;
98
- searchType: GscSearchType;
99
- range: {
100
- start: string;
101
- end: string;
102
- };
103
- /**
104
- * Stable hash over the resolved file set. The browser re-attaches only when
105
- * this changes (new compaction landed). Replaces the old `manifestVersion`.
106
- */
107
- snapshotVersion: string;
108
- generatedAt: string;
109
- /** Per-table resolution. */
110
- tables: ResolvedTable[];
111
- /**
112
- * Present iff at least one table resolved to `mode: 'server'`. Tells the
113
- * consumer how to route the server-tail queries for those tables.
114
- */
115
- serverTail?: ServerTailDirective;
116
- /**
117
- * The per-(site,table) browser-eligibility ceiling in effect, echoed so the
118
- * consumer can show "X is too large for local analysis" UX without
119
- * hard-coding the threshold.
120
- */
121
- eligibilityCeiling: {
122
- maxBytes: number;
123
- maxRows: number;
124
- };
125
- }
126
5
  export { ARCHETYPE_EXECUTION_CLASS, AccountNextAction, AccountStatus, type AddPartnerTeamMemberParams, type AnalysisSourcesOptions, type AnalysisSourcesResponse, type AnalyticsClient, AnalyticsNextAction, AnalyticsStatus, ArbitrarySqlQuery, ArchetypeExecutionClass, ArchetypeFacet, ArchetypeQuery, ArchetypeQueryBase, ArchetypeResult, ArchetypeResultRow, ArchetypeResultSource, AuxCloudOnlyQuery, type BackfillRange, type BackfillResponse, type BindPartnerSiteTeamParams, type BuilderState, type BulkRegisterPartnerSiteResult, type BulkRegisterPartnerSitesParams, type BulkRegisterPartnerSitesResponse, CANONICAL_WEBHOOK_EVENTS, type CanonicalWebhookEventType, type ColumnDef, type ColumnType, type CountriesResponse, type CountryRow, type CreatePartnerTeamParams, type CreateWebhookEnvelopeOptions, type DataDetailOptions, type DataQueryOptions, DateRange, type DeletePartnerUserResponse, type Dimension, EntityDailySparklineQuery, EntityDailyTimeseriesQuery, type FileResolutionRequest, type FileResolutionResponse, type FileResolutionTable, type Filter, GSCDUMP_ONBOARDING_CONTRACT_VERSION, GSCDUMP_OPTIONAL_INDEXING_SCOPE, GSCDUMP_REQUIRED_ANALYTICS_SCOPE, GSCDUMP_WRITE_ANALYTICS_SCOPE, type Grain, type GscApiRange, type GscComparisonFilter, type GscRowQueryMeta, type GscRowQueryResponse, type GscSearchType, type GscdumpAnalysisParams, type GscdumpAnalysisPreset, type GscdumpAnalysisResponse, type GscdumpAnalysisSourcesResponse, type GscdumpAvailableSite, type GscdumpCanonicalMismatchRow, type GscdumpCanonicalMismatchesResponse, type GscdumpDataDetailResponse, type GscdumpDataResponse, type GscdumpDataRow, type GscdumpDateRangeParams, type GscdumpHealthResponse, type GscdumpIndexPercentResponse, type GscdumpIndexPercentSitemap, type GscdumpIndexPercentTrendPoint, type GscdumpIndexingDiagnosticsResponse, type GscdumpIndexingInspectRateLimited, type GscdumpIndexingInspectRequest, type GscdumpIndexingInspectResponse, type GscdumpIndexingInspectResult, type GscdumpIndexingIssueSeverity, type GscdumpIndexingResponse, type GscdumpIndexingTrendPoint, type GscdumpIndexingUrl, type GscdumpIndexingUrlStatus, type GscdumpIndexingUrlsResponse, type GscdumpInvisibleUrlRow, type GscdumpKeywordSparklinesParams, type GscdumpKeywordSparklinesResponse, type GscdumpMeta, type GscdumpOrphanPageRow, type GscdumpPageTrendParams, type GscdumpPageTrendResponse, type GscdumpPerSitemapHistoryEntry, type GscdumpPermissionRecovery, type GscdumpQueryTrendParams, type GscdumpQueryTrendResponse, type GscdumpRichResultItem, type GscdumpSiteRegistration, type GscdumpSiteReportResponse, type GscdumpSitemap, type GscdumpSitemapChangesResponse, type GscdumpSitemapHistory, type GscdumpSitemapsResponse, type GscdumpSyncJobItem, type GscdumpSyncJobStatus, type GscdumpSyncJobsQueueCounts, type GscdumpSyncJobsResponse, type GscdumpSyncProgressDateStatus, type GscdumpSyncProgressPhaseCounts, type GscdumpSyncProgressResponse, type GscdumpSyncProgressSite, type GscdumpSyncStatusResponse, type GscdumpTeamMemberRow, type GscdumpTeamRow, type GscdumpTopAssociationParams, type GscdumpTopAssociationResponse, type GscdumpTotals, type GscdumpUserMeResponse, type GscdumpUserRegistration, type GscdumpUserSettings, type GscdumpUserSite, type GscdumpUserStatus, type GscdumpUserTokenUpdate, type IndexingDiagnostics, type IndexingDiagnosticsParams, type IndexingInspectRateLimit, type IndexingInspectRateLimited, type IndexingInspectRequest, type IndexingInspectResponse, type IndexingInspectResult, type IndexingIssue, type IndexingIssueSeverity, IndexingNextAction, IndexingStatus, type IndexingUrlRow, type IndexingUrlStatus, type IndexingUrlsParams, type IndexingUrlsResponse, type InspectionHistoryRecord, type InspectionHistoryResponse, type InspectionIndex, type InspectionRecordRaw, LifecycleError, LifecycleErrorCode, LifecycleProgress, LifecycleWebhookEnvelope, LifecycleWebhookEvent, type Metric, MultiSeriesStackedDailyQuery, type PartnerClient, PartnerLifecycleAccount, PartnerLifecycleResponse, PartnerLifecycleSite, type PartnerRealtimeEvent, type PartnerRealtimeEventType, type PartnerRealtimeMessage, type PartnerWebhookData, type PartnerWebhookHeaders, PropertyNextAction, PropertyStatus, QueryArchetype, QuerySourceMode, type RealtimeAuthFailedEvent, type RealtimeAuthRequiredMessage, type RealtimeConnectedMessage, type RealtimeEnrichmentCompleteEvent, type RealtimeErrorMessage, type RealtimeIndexingCompleteEvent, type RealtimeIndexingProgressEvent, type RealtimeJobFailedEvent, type RealtimeNeedsReauthEvent, type RealtimePongMessage, type RealtimeSiteAddedEvent, type RealtimeSiteRemovedEvent, type RealtimeSitemapCompleteEvent, type RealtimeSitemapProgressEvent, type RealtimeSubscribedMessage, type RealtimeSyncCompleteEvent, type RealtimeSyncFailedEvent, type RealtimeSyncJobCompleteEvent, type RealtimeSyncProgressEvent, type RealtimeSyncSiteCompleteEvent, type RegisterPartnerSiteParams, type RegisterPartnerUserParams, ResolvedArchetypeQuery, type ResolvedParquetFile, type ResolvedTable, type RollupEnvelope, type Row, type ScheduleState, type SearchAppearanceResponse, type SearchAppearanceRow, type SearchTypeOptions, type ServerTailDirective, SingleRowLookupQuery, SiteDailyTimeseriesQuery, type SiteListItem, type SitemapAddedRow, type SitemapChangesResponse, type SitemapHistoryRecord, type SitemapHistoryResponse, type SitemapIndex, SitemapNextAction, type SitemapRemovedRow, SitemapStatus, type SourceInfoOptions, type SourceInfoResponse, type TableName, type TableSchema, type TenantCtx, TopNBreakdownQuery, TwoDimensionDetailQuery, type UpdatePartnerUserTokensParams, VALID_WEBHOOK_EVENTS, WEBHOOK_CONTRACT_VERSION, WEBHOOK_CONTRACT_VERSION_HEADER, WEBHOOK_DELIVERY_HEADER, WEBHOOK_EVENT_HEADER, WEBHOOK_SIGNATURE_HEADER, WEBHOOK_TIMESTAMP_HEADER, type WebhookEnvelope, type WebhookEventType, type WhoamiResponse, accountNextActions, accountStatuses, addPartnerTeamMemberSchema, analyticsEndpointSchemas, analyticsNextActions, analyticsRoutes, analyticsStatuses, backfillRangeSchema, backfillResponseSchema, bindPartnerSiteTeamSchema, builderStateSchema, bulkRegisterPartnerSitesResponseSchema, bulkRegisterPartnerSitesSchema, canonicalWebhookEventTypeSchema, countriesResponseSchema, countryRowSchema, createPartnerTeamSchema, dataDetailOptionsSchema, dataQueryOptionsSchema, gscApiRangeSchema, gscComparisonFilterSchema, gscRowQueryMetaSchema, gscRowQueryResponseSchema, gscdumpAnalysisParamsSchema, gscdumpAnalysisPresetSchema, gscdumpAnalysisResponseSchema, gscdumpAnalysisSourcesResponseSchema, gscdumpAvailableSiteSchema, gscdumpCanonicalMismatchesResponseSchema, gscdumpDataDetailResponseSchema, gscdumpDataResponseSchema, gscdumpDataRowSchema, gscdumpDateRangeParamsSchema, gscdumpDeletePartnerUserResponseSchema, gscdumpHealthResponseSchema, gscdumpIndexPercentParamsSchema, gscdumpIndexPercentResponseSchema, gscdumpIndexingDiagnosticsResponseSchema, gscdumpIndexingResponseSchema, gscdumpIndexingUrlsResponseSchema, gscdumpKeywordSparklinesParamsSchema, gscdumpKeywordSparklinesResponseSchema, gscdumpMetaSchema, gscdumpPageTrendParamsSchema, gscdumpPageTrendResponseSchema, gscdumpPermissionRecoverySchema, gscdumpQueryTrendParamsSchema, gscdumpQueryTrendResponseSchema, gscdumpSiteRegistrationSchema, gscdumpSiteReportResponseSchema, gscdumpSitemapChangesResponseSchema, gscdumpSitemapsResponseSchema, gscdumpSyncJobsResponseSchema, gscdumpSyncProgressResponseSchema, gscdumpTeamMemberRowSchema, gscdumpTeamRoleSchema, gscdumpTeamRowSchema, gscdumpTopAssociationParamsSchema, gscdumpTopAssociationResponseSchema, gscdumpTotalsSchema, gscdumpUserMeResponseSchema, gscdumpUserRegistrationSchema, gscdumpUserSettingsSchema, gscdumpUserSiteSchema, gscdumpUserStatusSchema, hasOptionalIndexingScope, hasRequiredAnalyticsScope, indexingDiagnosticsParamsSchema, indexingDiagnosticsSchema, indexingInspectAnyResponseSchema, indexingInspectRateLimitedSchema, indexingInspectRequestSchema, indexingInspectResponseSchema, indexingInspectResultSchema, indexingIssueSchema, indexingNextActions, indexingStatuses, indexingUrlRowSchema, indexingUrlStatusSchema, indexingUrlsParamsSchema, indexingUrlsResponseSchema, inspectionHistoryRecordSchema, inspectionHistoryResponseSchema, inspectionIndexSchema, inspectionRecordRawSchema, jobFailedWebhookPayloadSchema, lifecycleErrorCodes, lifecycleErrorSchema, lifecycleProgressSchema, lifecycleWebhookEvents, parseGrantedScopes, partnerControlEndpointSchemas, partnerEndpointSchemas, partnerLifecycleAccountSchema, partnerLifecycleResponseSchema, partnerLifecycleSiteSchema, partnerRealtimeEventSchema, partnerRoutes, partnerWebhookDataSchema, partnerWebhookEnvelopeSchema, propertyNextActions, propertyStatuses, querySourceModes, registerPartnerSiteSchema, registerPartnerUserSchema, rollupEnvelopeSchema, scheduleStateSchema, searchAppearanceResponseSchema, searchAppearanceRowSchema, searchTypeSchema, siteListItemSchema, sitemapChangesResponseSchema, sitemapHistoryRecordSchema, sitemapHistoryResponseSchema, sitemapIndexSchema, sitemapNextActions, sitemapStatuses, sourceInfoResponseSchema, updatePartnerUserTokensSchema, webhookEventTypeSchema, whoamiResponseSchema };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gscdump/contracts",
3
3
  "type": "module",
4
- "version": "0.33.0",
4
+ "version": "0.33.3",
5
5
  "description": "Shared gscdump.com API, webhook, realtime, and lifecycle contracts.",
6
6
  "author": {
7
7
  "name": "Harlan Wilton",