@canonry/canonry 4.144.0 → 4.145.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.
Files changed (24) hide show
  1. package/assets/assets/{AuditHistoryPanel-DxRP9WsD.js → AuditHistoryPanel-CV9g5mLR.js} +1 -1
  2. package/assets/assets/{BacklinksPage-yiEbyV67.js → BacklinksPage-RTcYKA5I.js} +1 -1
  3. package/assets/assets/{ChartPrimitives-D2hRlMHn.js → ChartPrimitives-BMR0Dqnf.js} +1 -1
  4. package/assets/assets/{HistoryPage-CW6MJ-dR.js → HistoryPage-DAN9QO6x.js} +1 -1
  5. package/assets/assets/{ProjectPage-Bnr7I5qu.js → ProjectPage-aFV2nddp.js} +1 -1
  6. package/assets/assets/{RunRow-Dr607W0P.js → RunRow-WDCIS9MJ.js} +1 -1
  7. package/assets/assets/{RunsPage-CtF3P7CA.js → RunsPage-D3Zxd6oc.js} +1 -1
  8. package/assets/assets/{SettingsPage-3-uzs2lp.js → SettingsPage-DcCFVeA7.js} +1 -1
  9. package/assets/assets/{TrafficPage-Bww4KUn8.js → TrafficPage-D0tPBu5O.js} +1 -1
  10. package/assets/assets/{TrafficSourceDetailPage-DiHxUH2H.js → TrafficSourceDetailPage-CtyEE9eJ.js} +1 -1
  11. package/assets/assets/{arrow-left-D-PcVbQ4.js → arrow-left-hBxXIGS1.js} +1 -1
  12. package/assets/assets/{extract-error-message-BRq0yLWg.js → extract-error-message-DRu89RHb.js} +1 -1
  13. package/assets/assets/{index-b5M4QpB0.js → index-DSOfEiTH.js} +42 -42
  14. package/assets/assets/{trash-2-B6aJTnJl.js → trash-2-DP0ukgbl.js} +1 -1
  15. package/assets/index.html +1 -1
  16. package/dist/{chunk-WADGZMWT.js → chunk-EFBTZ6ZT.js} +14 -0
  17. package/dist/{chunk-7D2GZU6O.js → chunk-GTBCGJNT.js} +194 -25
  18. package/dist/{chunk-Z672VQ7G.js → chunk-MBLATP5L.js} +1250 -70
  19. package/dist/{chunk-3NYTF3YC.js → chunk-XNAJXSZ2.js} +4 -4
  20. package/dist/cli.js +4 -4
  21. package/dist/index.js +4 -4
  22. package/dist/{intelligence-service-OLIGR6HE.js → intelligence-service-DVMEVHAG.js} +2 -2
  23. package/dist/mcp.js +5 -5
  24. package/package.json +10 -10
@@ -27,8 +27,31 @@ import {
27
27
  keywordBatchRequestSchema,
28
28
  keywordGenerateRequestSchema,
29
29
  measurementDiscoveryRequestSchema,
30
+ measurementDraftApplyAssignmentsRequestSchema,
31
+ measurementDraftApplySitemapSelectionRequestSchema,
32
+ measurementDraftClassifyAssignmentsRequestSchema,
33
+ measurementDraftClearAssignmentsRequestSchema,
34
+ measurementDraftCollectionQuerySchema,
35
+ measurementDraftCreateRequestSchema,
36
+ measurementDraftExcludeTargetRequestSchema,
37
+ measurementDraftImportSitemapRequestSchema,
38
+ measurementDraftMergeTargetsRequestSchema,
39
+ measurementDraftPublishRequestSchema,
40
+ measurementDraftRebindTargetRequestSchema,
41
+ measurementDraftRemoveAssignmentRequestSchema,
42
+ measurementDraftRemoveCompetitorRequestSchema,
43
+ measurementDraftRemoveGroupRequestSchema,
44
+ measurementDraftRenameTargetRequestSchema,
45
+ measurementDraftUpsertCompetitorRequestSchema,
46
+ measurementDraftUpsertGroupRequestSchema,
47
+ measurementDraftUpsertTargetRequestSchema,
48
+ measurementOverviewQuerySchema,
30
49
  measurementPlanAuthoringSchema,
50
+ measurementPlanDeactivateRequestSchema,
31
51
  measurementPlanPublishRequestSchema,
52
+ measurementQuerySetUpsertRequestSchema,
53
+ measurementQueryTemplateApplyRequestSchema,
54
+ measurementQueryTemplateUpsertRequestSchema,
32
55
  notificationCreateRequestSchema,
33
56
  notificationEventSchema,
34
57
  organicEvidencePeriodSchema,
@@ -46,7 +69,7 @@ import {
46
69
  trafficConnectWordpressRequestSchema,
47
70
  trafficEventKindSchema,
48
71
  trafficSeriesGranularitySchema
49
- } from "./chunk-WADGZMWT.js";
72
+ } from "./chunk-EFBTZ6ZT.js";
50
73
 
51
74
  // src/config.ts
52
75
  import fs from "fs";
@@ -1271,6 +1294,510 @@ var getApiV1ProjectsByNameMeasurementReport = (options) => {
1271
1294
  ...options
1272
1295
  });
1273
1296
  };
1297
+ var getApiV1ProjectsByNameMeasurementSetup = (options) => {
1298
+ return (options.client ?? client).get({
1299
+ security: [
1300
+ {
1301
+ scheme: "bearer",
1302
+ type: "http"
1303
+ }
1304
+ ],
1305
+ url: "/api/v1/projects/{name}/measurement-setup",
1306
+ ...options
1307
+ });
1308
+ };
1309
+ var getApiV1ProjectsByNameMeasurementPlanDraft = (options) => {
1310
+ return (options.client ?? client).get({
1311
+ security: [
1312
+ {
1313
+ scheme: "bearer",
1314
+ type: "http"
1315
+ }
1316
+ ],
1317
+ url: "/api/v1/projects/{name}/measurement-plan/draft",
1318
+ ...options
1319
+ });
1320
+ };
1321
+ var getApiV1ProjectsByNameMeasurementPlanDraftTargets = (options) => {
1322
+ return (options.client ?? client).get({
1323
+ security: [
1324
+ {
1325
+ scheme: "bearer",
1326
+ type: "http"
1327
+ }
1328
+ ],
1329
+ url: "/api/v1/projects/{name}/measurement-plan/draft/targets",
1330
+ ...options
1331
+ });
1332
+ };
1333
+ var getApiV1ProjectsByNameMeasurementPlanDraftAssignments = (options) => {
1334
+ return (options.client ?? client).get({
1335
+ security: [
1336
+ {
1337
+ scheme: "bearer",
1338
+ type: "http"
1339
+ }
1340
+ ],
1341
+ url: "/api/v1/projects/{name}/measurement-plan/draft/assignments",
1342
+ ...options
1343
+ });
1344
+ };
1345
+ var getApiV1ProjectsByNameMeasurementPlanDraftGroups = (options) => {
1346
+ return (options.client ?? client).get({
1347
+ security: [
1348
+ {
1349
+ scheme: "bearer",
1350
+ type: "http"
1351
+ }
1352
+ ],
1353
+ url: "/api/v1/projects/{name}/measurement-plan/draft/groups",
1354
+ ...options
1355
+ });
1356
+ };
1357
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsCreate = (options) => {
1358
+ return (options.client ?? client).post({
1359
+ security: [
1360
+ {
1361
+ scheme: "bearer",
1362
+ type: "http"
1363
+ }
1364
+ ],
1365
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/create",
1366
+ ...options,
1367
+ headers: {
1368
+ "Content-Type": "application/json",
1369
+ ...options.headers
1370
+ }
1371
+ });
1372
+ };
1373
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsImportSitemap = (options) => {
1374
+ return (options.client ?? client).post({
1375
+ security: [
1376
+ {
1377
+ scheme: "bearer",
1378
+ type: "http"
1379
+ }
1380
+ ],
1381
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/import-sitemap",
1382
+ ...options,
1383
+ headers: {
1384
+ "Content-Type": "application/json",
1385
+ ...options.headers
1386
+ }
1387
+ });
1388
+ };
1389
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsApplySitemapSelection = (options) => {
1390
+ return (options.client ?? client).post({
1391
+ security: [
1392
+ {
1393
+ scheme: "bearer",
1394
+ type: "http"
1395
+ }
1396
+ ],
1397
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/apply-sitemap-selection",
1398
+ ...options,
1399
+ headers: {
1400
+ "Content-Type": "application/json",
1401
+ ...options.headers
1402
+ }
1403
+ });
1404
+ };
1405
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsUpsertTarget = (options) => {
1406
+ return (options.client ?? client).post({
1407
+ security: [
1408
+ {
1409
+ scheme: "bearer",
1410
+ type: "http"
1411
+ }
1412
+ ],
1413
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/upsert-target",
1414
+ ...options,
1415
+ headers: {
1416
+ "Content-Type": "application/json",
1417
+ ...options.headers
1418
+ }
1419
+ });
1420
+ };
1421
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsRenameTarget = (options) => {
1422
+ return (options.client ?? client).post({
1423
+ security: [
1424
+ {
1425
+ scheme: "bearer",
1426
+ type: "http"
1427
+ }
1428
+ ],
1429
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/rename-target",
1430
+ ...options,
1431
+ headers: {
1432
+ "Content-Type": "application/json",
1433
+ ...options.headers
1434
+ }
1435
+ });
1436
+ };
1437
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsMergeTargets = (options) => {
1438
+ return (options.client ?? client).post({
1439
+ security: [
1440
+ {
1441
+ scheme: "bearer",
1442
+ type: "http"
1443
+ }
1444
+ ],
1445
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/merge-targets",
1446
+ ...options,
1447
+ headers: {
1448
+ "Content-Type": "application/json",
1449
+ ...options.headers
1450
+ }
1451
+ });
1452
+ };
1453
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsExcludeTarget = (options) => {
1454
+ return (options.client ?? client).post({
1455
+ security: [
1456
+ {
1457
+ scheme: "bearer",
1458
+ type: "http"
1459
+ }
1460
+ ],
1461
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/exclude-target",
1462
+ ...options,
1463
+ headers: {
1464
+ "Content-Type": "application/json",
1465
+ ...options.headers
1466
+ }
1467
+ });
1468
+ };
1469
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsRebindTarget = (options) => {
1470
+ return (options.client ?? client).post({
1471
+ security: [
1472
+ {
1473
+ scheme: "bearer",
1474
+ type: "http"
1475
+ }
1476
+ ],
1477
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/rebind-target",
1478
+ ...options,
1479
+ headers: {
1480
+ "Content-Type": "application/json",
1481
+ ...options.headers
1482
+ }
1483
+ });
1484
+ };
1485
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsApplyAssignments = (options) => {
1486
+ return (options.client ?? client).post({
1487
+ security: [
1488
+ {
1489
+ scheme: "bearer",
1490
+ type: "http"
1491
+ }
1492
+ ],
1493
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/apply-assignments",
1494
+ ...options,
1495
+ headers: {
1496
+ "Content-Type": "application/json",
1497
+ ...options.headers
1498
+ }
1499
+ });
1500
+ };
1501
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsRemoveAssignment = (options) => {
1502
+ return (options.client ?? client).post({
1503
+ security: [
1504
+ {
1505
+ scheme: "bearer",
1506
+ type: "http"
1507
+ }
1508
+ ],
1509
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/remove-assignment",
1510
+ ...options,
1511
+ headers: {
1512
+ "Content-Type": "application/json",
1513
+ ...options.headers
1514
+ }
1515
+ });
1516
+ };
1517
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsClearAssignments = (options) => {
1518
+ return (options.client ?? client).post({
1519
+ security: [
1520
+ {
1521
+ scheme: "bearer",
1522
+ type: "http"
1523
+ }
1524
+ ],
1525
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/clear-assignments",
1526
+ ...options,
1527
+ headers: {
1528
+ "Content-Type": "application/json",
1529
+ ...options.headers
1530
+ }
1531
+ });
1532
+ };
1533
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsClassifyAssignments = (options) => {
1534
+ return (options.client ?? client).post({
1535
+ security: [
1536
+ {
1537
+ scheme: "bearer",
1538
+ type: "http"
1539
+ }
1540
+ ],
1541
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/classify-assignments",
1542
+ ...options,
1543
+ headers: {
1544
+ "Content-Type": "application/json",
1545
+ ...options.headers
1546
+ }
1547
+ });
1548
+ };
1549
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsUpsertGroup = (options) => {
1550
+ return (options.client ?? client).post({
1551
+ security: [
1552
+ {
1553
+ scheme: "bearer",
1554
+ type: "http"
1555
+ }
1556
+ ],
1557
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/upsert-group",
1558
+ ...options,
1559
+ headers: {
1560
+ "Content-Type": "application/json",
1561
+ ...options.headers
1562
+ }
1563
+ });
1564
+ };
1565
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsRemoveGroup = (options) => {
1566
+ return (options.client ?? client).post({
1567
+ security: [
1568
+ {
1569
+ scheme: "bearer",
1570
+ type: "http"
1571
+ }
1572
+ ],
1573
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/remove-group",
1574
+ ...options,
1575
+ headers: {
1576
+ "Content-Type": "application/json",
1577
+ ...options.headers
1578
+ }
1579
+ });
1580
+ };
1581
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsUpsertCompetitor = (options) => {
1582
+ return (options.client ?? client).post({
1583
+ security: [
1584
+ {
1585
+ scheme: "bearer",
1586
+ type: "http"
1587
+ }
1588
+ ],
1589
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/upsert-competitor",
1590
+ ...options,
1591
+ headers: {
1592
+ "Content-Type": "application/json",
1593
+ ...options.headers
1594
+ }
1595
+ });
1596
+ };
1597
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsRemoveCompetitor = (options) => {
1598
+ return (options.client ?? client).post({
1599
+ security: [
1600
+ {
1601
+ scheme: "bearer",
1602
+ type: "http"
1603
+ }
1604
+ ],
1605
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/remove-competitor",
1606
+ ...options,
1607
+ headers: {
1608
+ "Content-Type": "application/json",
1609
+ ...options.headers
1610
+ }
1611
+ });
1612
+ };
1613
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsCompilePreview = (options) => {
1614
+ return (options.client ?? client).post({
1615
+ security: [
1616
+ {
1617
+ scheme: "bearer",
1618
+ type: "http"
1619
+ }
1620
+ ],
1621
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/compile-preview",
1622
+ ...options
1623
+ });
1624
+ };
1625
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsDiffPreview = (options) => {
1626
+ return (options.client ?? client).post({
1627
+ security: [
1628
+ {
1629
+ scheme: "bearer",
1630
+ type: "http"
1631
+ }
1632
+ ],
1633
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/diff-preview",
1634
+ ...options
1635
+ });
1636
+ };
1637
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsPublish = (options) => {
1638
+ return (options.client ?? client).post({
1639
+ security: [
1640
+ {
1641
+ scheme: "bearer",
1642
+ type: "http"
1643
+ }
1644
+ ],
1645
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/publish",
1646
+ ...options,
1647
+ headers: {
1648
+ "Content-Type": "application/json",
1649
+ ...options.headers
1650
+ }
1651
+ });
1652
+ };
1653
+ var postApiV1ProjectsByNameMeasurementPlanDraftActionsDiscard = (options) => {
1654
+ return (options.client ?? client).post({
1655
+ security: [
1656
+ {
1657
+ scheme: "bearer",
1658
+ type: "http"
1659
+ }
1660
+ ],
1661
+ url: "/api/v1/projects/{name}/measurement-plan/draft/actions/discard",
1662
+ ...options
1663
+ });
1664
+ };
1665
+ var postApiV1ProjectsByNameMeasurementPlanActionsDeactivate = (options) => {
1666
+ return (options.client ?? client).post({
1667
+ security: [
1668
+ {
1669
+ scheme: "bearer",
1670
+ type: "http"
1671
+ }
1672
+ ],
1673
+ url: "/api/v1/projects/{name}/measurement-plan/actions/deactivate",
1674
+ ...options,
1675
+ headers: {
1676
+ "Content-Type": "application/json",
1677
+ ...options.headers
1678
+ }
1679
+ });
1680
+ };
1681
+ var getApiV1ProjectsByNameMeasurementOverview = (options) => {
1682
+ return (options.client ?? client).get({
1683
+ security: [
1684
+ {
1685
+ scheme: "bearer",
1686
+ type: "http"
1687
+ }
1688
+ ],
1689
+ url: "/api/v1/projects/{name}/measurement-overview",
1690
+ ...options
1691
+ });
1692
+ };
1693
+ var getApiV1ProjectsByNameMeasurementQuerySets = (options) => {
1694
+ return (options.client ?? client).get({
1695
+ security: [
1696
+ {
1697
+ scheme: "bearer",
1698
+ type: "http"
1699
+ }
1700
+ ],
1701
+ url: "/api/v1/projects/{name}/measurement-query-sets",
1702
+ ...options
1703
+ });
1704
+ };
1705
+ var deleteApiV1ProjectsByNameMeasurementQuerySetsBySetId = (options) => {
1706
+ return (options.client ?? client).delete({
1707
+ security: [
1708
+ {
1709
+ scheme: "bearer",
1710
+ type: "http"
1711
+ }
1712
+ ],
1713
+ url: "/api/v1/projects/{name}/measurement-query-sets/{setId}",
1714
+ ...options
1715
+ });
1716
+ };
1717
+ var getApiV1ProjectsByNameMeasurementQuerySetsBySetId = (options) => {
1718
+ return (options.client ?? client).get({
1719
+ security: [
1720
+ {
1721
+ scheme: "bearer",
1722
+ type: "http"
1723
+ }
1724
+ ],
1725
+ url: "/api/v1/projects/{name}/measurement-query-sets/{setId}",
1726
+ ...options
1727
+ });
1728
+ };
1729
+ var putApiV1ProjectsByNameMeasurementQuerySetsBySetId = (options) => {
1730
+ return (options.client ?? client).put({
1731
+ security: [
1732
+ {
1733
+ scheme: "bearer",
1734
+ type: "http"
1735
+ }
1736
+ ],
1737
+ url: "/api/v1/projects/{name}/measurement-query-sets/{setId}",
1738
+ ...options,
1739
+ headers: {
1740
+ "Content-Type": "application/json",
1741
+ ...options.headers
1742
+ }
1743
+ });
1744
+ };
1745
+ var getApiV1ProjectsByNameMeasurementQueryTemplates = (options) => {
1746
+ return (options.client ?? client).get({
1747
+ security: [
1748
+ {
1749
+ scheme: "bearer",
1750
+ type: "http"
1751
+ }
1752
+ ],
1753
+ url: "/api/v1/projects/{name}/measurement-query-templates",
1754
+ ...options
1755
+ });
1756
+ };
1757
+ var deleteApiV1ProjectsByNameMeasurementQueryTemplatesByTemplateId = (options) => {
1758
+ return (options.client ?? client).delete({
1759
+ security: [
1760
+ {
1761
+ scheme: "bearer",
1762
+ type: "http"
1763
+ }
1764
+ ],
1765
+ url: "/api/v1/projects/{name}/measurement-query-templates/{templateId}",
1766
+ ...options
1767
+ });
1768
+ };
1769
+ var putApiV1ProjectsByNameMeasurementQueryTemplatesByTemplateId = (options) => {
1770
+ return (options.client ?? client).put({
1771
+ security: [
1772
+ {
1773
+ scheme: "bearer",
1774
+ type: "http"
1775
+ }
1776
+ ],
1777
+ url: "/api/v1/projects/{name}/measurement-query-templates/{templateId}",
1778
+ ...options,
1779
+ headers: {
1780
+ "Content-Type": "application/json",
1781
+ ...options.headers
1782
+ }
1783
+ });
1784
+ };
1785
+ var postApiV1ProjectsByNameMeasurementQueryTemplatesByTemplateIdApply = (options) => {
1786
+ return (options.client ?? client).post({
1787
+ security: [
1788
+ {
1789
+ scheme: "bearer",
1790
+ type: "http"
1791
+ }
1792
+ ],
1793
+ url: "/api/v1/projects/{name}/measurement-query-templates/{templateId}/apply",
1794
+ ...options,
1795
+ headers: {
1796
+ "Content-Type": "application/json",
1797
+ ...options.headers
1798
+ }
1799
+ });
1800
+ };
1274
1801
  var getApiV1Projects = (options) => {
1275
1802
  return (options?.client ?? client).get({
1276
1803
  security: [
@@ -4426,6 +4953,12 @@ var ApiClient = class {
4426
4953
  }
4427
4954
  return result.data;
4428
4955
  }
4956
+ measurementDraftMutationHeaders(idempotencyKey, etag) {
4957
+ return {
4958
+ "Idempotency-Key": idempotencyKey,
4959
+ ...etag === void 0 ? {} : { "If-Match": etag }
4960
+ };
4961
+ }
4429
4962
  // ── Agent (canonry-local routes — SDK-typed since v4.50.0) ─────────────
4430
4963
  //
4431
4964
  // These endpoints live in `packages/canonry/src/agent/agent-routes.ts` and
@@ -4624,175 +5157,490 @@ var ApiClient = class {
4624
5157
  const filename = /filename\s*=\s*"?([^";]+)"?/i.exec(res.headers.get("content-disposition") ?? "")?.[1] ?? `canonry-results-${project}.${opts.format}`;
4625
5158
  return { content: await res.text(), filename };
4626
5159
  }
4627
- // ── Queries / keywords / competitors ────────────────────────────────────
4628
- async putQueries(project, queries) {
4629
- await this.invoke(
4630
- () => putApiV1ProjectsByNameQueries({ client: this.heyClient, path: { name: project }, body: { queries } })
5160
+ // ── Queries / keywords / competitors ────────────────────────────────────
5161
+ async putQueries(project, queries) {
5162
+ await this.invoke(
5163
+ () => putApiV1ProjectsByNameQueries({ client: this.heyClient, path: { name: project }, body: { queries } })
5164
+ );
5165
+ }
5166
+ async previewReplaceQueries(project, queries) {
5167
+ return this.invoke(
5168
+ () => postApiV1ProjectsByNameQueriesReplacePreview({
5169
+ client: this.heyClient,
5170
+ path: { name: project },
5171
+ body: { queries }
5172
+ })
5173
+ );
5174
+ }
5175
+ async listQueries(project) {
5176
+ return this.invoke(
5177
+ () => getApiV1ProjectsByNameQueries({ client: this.heyClient, path: { name: project } })
5178
+ );
5179
+ }
5180
+ async deleteQueries(project, queries) {
5181
+ await this.invoke(
5182
+ () => deleteApiV1ProjectsByNameQueries({ client: this.heyClient, path: { name: project }, body: { queries } })
5183
+ );
5184
+ }
5185
+ async appendQueries(project, queries) {
5186
+ await this.invoke(
5187
+ () => postApiV1ProjectsByNameQueries({ client: this.heyClient, path: { name: project }, body: { queries } })
5188
+ );
5189
+ }
5190
+ async generateQueries(project, provider, count) {
5191
+ return this.invoke(
5192
+ () => postApiV1ProjectsByNameQueriesGenerate({
5193
+ client: this.heyClient,
5194
+ path: { name: project },
5195
+ body: { provider, count }
5196
+ })
5197
+ );
5198
+ }
5199
+ async putKeywords(project, keywords) {
5200
+ await this.invoke(
5201
+ () => putApiV1ProjectsByNameKeywords({ client: this.heyClient, path: { name: project }, body: { keywords } })
5202
+ );
5203
+ }
5204
+ async listKeywords(project) {
5205
+ return this.invoke(
5206
+ () => getApiV1ProjectsByNameKeywords({ client: this.heyClient, path: { name: project } })
5207
+ );
5208
+ }
5209
+ async deleteKeywords(project, keywords) {
5210
+ await this.invoke(
5211
+ () => deleteApiV1ProjectsByNameKeywords({ client: this.heyClient, path: { name: project }, body: { keywords } })
5212
+ );
5213
+ }
5214
+ async appendKeywords(project, keywords) {
5215
+ await this.invoke(
5216
+ () => postApiV1ProjectsByNameKeywords({ client: this.heyClient, path: { name: project }, body: { keywords } })
5217
+ );
5218
+ }
5219
+ async generateKeywords(project, provider, count) {
5220
+ return this.invoke(
5221
+ () => postApiV1ProjectsByNameKeywordsGenerate({
5222
+ client: this.heyClient,
5223
+ path: { name: project },
5224
+ body: { provider, count }
5225
+ })
5226
+ );
5227
+ }
5228
+ async listCompetitors(project) {
5229
+ return this.invoke(
5230
+ () => getApiV1ProjectsByNameCompetitors({ client: this.heyClient, path: { name: project } })
5231
+ );
5232
+ }
5233
+ async appendCompetitors(project, competitors) {
5234
+ return this.invoke(
5235
+ () => postApiV1ProjectsByNameCompetitors({
5236
+ client: this.heyClient,
5237
+ path: { name: project },
5238
+ body: { competitors }
5239
+ })
5240
+ );
5241
+ }
5242
+ async deleteCompetitors(project, competitors) {
5243
+ return this.invoke(
5244
+ () => deleteApiV1ProjectsByNameCompetitors({
5245
+ client: this.heyClient,
5246
+ path: { name: project },
5247
+ body: { competitors }
5248
+ })
5249
+ );
5250
+ }
5251
+ // ── Runs / timeline / history / snapshots ───────────────────────────────
5252
+ async triggerRun(project, body) {
5253
+ return this.invoke(
5254
+ () => postApiV1ProjectsByNameRuns({
5255
+ client: this.heyClient,
5256
+ path: { name: project },
5257
+ body: body ?? {}
5258
+ })
5259
+ );
5260
+ }
5261
+ async getMeasurementPlan(project) {
5262
+ return this.invoke(
5263
+ () => getApiV1ProjectsByNameMeasurementPlan({ client: this.heyClient, path: { name: project } })
5264
+ );
5265
+ }
5266
+ async listMeasurementPlanVersions(project) {
5267
+ return this.invoke(
5268
+ () => getApiV1ProjectsByNameMeasurementPlanVersions({ client: this.heyClient, path: { name: project } })
5269
+ );
5270
+ }
5271
+ async getMeasurementPlanVersion(project, revision) {
5272
+ return this.invoke(
5273
+ () => getApiV1ProjectsByNameMeasurementPlanVersionsByRevision({
5274
+ client: this.heyClient,
5275
+ path: { name: project, revision }
5276
+ })
5277
+ );
5278
+ }
5279
+ async compileMeasurementPlanPreview(project, plan) {
5280
+ return this.invoke(
5281
+ () => postApiV1ProjectsByNameMeasurementPlanCompilePreview({
5282
+ client: this.heyClient,
5283
+ path: { name: project },
5284
+ body: plan
5285
+ })
5286
+ );
5287
+ }
5288
+ async diffMeasurementPlanPreview(project, plan) {
5289
+ return this.invoke(
5290
+ () => postApiV1ProjectsByNameMeasurementPlanDiffPreview({
5291
+ client: this.heyClient,
5292
+ path: { name: project },
5293
+ body: plan
5294
+ })
5295
+ );
5296
+ }
5297
+ async publishMeasurementPlan(project, request) {
5298
+ return this.invoke(
5299
+ () => putApiV1ProjectsByNameMeasurementPlan({
5300
+ client: this.heyClient,
5301
+ path: { name: project },
5302
+ body: request
5303
+ })
5304
+ );
5305
+ }
5306
+ async retireMeasurementPlanSegment(project, stableKey) {
5307
+ return this.invoke(
5308
+ () => postApiV1ProjectsByNameMeasurementPlanSegmentsByStableKeyRetire({
5309
+ client: this.heyClient,
5310
+ path: { name: project, stableKey }
5311
+ })
5312
+ );
5313
+ }
5314
+ async discoverMeasurementTargets(project, request) {
5315
+ return this.invoke(
5316
+ () => postApiV1ProjectsByNameMeasurementDiscovery({
5317
+ client: this.heyClient,
5318
+ path: { name: project },
5319
+ body: request
5320
+ })
5321
+ );
5322
+ }
5323
+ async getMeasurementReport(project, revision) {
5324
+ return this.invoke(
5325
+ () => getApiV1ProjectsByNameMeasurementReport({
5326
+ client: this.heyClient,
5327
+ path: { name: project },
5328
+ query: { revision }
5329
+ })
5330
+ );
5331
+ }
5332
+ // ── Advanced Measurement v2 ───────────────────────────────────────────
5333
+ async getMeasurementSetup(project) {
5334
+ return this.invoke(
5335
+ () => getApiV1ProjectsByNameMeasurementSetup({ client: this.heyClient, path: { name: project } })
5336
+ );
5337
+ }
5338
+ async getMeasurementOverview(project, query) {
5339
+ return this.invoke(
5340
+ () => getApiV1ProjectsByNameMeasurementOverview({
5341
+ client: this.heyClient,
5342
+ path: { name: project },
5343
+ query
5344
+ })
5345
+ );
5346
+ }
5347
+ async getMeasurementPlanDraft(project) {
5348
+ return this.invoke(
5349
+ () => getApiV1ProjectsByNameMeasurementPlanDraft({ client: this.heyClient, path: { name: project } })
5350
+ );
5351
+ }
5352
+ async getMeasurementDraftTargets(project, query) {
5353
+ return this.invoke(
5354
+ () => getApiV1ProjectsByNameMeasurementPlanDraftTargets({
5355
+ client: this.heyClient,
5356
+ path: { name: project },
5357
+ query
5358
+ })
4631
5359
  );
4632
5360
  }
4633
- async previewReplaceQueries(project, queries) {
5361
+ async getMeasurementDraftAssignments(project, query) {
4634
5362
  return this.invoke(
4635
- () => postApiV1ProjectsByNameQueriesReplacePreview({
5363
+ () => getApiV1ProjectsByNameMeasurementPlanDraftAssignments({
4636
5364
  client: this.heyClient,
4637
5365
  path: { name: project },
4638
- body: { queries }
5366
+ query
4639
5367
  })
4640
5368
  );
4641
5369
  }
4642
- async listQueries(project) {
5370
+ async getMeasurementDraftGroups(project, query) {
4643
5371
  return this.invoke(
4644
- () => getApiV1ProjectsByNameQueries({ client: this.heyClient, path: { name: project } })
5372
+ () => getApiV1ProjectsByNameMeasurementPlanDraftGroups({
5373
+ client: this.heyClient,
5374
+ path: { name: project },
5375
+ query
5376
+ })
4645
5377
  );
4646
5378
  }
4647
- async deleteQueries(project, queries) {
4648
- await this.invoke(
4649
- () => deleteApiV1ProjectsByNameQueries({ client: this.heyClient, path: { name: project }, body: { queries } })
5379
+ async createMeasurementPlanDraft(project, request, idempotencyKey) {
5380
+ return this.invoke(
5381
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsCreate({
5382
+ client: this.heyClient,
5383
+ path: { name: project },
5384
+ body: request,
5385
+ // No draft exists yet, so create has no ETag to match.
5386
+ headers: this.measurementDraftMutationHeaders(idempotencyKey)
5387
+ })
4650
5388
  );
4651
5389
  }
4652
- async appendQueries(project, queries) {
4653
- await this.invoke(
4654
- () => postApiV1ProjectsByNameQueries({ client: this.heyClient, path: { name: project }, body: { queries } })
5390
+ async importMeasurementDraftSitemap(project, request, idempotencyKey, etag) {
5391
+ return this.invoke(
5392
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsImportSitemap({
5393
+ client: this.heyClient,
5394
+ path: { name: project },
5395
+ body: request,
5396
+ headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
5397
+ })
4655
5398
  );
4656
5399
  }
4657
- async generateQueries(project, provider, count) {
5400
+ async applyMeasurementDraftSitemapSelection(project, request, idempotencyKey, etag) {
4658
5401
  return this.invoke(
4659
- () => postApiV1ProjectsByNameQueriesGenerate({
5402
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsApplySitemapSelection({
4660
5403
  client: this.heyClient,
4661
5404
  path: { name: project },
4662
- body: { provider, count }
5405
+ body: request,
5406
+ headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
4663
5407
  })
4664
5408
  );
4665
5409
  }
4666
- async putKeywords(project, keywords) {
4667
- await this.invoke(
4668
- () => putApiV1ProjectsByNameKeywords({ client: this.heyClient, path: { name: project }, body: { keywords } })
5410
+ async upsertMeasurementDraftTarget(project, request, idempotencyKey, etag) {
5411
+ return this.invoke(
5412
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsUpsertTarget({
5413
+ client: this.heyClient,
5414
+ path: { name: project },
5415
+ body: request,
5416
+ headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
5417
+ })
4669
5418
  );
4670
5419
  }
4671
- async listKeywords(project) {
5420
+ async renameMeasurementDraftTarget(project, request, idempotencyKey, etag) {
4672
5421
  return this.invoke(
4673
- () => getApiV1ProjectsByNameKeywords({ client: this.heyClient, path: { name: project } })
5422
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsRenameTarget({
5423
+ client: this.heyClient,
5424
+ path: { name: project },
5425
+ body: request,
5426
+ headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
5427
+ })
4674
5428
  );
4675
5429
  }
4676
- async deleteKeywords(project, keywords) {
4677
- await this.invoke(
4678
- () => deleteApiV1ProjectsByNameKeywords({ client: this.heyClient, path: { name: project }, body: { keywords } })
5430
+ async mergeMeasurementDraftTargets(project, request, idempotencyKey, etag) {
5431
+ return this.invoke(
5432
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsMergeTargets({
5433
+ client: this.heyClient,
5434
+ path: { name: project },
5435
+ body: request,
5436
+ headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
5437
+ })
4679
5438
  );
4680
5439
  }
4681
- async appendKeywords(project, keywords) {
4682
- await this.invoke(
4683
- () => postApiV1ProjectsByNameKeywords({ client: this.heyClient, path: { name: project }, body: { keywords } })
5440
+ async excludeMeasurementDraftTarget(project, request, idempotencyKey, etag) {
5441
+ return this.invoke(
5442
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsExcludeTarget({
5443
+ client: this.heyClient,
5444
+ path: { name: project },
5445
+ body: request,
5446
+ headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
5447
+ })
4684
5448
  );
4685
5449
  }
4686
- async generateKeywords(project, provider, count) {
5450
+ async rebindMeasurementDraftTarget(project, request, idempotencyKey, etag) {
4687
5451
  return this.invoke(
4688
- () => postApiV1ProjectsByNameKeywordsGenerate({
5452
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsRebindTarget({
4689
5453
  client: this.heyClient,
4690
5454
  path: { name: project },
4691
- body: { provider, count }
5455
+ body: request,
5456
+ headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
4692
5457
  })
4693
5458
  );
4694
5459
  }
4695
- async listCompetitors(project) {
5460
+ async applyMeasurementDraftAssignments(project, request, idempotencyKey, etag) {
4696
5461
  return this.invoke(
4697
- () => getApiV1ProjectsByNameCompetitors({ client: this.heyClient, path: { name: project } })
5462
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsApplyAssignments({
5463
+ client: this.heyClient,
5464
+ path: { name: project },
5465
+ body: request,
5466
+ headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
5467
+ })
4698
5468
  );
4699
5469
  }
4700
- async appendCompetitors(project, competitors) {
5470
+ async removeMeasurementDraftAssignment(project, request, idempotencyKey, etag) {
4701
5471
  return this.invoke(
4702
- () => postApiV1ProjectsByNameCompetitors({
5472
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsRemoveAssignment({
4703
5473
  client: this.heyClient,
4704
5474
  path: { name: project },
4705
- body: { competitors }
5475
+ body: request,
5476
+ headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
4706
5477
  })
4707
5478
  );
4708
5479
  }
4709
- async deleteCompetitors(project, competitors) {
5480
+ async clearMeasurementDraftAssignments(project, request, idempotencyKey, etag) {
4710
5481
  return this.invoke(
4711
- () => deleteApiV1ProjectsByNameCompetitors({
5482
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsClearAssignments({
4712
5483
  client: this.heyClient,
4713
5484
  path: { name: project },
4714
- body: { competitors }
5485
+ body: request,
5486
+ headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
4715
5487
  })
4716
5488
  );
4717
5489
  }
4718
- // ── Runs / timeline / history / snapshots ───────────────────────────────
4719
- async triggerRun(project, body) {
5490
+ async classifyMeasurementDraftAssignments(project, request, idempotencyKey, etag) {
4720
5491
  return this.invoke(
4721
- () => postApiV1ProjectsByNameRuns({
5492
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsClassifyAssignments({
4722
5493
  client: this.heyClient,
4723
5494
  path: { name: project },
4724
- body: body ?? {}
5495
+ body: request,
5496
+ headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
4725
5497
  })
4726
5498
  );
4727
5499
  }
4728
- async getMeasurementPlan(project) {
5500
+ async upsertMeasurementDraftGroup(project, request, idempotencyKey, etag) {
4729
5501
  return this.invoke(
4730
- () => getApiV1ProjectsByNameMeasurementPlan({ client: this.heyClient, path: { name: project } })
5502
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsUpsertGroup({
5503
+ client: this.heyClient,
5504
+ path: { name: project },
5505
+ body: request,
5506
+ headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
5507
+ })
4731
5508
  );
4732
5509
  }
4733
- async listMeasurementPlanVersions(project) {
5510
+ async removeMeasurementDraftGroup(project, request, idempotencyKey, etag) {
4734
5511
  return this.invoke(
4735
- () => getApiV1ProjectsByNameMeasurementPlanVersions({ client: this.heyClient, path: { name: project } })
5512
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsRemoveGroup({
5513
+ client: this.heyClient,
5514
+ path: { name: project },
5515
+ body: request,
5516
+ headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
5517
+ })
4736
5518
  );
4737
5519
  }
4738
- async getMeasurementPlanVersion(project, revision) {
5520
+ async upsertMeasurementDraftCompetitor(project, request, idempotencyKey, etag) {
4739
5521
  return this.invoke(
4740
- () => getApiV1ProjectsByNameMeasurementPlanVersionsByRevision({
5522
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsUpsertCompetitor({
4741
5523
  client: this.heyClient,
4742
- path: { name: project, revision }
5524
+ path: { name: project },
5525
+ body: request,
5526
+ headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
4743
5527
  })
4744
5528
  );
4745
5529
  }
4746
- async compileMeasurementPlanPreview(project, plan) {
5530
+ async removeMeasurementDraftCompetitor(project, request, idempotencyKey, etag) {
4747
5531
  return this.invoke(
4748
- () => postApiV1ProjectsByNameMeasurementPlanCompilePreview({
5532
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsRemoveCompetitor({
4749
5533
  client: this.heyClient,
4750
5534
  path: { name: project },
4751
- body: plan
5535
+ body: request,
5536
+ headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
4752
5537
  })
4753
5538
  );
4754
5539
  }
4755
- async diffMeasurementPlanPreview(project, plan) {
5540
+ async compileMeasurementDraftPreview(project) {
4756
5541
  return this.invoke(
4757
- () => postApiV1ProjectsByNameMeasurementPlanDiffPreview({
5542
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsCompilePreview({
5543
+ client: this.heyClient,
5544
+ path: { name: project }
5545
+ })
5546
+ );
5547
+ }
5548
+ async diffMeasurementDraftPreview(project) {
5549
+ return this.invoke(
5550
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsDiffPreview({
5551
+ client: this.heyClient,
5552
+ path: { name: project }
5553
+ })
5554
+ );
5555
+ }
5556
+ async publishMeasurementDraft(project, request, idempotencyKey, etag) {
5557
+ return this.invoke(
5558
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsPublish({
4758
5559
  client: this.heyClient,
4759
5560
  path: { name: project },
4760
- body: plan
5561
+ body: request,
5562
+ headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
4761
5563
  })
4762
5564
  );
4763
5565
  }
4764
- async publishMeasurementPlan(project, request) {
5566
+ async discardMeasurementDraft(project, idempotencyKey, etag) {
4765
5567
  return this.invoke(
4766
- () => putApiV1ProjectsByNameMeasurementPlan({
5568
+ () => postApiV1ProjectsByNameMeasurementPlanDraftActionsDiscard({
4767
5569
  client: this.heyClient,
4768
5570
  path: { name: project },
5571
+ headers: this.measurementDraftMutationHeaders(idempotencyKey, etag)
5572
+ })
5573
+ );
5574
+ }
5575
+ async deactivateMeasurementPlan(project, request, idempotencyKey) {
5576
+ return this.invoke(
5577
+ () => postApiV1ProjectsByNameMeasurementPlanActionsDeactivate({
5578
+ client: this.heyClient,
5579
+ path: { name: project },
5580
+ body: request,
5581
+ headers: { "Idempotency-Key": idempotencyKey }
5582
+ })
5583
+ );
5584
+ }
5585
+ async listMeasurementQuerySets(project) {
5586
+ return this.invoke(
5587
+ () => getApiV1ProjectsByNameMeasurementQuerySets({ client: this.heyClient, path: { name: project } })
5588
+ );
5589
+ }
5590
+ async getMeasurementQuerySet(project, setId) {
5591
+ return this.invoke(
5592
+ () => getApiV1ProjectsByNameMeasurementQuerySetsBySetId({
5593
+ client: this.heyClient,
5594
+ path: { name: project, setId }
5595
+ })
5596
+ );
5597
+ }
5598
+ async upsertMeasurementQuerySet(project, setId, request) {
5599
+ return this.invoke(
5600
+ () => putApiV1ProjectsByNameMeasurementQuerySetsBySetId({
5601
+ client: this.heyClient,
5602
+ path: { name: project, setId },
4769
5603
  body: request
4770
5604
  })
4771
5605
  );
4772
5606
  }
4773
- async retireMeasurementPlanSegment(project, stableKey) {
5607
+ async deleteMeasurementQuerySet(project, setId) {
4774
5608
  return this.invoke(
4775
- () => postApiV1ProjectsByNameMeasurementPlanSegmentsByStableKeyRetire({
5609
+ () => deleteApiV1ProjectsByNameMeasurementQuerySetsBySetId({
4776
5610
  client: this.heyClient,
4777
- path: { name: project, stableKey }
5611
+ path: { name: project, setId }
4778
5612
  })
4779
5613
  );
4780
5614
  }
4781
- async discoverMeasurementTargets(project, request) {
5615
+ async listMeasurementQueryTemplates(project) {
4782
5616
  return this.invoke(
4783
- () => postApiV1ProjectsByNameMeasurementDiscovery({
5617
+ () => getApiV1ProjectsByNameMeasurementQueryTemplates({ client: this.heyClient, path: { name: project } })
5618
+ );
5619
+ }
5620
+ async upsertMeasurementQueryTemplate(project, templateId, request) {
5621
+ return this.invoke(
5622
+ () => putApiV1ProjectsByNameMeasurementQueryTemplatesByTemplateId({
4784
5623
  client: this.heyClient,
4785
- path: { name: project },
5624
+ path: { name: project, templateId },
4786
5625
  body: request
4787
5626
  })
4788
5627
  );
4789
5628
  }
4790
- async getMeasurementReport(project, revision) {
5629
+ async deleteMeasurementQueryTemplate(project, templateId) {
4791
5630
  return this.invoke(
4792
- () => getApiV1ProjectsByNameMeasurementReport({
5631
+ () => deleteApiV1ProjectsByNameMeasurementQueryTemplatesByTemplateId({
4793
5632
  client: this.heyClient,
4794
- path: { name: project },
4795
- query: { revision }
5633
+ path: { name: project, templateId }
5634
+ })
5635
+ );
5636
+ }
5637
+ async applyMeasurementQueryTemplate(project, templateId, request, idempotencyKey) {
5638
+ return this.invoke(
5639
+ () => postApiV1ProjectsByNameMeasurementQueryTemplatesByTemplateIdApply({
5640
+ client: this.heyClient,
5641
+ path: { name: project, templateId },
5642
+ body: request,
5643
+ headers: { "Idempotency-Key": idempotencyKey }
4796
5644
  })
4797
5645
  );
4798
5646
  }
@@ -6365,6 +7213,143 @@ var measurementPlanPreviewInputSchema = z2.object({ project: projectNameSchema,
6365
7213
  var measurementPlanPublishInputSchema = measurementPlanPublishRequestSchema.extend({ project: projectNameSchema });
6366
7214
  var measurementPlanRetireInputSchema = z2.object({ project: projectNameSchema, stableKey: z2.string().min(1) });
6367
7215
  var measurementDiscoveryInputSchema = measurementDiscoveryRequestSchema.extend({ project: projectNameSchema });
7216
+ var idempotencyKeyInputSchema = z2.string().trim().min(1).describe("A fresh request key. Reuse it only when retrying the identical request.");
7217
+ var measurementDraftEtagInputSchema = z2.string().trim().min(1).optional().describe(
7218
+ "Current draft ETag from canonry_measurement_draft_get. The API requires it for draft edits, publish, and discard; omit it only to receive the API\u2019s actionable 428 response."
7219
+ );
7220
+ var measurementOverviewInputSchema = measurementOverviewQuerySchema.extend({ project: projectNameSchema });
7221
+ var measurementDraftCollectionInputSchema = measurementDraftCollectionQuerySchema.extend({ project: projectNameSchema });
7222
+ var measurementQuerySetInputSchema = z2.object({
7223
+ project: projectNameSchema,
7224
+ setId: z2.string().trim().min(1)
7225
+ }).strict();
7226
+ var measurementQuerySetUpsertInputSchema = measurementQuerySetInputSchema.extend({
7227
+ request: measurementQuerySetUpsertRequestSchema
7228
+ }).strict();
7229
+ var measurementQueryTemplateInputSchema = z2.object({
7230
+ project: projectNameSchema,
7231
+ templateId: z2.string().trim().min(1)
7232
+ }).strict();
7233
+ var measurementQueryTemplateUpsertInputSchema = measurementQueryTemplateInputSchema.extend({
7234
+ request: measurementQueryTemplateUpsertRequestSchema
7235
+ }).strict();
7236
+ var measurementQueryTemplateApplyInputSchema = measurementQueryTemplateInputSchema.extend({
7237
+ request: measurementQueryTemplateApplyRequestSchema,
7238
+ idempotencyKey: idempotencyKeyInputSchema
7239
+ }).strict();
7240
+ var measurementPlanDeactivateInputSchema = measurementPlanDeactivateRequestSchema.extend({
7241
+ project: projectNameSchema,
7242
+ idempotencyKey: idempotencyKeyInputSchema
7243
+ }).strict();
7244
+ function measurementDraftMutationOperationSchema(action, request) {
7245
+ return z2.object({
7246
+ action: z2.literal(action),
7247
+ request,
7248
+ etag: measurementDraftEtagInputSchema,
7249
+ idempotencyKey: idempotencyKeyInputSchema
7250
+ }).strict().describe(`Operation for ${action}.`);
7251
+ }
7252
+ var measurementDraftOperationSchema = z2.discriminatedUnion("action", [
7253
+ z2.object({
7254
+ action: z2.literal("create"),
7255
+ request: measurementDraftCreateRequestSchema,
7256
+ idempotencyKey: idempotencyKeyInputSchema
7257
+ }).strict().describe("Operation for create."),
7258
+ measurementDraftMutationOperationSchema("import-sitemap", measurementDraftImportSitemapRequestSchema),
7259
+ measurementDraftMutationOperationSchema("apply-sitemap-selection", measurementDraftApplySitemapSelectionRequestSchema),
7260
+ measurementDraftMutationOperationSchema("upsert-target", measurementDraftUpsertTargetRequestSchema),
7261
+ measurementDraftMutationOperationSchema("rename-target", measurementDraftRenameTargetRequestSchema),
7262
+ measurementDraftMutationOperationSchema("merge-targets", measurementDraftMergeTargetsRequestSchema),
7263
+ measurementDraftMutationOperationSchema("exclude-target", measurementDraftExcludeTargetRequestSchema),
7264
+ measurementDraftMutationOperationSchema("rebind-target", measurementDraftRebindTargetRequestSchema),
7265
+ measurementDraftMutationOperationSchema("apply-assignments", measurementDraftApplyAssignmentsRequestSchema),
7266
+ measurementDraftMutationOperationSchema("remove-assignment", measurementDraftRemoveAssignmentRequestSchema),
7267
+ measurementDraftMutationOperationSchema("clear-assignments", measurementDraftClearAssignmentsRequestSchema),
7268
+ measurementDraftMutationOperationSchema("classify-assignments", measurementDraftClassifyAssignmentsRequestSchema),
7269
+ measurementDraftMutationOperationSchema("upsert-group", measurementDraftUpsertGroupRequestSchema),
7270
+ measurementDraftMutationOperationSchema("remove-group", measurementDraftRemoveGroupRequestSchema),
7271
+ measurementDraftMutationOperationSchema("upsert-competitor", measurementDraftUpsertCompetitorRequestSchema),
7272
+ measurementDraftMutationOperationSchema("remove-competitor", measurementDraftRemoveCompetitorRequestSchema),
7273
+ z2.object({ action: z2.literal("compile-preview") }).strict().describe("Operation for compile-preview."),
7274
+ z2.object({ action: z2.literal("diff-preview") }).strict().describe("Operation for diff-preview."),
7275
+ measurementDraftMutationOperationSchema("publish", measurementDraftPublishRequestSchema),
7276
+ z2.object({
7277
+ action: z2.literal("discard"),
7278
+ etag: measurementDraftEtagInputSchema,
7279
+ idempotencyKey: idempotencyKeyInputSchema
7280
+ }).strict().describe("Operation for discard.")
7281
+ ]);
7282
+ var measurementDraftActionInputSchema = z2.object({
7283
+ project: projectNameSchema,
7284
+ operation: measurementDraftOperationSchema.describe("Typed draft operation. Select exactly one action branch.")
7285
+ }).strict();
7286
+ var measurementDraftActionOpenApiOperations = [
7287
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/create",
7288
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/import-sitemap",
7289
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/apply-sitemap-selection",
7290
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/upsert-target",
7291
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/rename-target",
7292
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/merge-targets",
7293
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/exclude-target",
7294
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/rebind-target",
7295
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/apply-assignments",
7296
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/remove-assignment",
7297
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/clear-assignments",
7298
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/classify-assignments",
7299
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/upsert-group",
7300
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/remove-group",
7301
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/upsert-competitor",
7302
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/remove-competitor",
7303
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/compile-preview",
7304
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/diff-preview",
7305
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/publish",
7306
+ "POST /api/v1/projects/{name}/measurement-plan/draft/actions/discard"
7307
+ ];
7308
+ function runMeasurementDraftAction(client2, input) {
7309
+ const { project, operation: actionInput } = input;
7310
+ switch (actionInput.action) {
7311
+ case "create":
7312
+ return client2.createMeasurementPlanDraft(project, actionInput.request, actionInput.idempotencyKey);
7313
+ case "import-sitemap":
7314
+ return client2.importMeasurementDraftSitemap(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
7315
+ case "apply-sitemap-selection":
7316
+ return client2.applyMeasurementDraftSitemapSelection(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
7317
+ case "upsert-target":
7318
+ return client2.upsertMeasurementDraftTarget(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
7319
+ case "rename-target":
7320
+ return client2.renameMeasurementDraftTarget(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
7321
+ case "merge-targets":
7322
+ return client2.mergeMeasurementDraftTargets(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
7323
+ case "exclude-target":
7324
+ return client2.excludeMeasurementDraftTarget(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
7325
+ case "rebind-target":
7326
+ return client2.rebindMeasurementDraftTarget(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
7327
+ case "apply-assignments":
7328
+ return client2.applyMeasurementDraftAssignments(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
7329
+ case "remove-assignment":
7330
+ return client2.removeMeasurementDraftAssignment(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
7331
+ case "clear-assignments":
7332
+ return client2.clearMeasurementDraftAssignments(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
7333
+ case "classify-assignments":
7334
+ return client2.classifyMeasurementDraftAssignments(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
7335
+ case "upsert-group":
7336
+ return client2.upsertMeasurementDraftGroup(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
7337
+ case "remove-group":
7338
+ return client2.removeMeasurementDraftGroup(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
7339
+ case "upsert-competitor":
7340
+ return client2.upsertMeasurementDraftCompetitor(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
7341
+ case "remove-competitor":
7342
+ return client2.removeMeasurementDraftCompetitor(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
7343
+ case "compile-preview":
7344
+ return client2.compileMeasurementDraftPreview(project);
7345
+ case "diff-preview":
7346
+ return client2.diffMeasurementDraftPreview(project);
7347
+ case "publish":
7348
+ return client2.publishMeasurementDraft(project, actionInput.request, actionInput.idempotencyKey, actionInput.etag);
7349
+ case "discard":
7350
+ return client2.discardMeasurementDraft(project, actionInput.idempotencyKey, actionInput.etag);
7351
+ }
7352
+ }
6368
7353
  var runsListInputSchema = z2.object({
6369
7354
  project: projectNameSchema,
6370
7355
  limit: z2.number().int().positive().max(500).optional()
@@ -8021,6 +9006,201 @@ var canonryMcpTools = [
8021
9006
  openApiOperations: ["POST /api/v1/projects/{name}/measurement-plan/segments/{stableKey}/retire"],
8022
9007
  handler: (client2, input) => client2.retireMeasurementPlanSegment(input.project, input.stableKey)
8023
9008
  }),
9009
+ defineTool({
9010
+ name: "canonry_measurement_setup",
9011
+ title: "Get Advanced Measurement setup state",
9012
+ description: "Return the project\u2019s stored Advanced Measurement setup state, mode, active revision, draft freshness, and next action. It never starts provider work or incurs provider cost, and refuses an unknown project.",
9013
+ access: "read",
9014
+ tier: "setup",
9015
+ inputSchema: projectInputSchema,
9016
+ annotations: readAnnotations(),
9017
+ openApiOperations: ["GET /api/v1/projects/{name}/measurement-setup"],
9018
+ handler: (client2, input) => client2.getMeasurementSetup(input.project)
9019
+ }),
9020
+ defineTool({
9021
+ name: "canonry_measurement_overview",
9022
+ title: "Get Advanced Measurement overview",
9023
+ description: "Return stored, revision-pinned Advanced Measurement metrics and a bounded page of Target rows for one scope. It ranks one run snapshot only and never infers a trend or compares across revisions. Choose label-asc (default), label-desc, citationCoverage-asc/desc, or mentionCoverage-asc/desc. For a coverage sort, unavailable rows form the first bucket in either direction; available rows then follow the requested numeric direction. The cursor is sort-aware, pins pagination to the active revision, displayed run, evidence snapshot, and filters even if a newer run completes, and must be reused unchanged with the same sort and filters. Legacy label cursors work only when sort is omitted, while any explicit sort needs a new sort-bound cursor. It never starts provider work or incurs provider cost; page size is at most 100, and it refuses invalid scope keys, cursor combinations, appended evidence, or a run pinned to another revision.",
9024
+ access: "read",
9025
+ tier: "setup",
9026
+ inputSchema: measurementOverviewInputSchema,
9027
+ annotations: readAnnotations(),
9028
+ openApiOperations: ["GET /api/v1/projects/{name}/measurement-overview"],
9029
+ handler: (client2, input) => {
9030
+ const { project, ...query } = input;
9031
+ return client2.getMeasurementOverview(project, query);
9032
+ }
9033
+ }),
9034
+ defineTool({
9035
+ name: "canonry_measurement_draft_get",
9036
+ title: "Get Advanced Measurement draft",
9037
+ description: "Return the stored v2 draft and its current ETag, or draft:null when none exists. It never starts provider work or incurs provider cost, and refuses an unknown project.",
9038
+ access: "read",
9039
+ tier: "setup",
9040
+ inputSchema: projectInputSchema,
9041
+ annotations: readAnnotations(),
9042
+ openApiOperations: ["GET /api/v1/projects/{name}/measurement-plan/draft"],
9043
+ handler: (client2, input) => client2.getMeasurementPlanDraft(input.project)
9044
+ }),
9045
+ defineTool({
9046
+ name: "canonry_measurement_draft_targets",
9047
+ title: "List Advanced Measurement draft Targets",
9048
+ description: "Return one stored, cursor-paged set of draft Targets. It never starts provider work or incurs provider cost; pages are capped at 100 rows and it refuses a missing draft or unknown project.",
9049
+ access: "read",
9050
+ tier: "setup",
9051
+ inputSchema: measurementDraftCollectionInputSchema,
9052
+ annotations: readAnnotations(),
9053
+ openApiOperations: ["GET /api/v1/projects/{name}/measurement-plan/draft/targets"],
9054
+ handler: (client2, input) => {
9055
+ const { project, ...query } = input;
9056
+ return client2.getMeasurementDraftTargets(project, query);
9057
+ }
9058
+ }),
9059
+ defineTool({
9060
+ name: "canonry_measurement_draft_assignments",
9061
+ title: "List Advanced Measurement draft assignments",
9062
+ description: "Return one stored, cursor-paged set of draft Target-to-query assignments. It never starts provider work or incurs provider cost; pages are capped at 100 rows and it refuses a missing draft or unknown project.",
9063
+ access: "read",
9064
+ tier: "setup",
9065
+ inputSchema: measurementDraftCollectionInputSchema,
9066
+ annotations: readAnnotations(),
9067
+ openApiOperations: ["GET /api/v1/projects/{name}/measurement-plan/draft/assignments"],
9068
+ handler: (client2, input) => {
9069
+ const { project, ...query } = input;
9070
+ return client2.getMeasurementDraftAssignments(project, query);
9071
+ }
9072
+ }),
9073
+ defineTool({
9074
+ name: "canonry_measurement_draft_groups",
9075
+ title: "List Advanced Measurement draft groups",
9076
+ description: "Return one stored, cursor-paged set of draft reporting groups and competitors. It never starts provider work or incurs provider cost; pages are capped at 100 rows and it refuses a missing draft or unknown project.",
9077
+ access: "read",
9078
+ tier: "setup",
9079
+ inputSchema: measurementDraftCollectionInputSchema,
9080
+ annotations: readAnnotations(),
9081
+ openApiOperations: ["GET /api/v1/projects/{name}/measurement-plan/draft/groups"],
9082
+ handler: (client2, input) => {
9083
+ const { project, ...query } = input;
9084
+ return client2.getMeasurementDraftGroups(project, query);
9085
+ }
9086
+ }),
9087
+ defineTool({
9088
+ name: "canonry_measurement_query_sets",
9089
+ title: "List Advanced Measurement query sets",
9090
+ description: "Return stored query-set metadata for one project. It never starts provider work or incurs provider cost, and refuses an unknown project.",
9091
+ access: "read",
9092
+ tier: "setup",
9093
+ inputSchema: projectInputSchema,
9094
+ annotations: readAnnotations(),
9095
+ openApiOperations: ["GET /api/v1/projects/{name}/measurement-query-sets"],
9096
+ handler: (client2, input) => client2.listMeasurementQuerySets(input.project)
9097
+ }),
9098
+ defineTool({
9099
+ name: "canonry_measurement_query_set_get",
9100
+ title: "Get Advanced Measurement query set",
9101
+ description: "Return one stored query set with its ordered query members. It never starts provider work or incurs provider cost, and refuses an unknown project or query-set ID.",
9102
+ access: "read",
9103
+ tier: "setup",
9104
+ inputSchema: measurementQuerySetInputSchema,
9105
+ annotations: readAnnotations(),
9106
+ openApiOperations: ["GET /api/v1/projects/{name}/measurement-query-sets/{setId}"],
9107
+ handler: (client2, input) => client2.getMeasurementQuerySet(input.project, input.setId)
9108
+ }),
9109
+ defineTool({
9110
+ name: "canonry_measurement_query_templates",
9111
+ title: "List Advanced Measurement query templates",
9112
+ description: "Return stored query-template metadata for one project. It never starts provider work or incurs provider cost, and refuses an unknown project.",
9113
+ access: "read",
9114
+ tier: "setup",
9115
+ inputSchema: projectInputSchema,
9116
+ annotations: readAnnotations(),
9117
+ openApiOperations: ["GET /api/v1/projects/{name}/measurement-query-templates"],
9118
+ handler: (client2, input) => client2.listMeasurementQueryTemplates(input.project)
9119
+ }),
9120
+ defineTool({
9121
+ name: "canonry_measurement_draft_action",
9122
+ title: "Act on an Advanced Measurement draft",
9123
+ description: "Create, edit, inspect, publish, or discard one v2 draft. Pass project plus exactly one typed operation branch; each operation correlates its action with the required request, ETag, and idempotency key so the live schema is self-describing. Requires measurement-plan write authority. Every mutating action needs idempotencyKey: reuse it only for an identical retry; a changed request with the same key is refused. Create has no ETag. Draft edits, publish, and discard should pass the latest ETag from canonry_measurement_draft_get; a missing ETag reaches the API as actionable 428, while a stale ETag returns 412. Compile-preview and diff-preview never mutate or start provider work and require neither header. Import-sitemap performs a bounded public sitemap fetch but does not publish or run measurement; publish replaces the active plan after validation, and discard permanently removes the draft.",
9124
+ access: "write",
9125
+ tier: "setup",
9126
+ inputSchema: measurementDraftActionInputSchema,
9127
+ annotations: writeAnnotations({ idempotentHint: true, destructiveHint: true, openWorldHint: true }),
9128
+ openApiOperations: measurementDraftActionOpenApiOperations,
9129
+ handler: runMeasurementDraftAction
9130
+ }),
9131
+ defineTool({
9132
+ name: "canonry_measurement_plan_deactivate",
9133
+ title: "Deactivate Advanced Measurement plan",
9134
+ description: "Remove the active Advanced Measurement plan pointer while retaining immutable revisions. Requires measurement-plan write authority, the active revision you reviewed, and idempotencyKey; reuse that key only to retry the identical request. It does not use a draft ETag and refuses a moved or missing active plan.",
9135
+ access: "write",
9136
+ tier: "setup",
9137
+ inputSchema: measurementPlanDeactivateInputSchema,
9138
+ annotations: writeAnnotations({ idempotentHint: true, destructiveHint: true }),
9139
+ openApiOperations: ["POST /api/v1/projects/{name}/measurement-plan/actions/deactivate"],
9140
+ handler: (client2, input) => client2.deactivateMeasurementPlan(input.project, {
9141
+ expectedActiveRevision: input.expectedActiveRevision
9142
+ }, input.idempotencyKey)
9143
+ }),
9144
+ defineTool({
9145
+ name: "canonry_measurement_query_set_upsert",
9146
+ title: "Create or replace Advanced Measurement query set",
9147
+ description: "Create or replace one query set and its ordered query references. Requires measurement-plan write authority. This is an idempotent PUT with no mutation headers; safely retry the same request. It replaces the named query-set contents but never deletes project queries or published plans.",
9148
+ access: "write",
9149
+ tier: "setup",
9150
+ inputSchema: measurementQuerySetUpsertInputSchema,
9151
+ annotations: writeAnnotations({ idempotentHint: true, destructiveHint: true }),
9152
+ openApiOperations: ["PUT /api/v1/projects/{name}/measurement-query-sets/{setId}"],
9153
+ handler: (client2, input) => client2.upsertMeasurementQuerySet(input.project, input.setId, input.request)
9154
+ }),
9155
+ defineTool({
9156
+ name: "canonry_measurement_query_set_delete",
9157
+ title: "Delete Advanced Measurement query set",
9158
+ description: "Delete one query set without deleting its project queries or published plans. Requires measurement-plan write authority. DELETE is idempotent and uses no mutation headers; retrying the same request is safe, while an unknown query-set ID is refused.",
9159
+ access: "write",
9160
+ tier: "setup",
9161
+ inputSchema: measurementQuerySetInputSchema,
9162
+ annotations: writeAnnotations({ idempotentHint: true, destructiveHint: true }),
9163
+ openApiOperations: ["DELETE /api/v1/projects/{name}/measurement-query-sets/{setId}"],
9164
+ handler: (client2, input) => client2.deleteMeasurementQuerySet(input.project, input.setId)
9165
+ }),
9166
+ defineTool({
9167
+ name: "canonry_measurement_query_template_upsert",
9168
+ title: "Create or replace Advanced Measurement query template",
9169
+ description: "Create or replace one query template. Requires measurement-plan write authority. This is an idempotent PUT with no mutation headers; safely retry the same request. It replaces only the named template and does not create queries until an explicit apply.",
9170
+ access: "write",
9171
+ tier: "setup",
9172
+ inputSchema: measurementQueryTemplateUpsertInputSchema,
9173
+ annotations: writeAnnotations({ idempotentHint: true, destructiveHint: true }),
9174
+ openApiOperations: ["PUT /api/v1/projects/{name}/measurement-query-templates/{templateId}"],
9175
+ handler: (client2, input) => client2.upsertMeasurementQueryTemplate(input.project, input.templateId, input.request)
9176
+ }),
9177
+ defineTool({
9178
+ name: "canonry_measurement_query_template_delete",
9179
+ title: "Delete Advanced Measurement query template",
9180
+ description: "Delete one query template without deleting previously expanded project queries. Requires measurement-plan write authority. DELETE is idempotent and uses no mutation headers; retrying the same request is safe, while an unknown template ID is refused.",
9181
+ access: "write",
9182
+ tier: "setup",
9183
+ inputSchema: measurementQueryTemplateInputSchema,
9184
+ annotations: writeAnnotations({ idempotentHint: true, destructiveHint: true }),
9185
+ openApiOperations: ["DELETE /api/v1/projects/{name}/measurement-query-templates/{templateId}"],
9186
+ handler: (client2, input) => client2.deleteMeasurementQueryTemplate(input.project, input.templateId)
9187
+ }),
9188
+ defineTool({
9189
+ name: "canonry_measurement_query_template_apply",
9190
+ title: "Apply Advanced Measurement query template",
9191
+ description: "Expand one query template into project queries and optionally add them to a query set. Requires measurement-plan write authority and idempotencyKey; reuse that key only to retry the identical apply. This additive action returns created and already-existing queries, does not use a draft ETag, and never removes prior queries.",
9192
+ access: "write",
9193
+ tier: "setup",
9194
+ inputSchema: measurementQueryTemplateApplyInputSchema,
9195
+ annotations: writeAnnotations({ idempotentHint: true }),
9196
+ openApiOperations: ["POST /api/v1/projects/{name}/measurement-query-templates/{templateId}/apply"],
9197
+ handler: (client2, input) => client2.applyMeasurementQueryTemplate(
9198
+ input.project,
9199
+ input.templateId,
9200
+ input.request,
9201
+ input.idempotencyKey
9202
+ )
9203
+ }),
8024
9204
  defineTool({
8025
9205
  name: "canonry_measurement_report",
8026
9206
  title: "Get measurement report",