adapty 0.11.0 → 0.13.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 (122) hide show
  1. package/README.md +45 -0
  2. package/dist/cli/base/adapty/flags.d.ts +65 -0
  3. package/dist/cli/base/adapty/flags.js +95 -0
  4. package/dist/cli/base/adapty/index.d.ts +1 -0
  5. package/dist/cli/base/adapty/index.js +1 -0
  6. package/dist/cli/base/attribution/flags.d.ts +3 -3
  7. package/dist/cli/base/attribution/flags.js +5 -20
  8. package/dist/cli/commands/analytics/catalog.d.ts +10 -0
  9. package/dist/cli/commands/analytics/catalog.js +52 -0
  10. package/dist/cli/commands/analytics/chart.d.ts +21 -0
  11. package/dist/cli/commands/analytics/chart.js +47 -0
  12. package/dist/cli/commands/analytics/cohort.d.ts +19 -0
  13. package/dist/cli/commands/analytics/cohort.js +40 -0
  14. package/dist/cli/commands/analytics/conversion.d.ts +20 -0
  15. package/dist/cli/commands/analytics/conversion.js +44 -0
  16. package/dist/cli/commands/analytics/funnel.d.ts +16 -0
  17. package/dist/cli/commands/analytics/funnel.js +32 -0
  18. package/dist/cli/commands/analytics/ltv.d.ts +19 -0
  19. package/dist/cli/commands/analytics/ltv.js +40 -0
  20. package/dist/cli/commands/analytics/retention.d.ts +17 -0
  21. package/dist/cli/commands/analytics/retention.js +41 -0
  22. package/dist/cli/commands/analytics/values.d.ts +11 -0
  23. package/dist/cli/commands/analytics/values.js +33 -0
  24. package/dist/cli/commands/attribution/report/command.js +6 -11
  25. package/dist/cli/commands/product-offers/create.d.ts +15 -0
  26. package/dist/cli/commands/product-offers/create.js +41 -0
  27. package/dist/cli/commands/product-offers/get.d.ts +13 -0
  28. package/dist/cli/commands/product-offers/get.js +16 -0
  29. package/dist/cli/commands/product-offers/list.d.ts +11 -0
  30. package/dist/cli/commands/product-offers/list.js +15 -0
  31. package/dist/cli/commands/product-offers/update.d.ts +20 -0
  32. package/dist/cli/commands/product-offers/update.js +41 -0
  33. package/dist/cli/errors.js +8 -1
  34. package/dist/cli/input/app.js +1 -11
  35. package/dist/cli/input/filter.d.ts +11 -0
  36. package/dist/cli/input/filter.js +16 -0
  37. package/dist/cli/input/offer.d.ts +3 -0
  38. package/dist/cli/input/offer.js +9 -0
  39. package/dist/cli/input/period.d.ts +10 -0
  40. package/dist/cli/input/period.js +23 -0
  41. package/dist/cli/input/product.d.ts +3 -0
  42. package/dist/cli/input/product.js +9 -0
  43. package/dist/cli/input/uuid.d.ts +6 -0
  44. package/dist/cli/input/uuid.js +11 -0
  45. package/dist/cli/views/analytics/csv.d.ts +3 -0
  46. package/dist/cli/views/analytics/csv.js +16 -0
  47. package/dist/cli/views/analytics/human.d.ts +41 -0
  48. package/dist/cli/views/analytics/human.js +134 -0
  49. package/dist/cli/views/analytics/segments.d.ts +68 -0
  50. package/dist/cli/views/analytics/segments.js +189 -0
  51. package/dist/commands/analytics/catalog.d.ts +1 -0
  52. package/dist/commands/analytics/catalog.js +2 -0
  53. package/dist/commands/analytics/chart.d.ts +1 -0
  54. package/dist/commands/analytics/chart.js +2 -0
  55. package/dist/commands/analytics/cohort.d.ts +1 -0
  56. package/dist/commands/analytics/cohort.js +2 -0
  57. package/dist/commands/analytics/conversion.d.ts +1 -0
  58. package/dist/commands/analytics/conversion.js +2 -0
  59. package/dist/commands/analytics/funnel.d.ts +1 -0
  60. package/dist/commands/analytics/funnel.js +2 -0
  61. package/dist/commands/analytics/ltv.d.ts +1 -0
  62. package/dist/commands/analytics/ltv.js +2 -0
  63. package/dist/commands/analytics/retention.d.ts +1 -0
  64. package/dist/commands/analytics/retention.js +2 -0
  65. package/dist/commands/analytics/values.d.ts +1 -0
  66. package/dist/commands/analytics/values.js +2 -0
  67. package/dist/commands/product-offers/create.d.ts +1 -0
  68. package/dist/commands/product-offers/create.js +2 -0
  69. package/dist/commands/product-offers/get.d.ts +1 -0
  70. package/dist/commands/product-offers/get.js +2 -0
  71. package/dist/commands/product-offers/list.d.ts +1 -0
  72. package/dist/commands/product-offers/list.js +2 -0
  73. package/dist/commands/product-offers/update.d.ts +1 -0
  74. package/dist/commands/product-offers/update.js +2 -0
  75. package/dist/lib/api-schemas.d.ts +1 -0
  76. package/dist/sdk/adapty/analytics/catalog.d.ts +51 -0
  77. package/dist/sdk/adapty/analytics/catalog.js +5 -0
  78. package/dist/sdk/adapty/analytics/chart.d.ts +41 -0
  79. package/dist/sdk/adapty/analytics/chart.js +6 -0
  80. package/dist/sdk/adapty/analytics/cohort.d.ts +79 -0
  81. package/dist/sdk/adapty/analytics/cohort.js +4 -0
  82. package/dist/sdk/adapty/analytics/conversion.d.ts +55 -0
  83. package/dist/sdk/adapty/analytics/conversion.js +7 -0
  84. package/dist/sdk/adapty/analytics/funnel.d.ts +41 -0
  85. package/dist/sdk/adapty/analytics/funnel.js +3 -0
  86. package/dist/sdk/adapty/analytics/index.d.ts +24 -0
  87. package/dist/sdk/adapty/analytics/index.js +13 -0
  88. package/dist/sdk/adapty/analytics/ltv.d.ts +27 -0
  89. package/dist/sdk/adapty/analytics/ltv.js +4 -0
  90. package/dist/sdk/adapty/analytics/model.d.ts +53 -0
  91. package/dist/sdk/adapty/analytics/model.js +12 -0
  92. package/dist/sdk/adapty/analytics/query.d.ts +48 -0
  93. package/dist/sdk/adapty/analytics/query.js +52 -0
  94. package/dist/sdk/adapty/analytics/renewal-periods.d.ts +23 -0
  95. package/dist/sdk/adapty/analytics/renewal-periods.js +27 -0
  96. package/dist/sdk/adapty/analytics/resource.d.ts +29 -0
  97. package/dist/sdk/adapty/analytics/resource.js +72 -0
  98. package/dist/sdk/adapty/analytics/retention.d.ts +32 -0
  99. package/dist/sdk/adapty/analytics/retention.js +6 -0
  100. package/dist/sdk/adapty/analytics/values.d.ts +20 -0
  101. package/dist/sdk/adapty/analytics/values.js +1 -0
  102. package/dist/sdk/adapty/index.d.ts +8 -0
  103. package/dist/sdk/adapty/index.js +6 -0
  104. package/dist/sdk/adapty/product-offers/create.d.ts +5 -0
  105. package/dist/sdk/adapty/product-offers/create.js +12 -0
  106. package/dist/sdk/adapty/product-offers/index.d.ts +9 -0
  107. package/dist/sdk/adapty/product-offers/index.js +5 -0
  108. package/dist/sdk/adapty/product-offers/model.d.ts +48 -0
  109. package/dist/sdk/adapty/product-offers/model.js +30 -0
  110. package/dist/sdk/adapty/product-offers/resource.d.ts +21 -0
  111. package/dist/sdk/adapty/product-offers/resource.js +28 -0
  112. package/dist/sdk/adapty/product-offers/update.d.ts +19 -0
  113. package/dist/sdk/adapty/product-offers/update.js +42 -0
  114. package/dist/sdk/attribution/index.d.ts +1 -1
  115. package/dist/sdk/attribution/index.js +1 -1
  116. package/dist/sdk/attribution/report.d.ts +0 -2
  117. package/dist/sdk/attribution/report.js +2 -26
  118. package/dist/sdk/core/dates.d.ts +15 -0
  119. package/dist/sdk/core/dates.js +34 -0
  120. package/dist/sdk/core/errors.d.ts +3 -0
  121. package/oclif.manifest.json +1163 -128
  122. package/package.json +7 -1
@@ -278,6 +278,770 @@
278
278
  "update.js"
279
279
  ]
280
280
  },
281
+ "analytics:catalog": {
282
+ "aliases": [],
283
+ "args": {},
284
+ "description": "List what the analytics of an app can answer: the six operations with their options, groupings and filters, every chart and conversion, and every filter dimension",
285
+ "examples": [
286
+ "<%= config.bin %> analytics catalog --app APP_UUID",
287
+ "<%= config.bin %> analytics catalog --app APP_UUID --json"
288
+ ],
289
+ "flags": {
290
+ "json": {
291
+ "description": "Format output as json.",
292
+ "helpGroup": "GLOBAL",
293
+ "name": "json",
294
+ "allowNo": false,
295
+ "type": "boolean"
296
+ },
297
+ "app": {
298
+ "description": "App ID (UUID)",
299
+ "name": "app",
300
+ "required": true,
301
+ "hasDynamicHelp": false,
302
+ "multiple": false,
303
+ "type": "option"
304
+ }
305
+ },
306
+ "hasDynamicHelp": false,
307
+ "hiddenAliases": [],
308
+ "id": "analytics:catalog",
309
+ "pluginAlias": "adapty",
310
+ "pluginName": "adapty",
311
+ "pluginType": "core",
312
+ "strict": true,
313
+ "isESM": true,
314
+ "relativePath": [
315
+ "dist",
316
+ "commands",
317
+ "analytics",
318
+ "catalog.js"
319
+ ]
320
+ },
321
+ "analytics:chart": {
322
+ "aliases": [],
323
+ "args": {},
324
+ "description": "Read one chart of the analytics of an app (revenue, MRR, installs, ...): the number of the period, its points and its groups, the total first",
325
+ "examples": [
326
+ "<%= config.bin %> analytics chart --app APP_UUID --chart revenue --date-from 2026-07-01 --date-to 2026-09-30",
327
+ "<%= config.bin %> analytics chart --app APP_UUID --chart revenue --date-from 2026-07-01 --date-to 2026-09-30 --group-by country --csv",
328
+ "<%= config.bin %> analytics chart --app APP_UUID --chart mrr --date-from 2026-07-01 --date-to 2026-09-30 --compare-from 2026-04-01 --compare-to 2026-06-30 --json"
329
+ ],
330
+ "flags": {
331
+ "json": {
332
+ "description": "Format output as json.",
333
+ "helpGroup": "GLOBAL",
334
+ "name": "json",
335
+ "allowNo": false,
336
+ "type": "boolean"
337
+ },
338
+ "app": {
339
+ "description": "App ID (UUID)",
340
+ "name": "app",
341
+ "required": true,
342
+ "hasDynamicHelp": false,
343
+ "multiple": false,
344
+ "type": "option"
345
+ },
346
+ "chart": {
347
+ "description": "The chart, as `adapty analytics catalog` lists it",
348
+ "name": "chart",
349
+ "required": true,
350
+ "hasDynamicHelp": false,
351
+ "multiple": false,
352
+ "type": "option"
353
+ },
354
+ "date-from": {
355
+ "description": "First day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
356
+ "name": "date-from",
357
+ "required": true,
358
+ "hasDynamicHelp": false,
359
+ "multiple": false,
360
+ "type": "option"
361
+ },
362
+ "date-to": {
363
+ "description": "Last day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
364
+ "name": "date-to",
365
+ "required": true,
366
+ "hasDynamicHelp": false,
367
+ "multiple": false,
368
+ "type": "option"
369
+ },
370
+ "compare-from": {
371
+ "description": "First day of a period to compare with, inclusive (YYYY-MM-DD); needs --compare-to",
372
+ "name": "compare-from",
373
+ "hasDynamicHelp": false,
374
+ "multiple": false,
375
+ "type": "option"
376
+ },
377
+ "compare-to": {
378
+ "description": "Last day of a period to compare with, inclusive (YYYY-MM-DD); needs --compare-from",
379
+ "name": "compare-to",
380
+ "hasDynamicHelp": false,
381
+ "multiple": false,
382
+ "type": "option"
383
+ },
384
+ "group-by": {
385
+ "description": "One grouping of this operation, as `adapty analytics catalog` lists it (e.g. country)",
386
+ "name": "group-by",
387
+ "hasDynamicHelp": false,
388
+ "multiple": false,
389
+ "type": "option"
390
+ },
391
+ "filter": {
392
+ "description": "Keep the data whose dimension has one of the values: dimension=value[,value] (repeatable; `\\,` for a comma inside a value; values exactly as written, an empty one too, e.g. country= for no country). Dimensions: `adapty analytics catalog`; values: `adapty analytics values`",
393
+ "name": "filter",
394
+ "hasDynamicHelp": false,
395
+ "multiple": true,
396
+ "type": "option"
397
+ },
398
+ "timezone": {
399
+ "description": "IANA time zone of the days, e.g. Europe/Berlin; the app time zone when omitted",
400
+ "name": "timezone",
401
+ "hasDynamicHelp": false,
402
+ "multiple": false,
403
+ "type": "option"
404
+ },
405
+ "granularity": {
406
+ "description": "The period of one point (default month)",
407
+ "name": "granularity",
408
+ "hasDynamicHelp": false,
409
+ "multiple": false,
410
+ "options": [
411
+ "day",
412
+ "week",
413
+ "month",
414
+ "quarter",
415
+ "year"
416
+ ],
417
+ "type": "option"
418
+ },
419
+ "revenue-basis": {
420
+ "description": "Which revenue the money values use: gross (default), proceeds (after store commission) or net (also after taxes)",
421
+ "name": "revenue-basis",
422
+ "hasDynamicHelp": false,
423
+ "multiple": false,
424
+ "options": [
425
+ "gross",
426
+ "proceeds",
427
+ "net"
428
+ ],
429
+ "type": "option"
430
+ },
431
+ "csv": {
432
+ "description": "Print a CSV table made from the API answer: one row per group, the total first (is_total true; a null key is an empty cell, an empty key is written \"\"); a compared period in compare.* columns of the same row; the numbers of the whole answer in data.* and meta.* columns. No groups: the header line, and \"No data for this period.\" with those numbers on stderr",
433
+ "exclusive": [
434
+ "json"
435
+ ],
436
+ "name": "csv",
437
+ "allowNo": false,
438
+ "type": "boolean"
439
+ }
440
+ },
441
+ "hasDynamicHelp": false,
442
+ "hiddenAliases": [],
443
+ "id": "analytics:chart",
444
+ "pluginAlias": "adapty",
445
+ "pluginName": "adapty",
446
+ "pluginType": "core",
447
+ "strict": true,
448
+ "isESM": true,
449
+ "relativePath": [
450
+ "dist",
451
+ "commands",
452
+ "analytics",
453
+ "chart.js"
454
+ ]
455
+ },
456
+ "analytics:cohort": {
457
+ "aliases": [],
458
+ "args": {},
459
+ "description": "Read the install cohorts of an app: revenue, subscribers and averages of each cohort per renewal (or day), with predictions, the total first (no grouping, no compared period)",
460
+ "examples": [
461
+ "<%= config.bin %> analytics cohort --app APP_UUID --date-from 2026-07-01 --date-to 2026-09-30",
462
+ "<%= config.bin %> analytics cohort --app APP_UUID --date-from 2026-07-01 --date-to 2026-09-30 --granularity week --revenue-basis proceeds --csv"
463
+ ],
464
+ "flags": {
465
+ "json": {
466
+ "description": "Format output as json.",
467
+ "helpGroup": "GLOBAL",
468
+ "name": "json",
469
+ "allowNo": false,
470
+ "type": "boolean"
471
+ },
472
+ "app": {
473
+ "description": "App ID (UUID)",
474
+ "name": "app",
475
+ "required": true,
476
+ "hasDynamicHelp": false,
477
+ "multiple": false,
478
+ "type": "option"
479
+ },
480
+ "date-from": {
481
+ "description": "First day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
482
+ "name": "date-from",
483
+ "required": true,
484
+ "hasDynamicHelp": false,
485
+ "multiple": false,
486
+ "type": "option"
487
+ },
488
+ "date-to": {
489
+ "description": "Last day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
490
+ "name": "date-to",
491
+ "required": true,
492
+ "hasDynamicHelp": false,
493
+ "multiple": false,
494
+ "type": "option"
495
+ },
496
+ "filter": {
497
+ "description": "Keep the data whose dimension has one of the values: dimension=value[,value] (repeatable; `\\,` for a comma inside a value; values exactly as written, an empty one too, e.g. country= for no country). Dimensions: `adapty analytics catalog`; values: `adapty analytics values`",
498
+ "name": "filter",
499
+ "hasDynamicHelp": false,
500
+ "multiple": true,
501
+ "type": "option"
502
+ },
503
+ "timezone": {
504
+ "description": "IANA time zone of the days, e.g. Europe/Berlin; the app time zone when omitted",
505
+ "name": "timezone",
506
+ "hasDynamicHelp": false,
507
+ "multiple": false,
508
+ "type": "option"
509
+ },
510
+ "granularity": {
511
+ "description": "The length of one cohort (default month)",
512
+ "name": "granularity",
513
+ "hasDynamicHelp": false,
514
+ "multiple": false,
515
+ "options": [
516
+ "day",
517
+ "week",
518
+ "month",
519
+ "quarter",
520
+ "year"
521
+ ],
522
+ "type": "option"
523
+ },
524
+ "revenue-basis": {
525
+ "description": "Which revenue the money values use: gross (default), proceeds (after store commission) or net (also after taxes)",
526
+ "name": "revenue-basis",
527
+ "hasDynamicHelp": false,
528
+ "multiple": false,
529
+ "options": [
530
+ "gross",
531
+ "proceeds",
532
+ "net"
533
+ ],
534
+ "type": "option"
535
+ },
536
+ "period-type": {
537
+ "description": "Count per renewal (renewals, default) or per day since the install (days)",
538
+ "name": "period-type",
539
+ "hasDynamicHelp": false,
540
+ "multiple": false,
541
+ "options": [
542
+ "renewals",
543
+ "days"
544
+ ],
545
+ "type": "option"
546
+ },
547
+ "renewal-days": {
548
+ "description": "The days to count with --period-type days (comma-separated or repeatable); the backend list when omitted",
549
+ "name": "renewal-days",
550
+ "delimiter": ",",
551
+ "hasDynamicHelp": false,
552
+ "multiple": true,
553
+ "type": "option"
554
+ },
555
+ "csv": {
556
+ "description": "Print a CSV table made from the API answer: one row per group, the total first (is_total true; a null key is an empty cell, an empty key is written \"\"); a compared period in compare.* columns of the same row; the numbers of the whole answer in data.* and meta.* columns. No groups: the header line, and \"No data for this period.\" with those numbers on stderr",
557
+ "exclusive": [
558
+ "json"
559
+ ],
560
+ "name": "csv",
561
+ "allowNo": false,
562
+ "type": "boolean"
563
+ }
564
+ },
565
+ "hasDynamicHelp": false,
566
+ "hiddenAliases": [],
567
+ "id": "analytics:cohort",
568
+ "pluginAlias": "adapty",
569
+ "pluginName": "adapty",
570
+ "pluginType": "core",
571
+ "strict": true,
572
+ "isESM": true,
573
+ "relativePath": [
574
+ "dist",
575
+ "commands",
576
+ "analytics",
577
+ "cohort.js"
578
+ ]
579
+ },
580
+ "analytics:conversion": {
581
+ "aliases": [],
582
+ "args": {},
583
+ "description": "Read one conversion of the analytics of an app (install → trial, trial → paid, ...): the rate in percent with its two counts, per point and per group, the total first",
584
+ "examples": [
585
+ "<%= config.bin %> analytics conversion --app APP_UUID --conversion trial-paid --date-from 2026-07-01 --date-to 2026-09-30",
586
+ "<%= config.bin %> analytics conversion --app APP_UUID --conversion install-paid --date-from 2026-07-01 --date-to 2026-09-30 --granularity month --group-by country --csv"
587
+ ],
588
+ "flags": {
589
+ "json": {
590
+ "description": "Format output as json.",
591
+ "helpGroup": "GLOBAL",
592
+ "name": "json",
593
+ "allowNo": false,
594
+ "type": "boolean"
595
+ },
596
+ "app": {
597
+ "description": "App ID (UUID)",
598
+ "name": "app",
599
+ "required": true,
600
+ "hasDynamicHelp": false,
601
+ "multiple": false,
602
+ "type": "option"
603
+ },
604
+ "conversion": {
605
+ "description": "The conversion, as `adapty analytics catalog` lists it",
606
+ "name": "conversion",
607
+ "required": true,
608
+ "hasDynamicHelp": false,
609
+ "multiple": false,
610
+ "type": "option"
611
+ },
612
+ "date-from": {
613
+ "description": "First day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
614
+ "name": "date-from",
615
+ "required": true,
616
+ "hasDynamicHelp": false,
617
+ "multiple": false,
618
+ "type": "option"
619
+ },
620
+ "date-to": {
621
+ "description": "Last day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
622
+ "name": "date-to",
623
+ "required": true,
624
+ "hasDynamicHelp": false,
625
+ "multiple": false,
626
+ "type": "option"
627
+ },
628
+ "compare-from": {
629
+ "description": "First day of a period to compare with, inclusive (YYYY-MM-DD); needs --compare-to",
630
+ "name": "compare-from",
631
+ "hasDynamicHelp": false,
632
+ "multiple": false,
633
+ "type": "option"
634
+ },
635
+ "compare-to": {
636
+ "description": "Last day of a period to compare with, inclusive (YYYY-MM-DD); needs --compare-from",
637
+ "name": "compare-to",
638
+ "hasDynamicHelp": false,
639
+ "multiple": false,
640
+ "type": "option"
641
+ },
642
+ "group-by": {
643
+ "description": "One grouping of this operation, as `adapty analytics catalog` lists it (e.g. country)",
644
+ "name": "group-by",
645
+ "hasDynamicHelp": false,
646
+ "multiple": false,
647
+ "type": "option"
648
+ },
649
+ "filter": {
650
+ "description": "Keep the data whose dimension has one of the values: dimension=value[,value] (repeatable; `\\,` for a comma inside a value; values exactly as written, an empty one too, e.g. country= for no country). Dimensions: `adapty analytics catalog`; values: `adapty analytics values`",
651
+ "name": "filter",
652
+ "hasDynamicHelp": false,
653
+ "multiple": true,
654
+ "type": "option"
655
+ },
656
+ "timezone": {
657
+ "description": "IANA time zone of the days, e.g. Europe/Berlin; the app time zone when omitted",
658
+ "name": "timezone",
659
+ "hasDynamicHelp": false,
660
+ "multiple": false,
661
+ "type": "option"
662
+ },
663
+ "granularity": {
664
+ "description": "The period of one point (default day)",
665
+ "name": "granularity",
666
+ "hasDynamicHelp": false,
667
+ "multiple": false,
668
+ "options": [
669
+ "day",
670
+ "week",
671
+ "month",
672
+ "quarter",
673
+ "year"
674
+ ],
675
+ "type": "option"
676
+ },
677
+ "csv": {
678
+ "description": "Print a CSV table made from the API answer: one row per group, the total first (is_total true; a null key is an empty cell, an empty key is written \"\"); a compared period in compare.* columns of the same row; the numbers of the whole answer in data.* and meta.* columns. No groups: the header line, and \"No data for this period.\" with those numbers on stderr",
679
+ "exclusive": [
680
+ "json"
681
+ ],
682
+ "name": "csv",
683
+ "allowNo": false,
684
+ "type": "boolean"
685
+ }
686
+ },
687
+ "hasDynamicHelp": false,
688
+ "hiddenAliases": [],
689
+ "id": "analytics:conversion",
690
+ "pluginAlias": "adapty",
691
+ "pluginName": "adapty",
692
+ "pluginType": "core",
693
+ "strict": true,
694
+ "isESM": true,
695
+ "relativePath": [
696
+ "dist",
697
+ "commands",
698
+ "analytics",
699
+ "conversion.js"
700
+ ]
701
+ },
702
+ "analytics:funnel": {
703
+ "aliases": [],
704
+ "args": {},
705
+ "description": "Read the funnel of an app, from install to renewals: the count at each step, per group, the total first (no compared period: the funnel query cannot keep two periods apart)",
706
+ "examples": [
707
+ "<%= config.bin %> analytics funnel --app APP_UUID --date-from 2026-07-01 --date-to 2026-09-30",
708
+ "<%= config.bin %> analytics funnel --app APP_UUID --date-from 2026-07-01 --date-to 2026-09-30 --group-by country --csv"
709
+ ],
710
+ "flags": {
711
+ "json": {
712
+ "description": "Format output as json.",
713
+ "helpGroup": "GLOBAL",
714
+ "name": "json",
715
+ "allowNo": false,
716
+ "type": "boolean"
717
+ },
718
+ "app": {
719
+ "description": "App ID (UUID)",
720
+ "name": "app",
721
+ "required": true,
722
+ "hasDynamicHelp": false,
723
+ "multiple": false,
724
+ "type": "option"
725
+ },
726
+ "date-from": {
727
+ "description": "First day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
728
+ "name": "date-from",
729
+ "required": true,
730
+ "hasDynamicHelp": false,
731
+ "multiple": false,
732
+ "type": "option"
733
+ },
734
+ "date-to": {
735
+ "description": "Last day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
736
+ "name": "date-to",
737
+ "required": true,
738
+ "hasDynamicHelp": false,
739
+ "multiple": false,
740
+ "type": "option"
741
+ },
742
+ "group-by": {
743
+ "description": "One grouping of this operation, as `adapty analytics catalog` lists it (e.g. country)",
744
+ "name": "group-by",
745
+ "hasDynamicHelp": false,
746
+ "multiple": false,
747
+ "type": "option"
748
+ },
749
+ "filter": {
750
+ "description": "Keep the data whose dimension has one of the values: dimension=value[,value] (repeatable; `\\,` for a comma inside a value; values exactly as written, an empty one too, e.g. country= for no country). Dimensions: `adapty analytics catalog`; values: `adapty analytics values`",
751
+ "name": "filter",
752
+ "hasDynamicHelp": false,
753
+ "multiple": true,
754
+ "type": "option"
755
+ },
756
+ "timezone": {
757
+ "description": "IANA time zone of the days, e.g. Europe/Berlin; the app time zone when omitted",
758
+ "name": "timezone",
759
+ "hasDynamicHelp": false,
760
+ "multiple": false,
761
+ "type": "option"
762
+ },
763
+ "csv": {
764
+ "description": "Print a CSV table made from the API answer: one row per group, the total first (is_total true; a null key is an empty cell, an empty key is written \"\"); a compared period in compare.* columns of the same row; the numbers of the whole answer in data.* and meta.* columns. No groups: the header line, and \"No data for this period.\" with those numbers on stderr",
765
+ "exclusive": [
766
+ "json"
767
+ ],
768
+ "name": "csv",
769
+ "allowNo": false,
770
+ "type": "boolean"
771
+ }
772
+ },
773
+ "hasDynamicHelp": false,
774
+ "hiddenAliases": [],
775
+ "id": "analytics:funnel",
776
+ "pluginAlias": "adapty",
777
+ "pluginName": "adapty",
778
+ "pluginType": "core",
779
+ "strict": true,
780
+ "isESM": true,
781
+ "relativePath": [
782
+ "dist",
783
+ "commands",
784
+ "analytics",
785
+ "funnel.js"
786
+ ]
787
+ },
788
+ "analytics:ltv": {
789
+ "aliases": [],
790
+ "args": {},
791
+ "description": "Read the LTV of an app: the revenue per paying user after each renewal (or day), per group, the total first (no compared period)",
792
+ "examples": [
793
+ "<%= config.bin %> analytics ltv --app APP_UUID --date-from 2026-07-01 --date-to 2026-09-30",
794
+ "<%= config.bin %> analytics ltv --app APP_UUID --date-from 2026-07-01 --date-to 2026-09-30 --revenue-basis net --period-type days --renewal-days 7,30,90 --csv"
795
+ ],
796
+ "flags": {
797
+ "json": {
798
+ "description": "Format output as json.",
799
+ "helpGroup": "GLOBAL",
800
+ "name": "json",
801
+ "allowNo": false,
802
+ "type": "boolean"
803
+ },
804
+ "app": {
805
+ "description": "App ID (UUID)",
806
+ "name": "app",
807
+ "required": true,
808
+ "hasDynamicHelp": false,
809
+ "multiple": false,
810
+ "type": "option"
811
+ },
812
+ "date-from": {
813
+ "description": "First day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
814
+ "name": "date-from",
815
+ "required": true,
816
+ "hasDynamicHelp": false,
817
+ "multiple": false,
818
+ "type": "option"
819
+ },
820
+ "date-to": {
821
+ "description": "Last day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
822
+ "name": "date-to",
823
+ "required": true,
824
+ "hasDynamicHelp": false,
825
+ "multiple": false,
826
+ "type": "option"
827
+ },
828
+ "group-by": {
829
+ "description": "One grouping of this operation, as `adapty analytics catalog` lists it (e.g. country)",
830
+ "name": "group-by",
831
+ "hasDynamicHelp": false,
832
+ "multiple": false,
833
+ "type": "option"
834
+ },
835
+ "filter": {
836
+ "description": "Keep the data whose dimension has one of the values: dimension=value[,value] (repeatable; `\\,` for a comma inside a value; values exactly as written, an empty one too, e.g. country= for no country). Dimensions: `adapty analytics catalog`; values: `adapty analytics values`",
837
+ "name": "filter",
838
+ "hasDynamicHelp": false,
839
+ "multiple": true,
840
+ "type": "option"
841
+ },
842
+ "timezone": {
843
+ "description": "IANA time zone of the days, e.g. Europe/Berlin; the app time zone when omitted",
844
+ "name": "timezone",
845
+ "hasDynamicHelp": false,
846
+ "multiple": false,
847
+ "type": "option"
848
+ },
849
+ "revenue-basis": {
850
+ "description": "Which revenue the money values use: gross (default), proceeds (after store commission) or net (also after taxes)",
851
+ "name": "revenue-basis",
852
+ "hasDynamicHelp": false,
853
+ "multiple": false,
854
+ "options": [
855
+ "gross",
856
+ "proceeds",
857
+ "net"
858
+ ],
859
+ "type": "option"
860
+ },
861
+ "period-type": {
862
+ "description": "Count per renewal (renewals, default) or per day since the install (days)",
863
+ "name": "period-type",
864
+ "hasDynamicHelp": false,
865
+ "multiple": false,
866
+ "options": [
867
+ "renewals",
868
+ "days"
869
+ ],
870
+ "type": "option"
871
+ },
872
+ "renewal-days": {
873
+ "description": "The days to count with --period-type days (comma-separated or repeatable); the backend list when omitted",
874
+ "name": "renewal-days",
875
+ "delimiter": ",",
876
+ "hasDynamicHelp": false,
877
+ "multiple": true,
878
+ "type": "option"
879
+ },
880
+ "csv": {
881
+ "description": "Print a CSV table made from the API answer: one row per group, the total first (is_total true; a null key is an empty cell, an empty key is written \"\"); a compared period in compare.* columns of the same row; the numbers of the whole answer in data.* and meta.* columns. No groups: the header line, and \"No data for this period.\" with those numbers on stderr",
882
+ "exclusive": [
883
+ "json"
884
+ ],
885
+ "name": "csv",
886
+ "allowNo": false,
887
+ "type": "boolean"
888
+ }
889
+ },
890
+ "hasDynamicHelp": false,
891
+ "hiddenAliases": [],
892
+ "id": "analytics:ltv",
893
+ "pluginAlias": "adapty",
894
+ "pluginName": "adapty",
895
+ "pluginType": "core",
896
+ "strict": true,
897
+ "isESM": true,
898
+ "relativePath": [
899
+ "dist",
900
+ "commands",
901
+ "analytics",
902
+ "ltv.js"
903
+ ]
904
+ },
905
+ "analytics:retention": {
906
+ "aliases": [],
907
+ "args": {},
908
+ "description": "Read the retention of an app: the subscribers left in each period, per group, the total first (no compared period)",
909
+ "examples": [
910
+ "<%= config.bin %> analytics retention --app APP_UUID --date-from 2026-07-01 --date-to 2026-09-30",
911
+ "<%= config.bin %> analytics retention --app APP_UUID --date-from 2026-07-01 --date-to 2026-09-30 --group-by country --use-trial --csv"
912
+ ],
913
+ "flags": {
914
+ "json": {
915
+ "description": "Format output as json.",
916
+ "helpGroup": "GLOBAL",
917
+ "name": "json",
918
+ "allowNo": false,
919
+ "type": "boolean"
920
+ },
921
+ "app": {
922
+ "description": "App ID (UUID)",
923
+ "name": "app",
924
+ "required": true,
925
+ "hasDynamicHelp": false,
926
+ "multiple": false,
927
+ "type": "option"
928
+ },
929
+ "date-from": {
930
+ "description": "First day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
931
+ "name": "date-from",
932
+ "required": true,
933
+ "hasDynamicHelp": false,
934
+ "multiple": false,
935
+ "type": "option"
936
+ },
937
+ "date-to": {
938
+ "description": "Last day of the period, inclusive (YYYY-MM-DD, in the --timezone zone, else the app time zone)",
939
+ "name": "date-to",
940
+ "required": true,
941
+ "hasDynamicHelp": false,
942
+ "multiple": false,
943
+ "type": "option"
944
+ },
945
+ "group-by": {
946
+ "description": "One grouping of this operation, as `adapty analytics catalog` lists it (e.g. country)",
947
+ "name": "group-by",
948
+ "hasDynamicHelp": false,
949
+ "multiple": false,
950
+ "type": "option"
951
+ },
952
+ "filter": {
953
+ "description": "Keep the data whose dimension has one of the values: dimension=value[,value] (repeatable; `\\,` for a comma inside a value; values exactly as written, an empty one too, e.g. country= for no country). Dimensions: `adapty analytics catalog`; values: `adapty analytics values`",
954
+ "name": "filter",
955
+ "hasDynamicHelp": false,
956
+ "multiple": true,
957
+ "type": "option"
958
+ },
959
+ "timezone": {
960
+ "description": "IANA time zone of the days, e.g. Europe/Berlin; the app time zone when omitted",
961
+ "name": "timezone",
962
+ "hasDynamicHelp": false,
963
+ "multiple": false,
964
+ "type": "option"
965
+ },
966
+ "use-trial": {
967
+ "description": "Count from the trial, not from the first paid period",
968
+ "name": "use-trial",
969
+ "allowNo": false,
970
+ "type": "boolean"
971
+ },
972
+ "csv": {
973
+ "description": "Print a CSV table made from the API answer: one row per group, the total first (is_total true; a null key is an empty cell, an empty key is written \"\"); a compared period in compare.* columns of the same row; the numbers of the whole answer in data.* and meta.* columns. No groups: the header line, and \"No data for this period.\" with those numbers on stderr",
974
+ "exclusive": [
975
+ "json"
976
+ ],
977
+ "name": "csv",
978
+ "allowNo": false,
979
+ "type": "boolean"
980
+ }
981
+ },
982
+ "hasDynamicHelp": false,
983
+ "hiddenAliases": [],
984
+ "id": "analytics:retention",
985
+ "pluginAlias": "adapty",
986
+ "pluginName": "adapty",
987
+ "pluginType": "core",
988
+ "strict": true,
989
+ "isESM": true,
990
+ "relativePath": [
991
+ "dist",
992
+ "commands",
993
+ "analytics",
994
+ "retention.js"
995
+ ]
996
+ },
997
+ "analytics:values": {
998
+ "aliases": [],
999
+ "args": {},
1000
+ "description": "List the values one analytics filter takes for an app: what --filter accepts",
1001
+ "examples": [
1002
+ "<%= config.bin %> analytics values --app APP_UUID --dimension country",
1003
+ "<%= config.bin %> analytics values --app APP_UUID --dimension store_product_id --json"
1004
+ ],
1005
+ "flags": {
1006
+ "json": {
1007
+ "description": "Format output as json.",
1008
+ "helpGroup": "GLOBAL",
1009
+ "name": "json",
1010
+ "allowNo": false,
1011
+ "type": "boolean"
1012
+ },
1013
+ "app": {
1014
+ "description": "App ID (UUID)",
1015
+ "name": "app",
1016
+ "required": true,
1017
+ "hasDynamicHelp": false,
1018
+ "multiple": false,
1019
+ "type": "option"
1020
+ },
1021
+ "dimension": {
1022
+ "description": "A filter dimension, as `adapty analytics catalog` lists it under Dimensions",
1023
+ "name": "dimension",
1024
+ "required": true,
1025
+ "hasDynamicHelp": false,
1026
+ "multiple": false,
1027
+ "type": "option"
1028
+ }
1029
+ },
1030
+ "hasDynamicHelp": false,
1031
+ "hiddenAliases": [],
1032
+ "id": "analytics:values",
1033
+ "pluginAlias": "adapty",
1034
+ "pluginName": "adapty",
1035
+ "pluginType": "core",
1036
+ "strict": true,
1037
+ "isESM": true,
1038
+ "relativePath": [
1039
+ "dist",
1040
+ "commands",
1041
+ "analytics",
1042
+ "values.js"
1043
+ ]
1044
+ },
281
1045
  "apps:create": {
282
1046
  "aliases": [],
283
1047
  "args": {},
@@ -2357,17 +3121,288 @@
2357
3121
  },
2358
3122
  "hasDynamicHelp": false,
2359
3123
  "hiddenAliases": [],
2360
- "id": "placements:update",
3124
+ "id": "placements:update",
3125
+ "pluginAlias": "adapty",
3126
+ "pluginName": "adapty",
3127
+ "pluginType": "core",
3128
+ "strict": true,
3129
+ "enableJsonFlag": true,
3130
+ "isESM": true,
3131
+ "relativePath": [
3132
+ "dist",
3133
+ "commands",
3134
+ "placements",
3135
+ "update.js"
3136
+ ]
3137
+ },
3138
+ "product-offers:create": {
3139
+ "aliases": [],
3140
+ "args": {},
3141
+ "description": "Create an offer for a product",
3142
+ "examples": [
3143
+ "<%= config.bin %> product-offers create --app 550e8400-... --product 660e8400-... --title \"Spring\" --type promotional --ios-offer-id spring_ios --android-offer-id spring-android",
3144
+ "<%= config.bin %> product-offers create --app 550e8400-... --product 660e8400-... --title \"Come back\" --type win_back --ios-offer-id winback_ios"
3145
+ ],
3146
+ "flags": {
3147
+ "json": {
3148
+ "description": "Format output as json.",
3149
+ "helpGroup": "GLOBAL",
3150
+ "name": "json",
3151
+ "allowNo": false,
3152
+ "type": "boolean"
3153
+ },
3154
+ "app": {
3155
+ "description": "App ID (UUID)",
3156
+ "name": "app",
3157
+ "required": true,
3158
+ "hasDynamicHelp": false,
3159
+ "multiple": false,
3160
+ "type": "option"
3161
+ },
3162
+ "product": {
3163
+ "description": "Product ID (UUID)",
3164
+ "name": "product",
3165
+ "required": true,
3166
+ "hasDynamicHelp": false,
3167
+ "multiple": false,
3168
+ "type": "option"
3169
+ },
3170
+ "title": {
3171
+ "description": "Offer title",
3172
+ "name": "title",
3173
+ "required": true,
3174
+ "hasDynamicHelp": false,
3175
+ "multiple": false,
3176
+ "type": "option"
3177
+ },
3178
+ "type": {
3179
+ "description": "Offer type (win_back is App Store only)",
3180
+ "name": "type",
3181
+ "required": true,
3182
+ "hasDynamicHelp": false,
3183
+ "multiple": false,
3184
+ "options": [
3185
+ "promotional",
3186
+ "win_back"
3187
+ ],
3188
+ "type": "option"
3189
+ },
3190
+ "ios-offer-id": {
3191
+ "description": "App Store offer ID",
3192
+ "name": "ios-offer-id",
3193
+ "hasDynamicHelp": false,
3194
+ "multiple": false,
3195
+ "type": "option"
3196
+ },
3197
+ "android-offer-id": {
3198
+ "description": "Google Play offer ID",
3199
+ "name": "android-offer-id",
3200
+ "hasDynamicHelp": false,
3201
+ "multiple": false,
3202
+ "type": "option"
3203
+ }
3204
+ },
3205
+ "hasDynamicHelp": false,
3206
+ "hiddenAliases": [],
3207
+ "id": "product-offers:create",
3208
+ "pluginAlias": "adapty",
3209
+ "pluginName": "adapty",
3210
+ "pluginType": "core",
3211
+ "strict": true,
3212
+ "isESM": true,
3213
+ "relativePath": [
3214
+ "dist",
3215
+ "commands",
3216
+ "product-offers",
3217
+ "create.js"
3218
+ ]
3219
+ },
3220
+ "product-offers:get": {
3221
+ "aliases": [],
3222
+ "args": {
3223
+ "offer_id": {
3224
+ "description": "Offer ID (UUID)",
3225
+ "name": "offer_id",
3226
+ "required": true
3227
+ }
3228
+ },
3229
+ "description": "Get a product offer",
3230
+ "examples": [
3231
+ "<%= config.bin %> product-offers get 770e8400-... --app 550e8400-..."
3232
+ ],
3233
+ "flags": {
3234
+ "json": {
3235
+ "description": "Format output as json.",
3236
+ "helpGroup": "GLOBAL",
3237
+ "name": "json",
3238
+ "allowNo": false,
3239
+ "type": "boolean"
3240
+ },
3241
+ "app": {
3242
+ "description": "App ID (UUID)",
3243
+ "name": "app",
3244
+ "required": true,
3245
+ "hasDynamicHelp": false,
3246
+ "multiple": false,
3247
+ "type": "option"
3248
+ }
3249
+ },
3250
+ "hasDynamicHelp": false,
3251
+ "hiddenAliases": [],
3252
+ "id": "product-offers:get",
3253
+ "pluginAlias": "adapty",
3254
+ "pluginName": "adapty",
3255
+ "pluginType": "core",
3256
+ "strict": true,
3257
+ "isESM": true,
3258
+ "relativePath": [
3259
+ "dist",
3260
+ "commands",
3261
+ "product-offers",
3262
+ "get.js"
3263
+ ]
3264
+ },
3265
+ "product-offers:list": {
3266
+ "aliases": [],
3267
+ "args": {},
3268
+ "description": "List the offers of a product (all on one page)",
3269
+ "examples": [
3270
+ "<%= config.bin %> product-offers list --app 550e8400-... --product 660e8400-..."
3271
+ ],
3272
+ "flags": {
3273
+ "json": {
3274
+ "description": "Format output as json.",
3275
+ "helpGroup": "GLOBAL",
3276
+ "name": "json",
3277
+ "allowNo": false,
3278
+ "type": "boolean"
3279
+ },
3280
+ "app": {
3281
+ "description": "App ID (UUID)",
3282
+ "name": "app",
3283
+ "required": true,
3284
+ "hasDynamicHelp": false,
3285
+ "multiple": false,
3286
+ "type": "option"
3287
+ },
3288
+ "product": {
3289
+ "description": "Product ID (UUID)",
3290
+ "name": "product",
3291
+ "required": true,
3292
+ "hasDynamicHelp": false,
3293
+ "multiple": false,
3294
+ "type": "option"
3295
+ }
3296
+ },
3297
+ "hasDynamicHelp": false,
3298
+ "hiddenAliases": [],
3299
+ "id": "product-offers:list",
3300
+ "pluginAlias": "adapty",
3301
+ "pluginName": "adapty",
3302
+ "pluginType": "core",
3303
+ "strict": true,
3304
+ "isESM": true,
3305
+ "relativePath": [
3306
+ "dist",
3307
+ "commands",
3308
+ "product-offers",
3309
+ "list.js"
3310
+ ]
3311
+ },
3312
+ "product-offers:update": {
3313
+ "aliases": [],
3314
+ "args": {
3315
+ "offer_id": {
3316
+ "description": "Offer ID (UUID)",
3317
+ "name": "offer_id",
3318
+ "required": true
3319
+ }
3320
+ },
3321
+ "description": "Reads the offer and writes it back whole: fields you leave out keep their stored value, a change made in the dashboard in between is overwritten, and at least one store offer id must remain.",
3322
+ "examples": [
3323
+ "<%= config.bin %> product-offers update 770e8400-... --app 550e8400-... --title \"Spring 2\"",
3324
+ "<%= config.bin %> product-offers update 770e8400-... --app 550e8400-... --clear-android-offer-id"
3325
+ ],
3326
+ "flags": {
3327
+ "json": {
3328
+ "description": "Format output as json.",
3329
+ "helpGroup": "GLOBAL",
3330
+ "name": "json",
3331
+ "allowNo": false,
3332
+ "type": "boolean"
3333
+ },
3334
+ "app": {
3335
+ "description": "App ID (UUID)",
3336
+ "name": "app",
3337
+ "required": true,
3338
+ "hasDynamicHelp": false,
3339
+ "multiple": false,
3340
+ "type": "option"
3341
+ },
3342
+ "title": {
3343
+ "description": "Offer title",
3344
+ "name": "title",
3345
+ "hasDynamicHelp": false,
3346
+ "multiple": false,
3347
+ "type": "option"
3348
+ },
3349
+ "type": {
3350
+ "description": "Offer type (win_back is App Store only: clear the Google Play side too)",
3351
+ "name": "type",
3352
+ "hasDynamicHelp": false,
3353
+ "multiple": false,
3354
+ "options": [
3355
+ "promotional",
3356
+ "win_back"
3357
+ ],
3358
+ "type": "option"
3359
+ },
3360
+ "ios-offer-id": {
3361
+ "description": "App Store offer ID",
3362
+ "exclusive": [
3363
+ "clear-ios-offer-id"
3364
+ ],
3365
+ "name": "ios-offer-id",
3366
+ "hasDynamicHelp": false,
3367
+ "multiple": false,
3368
+ "type": "option"
3369
+ },
3370
+ "android-offer-id": {
3371
+ "description": "Google Play offer ID",
3372
+ "exclusive": [
3373
+ "clear-android-offer-id"
3374
+ ],
3375
+ "name": "android-offer-id",
3376
+ "hasDynamicHelp": false,
3377
+ "multiple": false,
3378
+ "type": "option"
3379
+ },
3380
+ "clear-ios-offer-id": {
3381
+ "description": "Remove the App Store side of the offer",
3382
+ "name": "clear-ios-offer-id",
3383
+ "allowNo": false,
3384
+ "type": "boolean"
3385
+ },
3386
+ "clear-android-offer-id": {
3387
+ "description": "Remove the Google Play side of the offer",
3388
+ "name": "clear-android-offer-id",
3389
+ "allowNo": false,
3390
+ "type": "boolean"
3391
+ }
3392
+ },
3393
+ "hasDynamicHelp": false,
3394
+ "hiddenAliases": [],
3395
+ "id": "product-offers:update",
2361
3396
  "pluginAlias": "adapty",
2362
3397
  "pluginName": "adapty",
2363
3398
  "pluginType": "core",
2364
3399
  "strict": true,
2365
- "enableJsonFlag": true,
3400
+ "summary": "Update a product offer",
2366
3401
  "isESM": true,
2367
3402
  "relativePath": [
2368
3403
  "dist",
2369
3404
  "commands",
2370
- "placements",
3405
+ "product-offers",
2371
3406
  "update.js"
2372
3407
  ]
2373
3408
  },
@@ -5988,12 +7023,13 @@
5988
7023
  "list.js"
5989
7024
  ]
5990
7025
  },
5991
- "asa:orgs:list": {
7026
+ "asa:product-pages:list": {
5992
7027
  "aliases": [],
5993
7028
  "args": {},
5994
- "description": "List the Apple Search Ads organizations this company can spend from",
7029
+ "description": "List custom product pages (read-only; authoring stays in App Store Connect)",
5995
7030
  "examples": [
5996
- "<%= config.bin %> asa orgs list"
7031
+ "<%= config.bin %> asa product-pages list",
7032
+ "<%= config.bin %> asa product-pages list --app APP_UUID"
5997
7033
  ],
5998
7034
  "flags": {
5999
7035
  "json": {
@@ -6018,11 +7054,25 @@
6018
7054
  "hasDynamicHelp": false,
6019
7055
  "multiple": false,
6020
7056
  "type": "option"
7057
+ },
7058
+ "app": {
7059
+ "description": "Keep only rows in this app; repeatable",
7060
+ "name": "app",
7061
+ "hasDynamicHelp": false,
7062
+ "multiple": true,
7063
+ "type": "option"
7064
+ },
7065
+ "campaign-group": {
7066
+ "description": "Keep only rows in this campaign group; repeatable",
7067
+ "name": "campaign-group",
7068
+ "hasDynamicHelp": false,
7069
+ "multiple": true,
7070
+ "type": "option"
6021
7071
  }
6022
7072
  },
6023
7073
  "hasDynamicHelp": false,
6024
7074
  "hiddenAliases": [],
6025
- "id": "asa:orgs:list",
7075
+ "id": "asa:product-pages:list",
6026
7076
  "pluginAlias": "adapty",
6027
7077
  "pluginName": "adapty",
6028
7078
  "pluginType": "core",
@@ -6033,10 +7083,65 @@
6033
7083
  "dist",
6034
7084
  "commands",
6035
7085
  "asa",
6036
- "orgs",
7086
+ "product-pages",
6037
7087
  "list.js"
6038
7088
  ]
6039
7089
  },
7090
+ "asa:product-pages:sync": {
7091
+ "aliases": [],
7092
+ "args": {},
7093
+ "description": "Refresh custom product pages from Apple",
7094
+ "examples": [
7095
+ "<%= config.bin %> asa product-pages sync",
7096
+ "<%= config.bin %> asa product-pages sync --adam-id 123456"
7097
+ ],
7098
+ "flags": {
7099
+ "json": {
7100
+ "description": "Format output as json.",
7101
+ "helpGroup": "GLOBAL",
7102
+ "name": "json",
7103
+ "allowNo": false,
7104
+ "type": "boolean"
7105
+ },
7106
+ "yes": {
7107
+ "char": "y",
7108
+ "description": "Apply without asking; required when the output is piped or --json is used",
7109
+ "name": "yes",
7110
+ "allowNo": false,
7111
+ "type": "boolean"
7112
+ },
7113
+ "idempotency-key": {
7114
+ "description": "Idempotency key for this write; re-running with the same key replays the stored result instead of applying twice",
7115
+ "name": "idempotency-key",
7116
+ "hasDynamicHelp": false,
7117
+ "multiple": false,
7118
+ "type": "option"
7119
+ },
7120
+ "adam-id": {
7121
+ "description": "Limit the refresh to one app; omit to cover every app",
7122
+ "name": "adam-id",
7123
+ "hasDynamicHelp": false,
7124
+ "multiple": false,
7125
+ "type": "option"
7126
+ }
7127
+ },
7128
+ "hasDynamicHelp": false,
7129
+ "hiddenAliases": [],
7130
+ "id": "asa:product-pages:sync",
7131
+ "pluginAlias": "adapty",
7132
+ "pluginName": "adapty",
7133
+ "pluginType": "core",
7134
+ "strict": true,
7135
+ "enableJsonFlag": true,
7136
+ "isESM": true,
7137
+ "relativePath": [
7138
+ "dist",
7139
+ "commands",
7140
+ "asa",
7141
+ "product-pages",
7142
+ "sync.js"
7143
+ ]
7144
+ },
6040
7145
  "asa:search-terms:list": {
6041
7146
  "aliases": [],
6042
7147
  "args": {},
@@ -6136,6 +7241,55 @@
6136
7241
  "list.js"
6137
7242
  ]
6138
7243
  },
7244
+ "asa:orgs:list": {
7245
+ "aliases": [],
7246
+ "args": {},
7247
+ "description": "List the Apple Search Ads organizations this company can spend from",
7248
+ "examples": [
7249
+ "<%= config.bin %> asa orgs list"
7250
+ ],
7251
+ "flags": {
7252
+ "json": {
7253
+ "description": "Format output as json.",
7254
+ "helpGroup": "GLOBAL",
7255
+ "name": "json",
7256
+ "allowNo": false,
7257
+ "type": "boolean"
7258
+ },
7259
+ "page": {
7260
+ "description": "Page number",
7261
+ "name": "page",
7262
+ "default": 1,
7263
+ "hasDynamicHelp": false,
7264
+ "multiple": false,
7265
+ "type": "option"
7266
+ },
7267
+ "page-size": {
7268
+ "description": "Items per page (max 1000); prefer one big page over a pagination loop",
7269
+ "name": "page-size",
7270
+ "default": 100,
7271
+ "hasDynamicHelp": false,
7272
+ "multiple": false,
7273
+ "type": "option"
7274
+ }
7275
+ },
7276
+ "hasDynamicHelp": false,
7277
+ "hiddenAliases": [],
7278
+ "id": "asa:orgs:list",
7279
+ "pluginAlias": "adapty",
7280
+ "pluginName": "adapty",
7281
+ "pluginType": "core",
7282
+ "strict": true,
7283
+ "enableJsonFlag": true,
7284
+ "isESM": true,
7285
+ "relativePath": [
7286
+ "dist",
7287
+ "commands",
7288
+ "asa",
7289
+ "orgs",
7290
+ "list.js"
7291
+ ]
7292
+ },
6139
7293
  "asa:segments:create": {
6140
7294
  "aliases": [],
6141
7295
  "args": {},
@@ -6367,125 +7521,6 @@
6367
7521
  "update.js"
6368
7522
  ]
6369
7523
  },
6370
- "asa:product-pages:list": {
6371
- "aliases": [],
6372
- "args": {},
6373
- "description": "List custom product pages (read-only; authoring stays in App Store Connect)",
6374
- "examples": [
6375
- "<%= config.bin %> asa product-pages list",
6376
- "<%= config.bin %> asa product-pages list --app APP_UUID"
6377
- ],
6378
- "flags": {
6379
- "json": {
6380
- "description": "Format output as json.",
6381
- "helpGroup": "GLOBAL",
6382
- "name": "json",
6383
- "allowNo": false,
6384
- "type": "boolean"
6385
- },
6386
- "page": {
6387
- "description": "Page number",
6388
- "name": "page",
6389
- "default": 1,
6390
- "hasDynamicHelp": false,
6391
- "multiple": false,
6392
- "type": "option"
6393
- },
6394
- "page-size": {
6395
- "description": "Items per page (max 1000); prefer one big page over a pagination loop",
6396
- "name": "page-size",
6397
- "default": 100,
6398
- "hasDynamicHelp": false,
6399
- "multiple": false,
6400
- "type": "option"
6401
- },
6402
- "app": {
6403
- "description": "Keep only rows in this app; repeatable",
6404
- "name": "app",
6405
- "hasDynamicHelp": false,
6406
- "multiple": true,
6407
- "type": "option"
6408
- },
6409
- "campaign-group": {
6410
- "description": "Keep only rows in this campaign group; repeatable",
6411
- "name": "campaign-group",
6412
- "hasDynamicHelp": false,
6413
- "multiple": true,
6414
- "type": "option"
6415
- }
6416
- },
6417
- "hasDynamicHelp": false,
6418
- "hiddenAliases": [],
6419
- "id": "asa:product-pages:list",
6420
- "pluginAlias": "adapty",
6421
- "pluginName": "adapty",
6422
- "pluginType": "core",
6423
- "strict": true,
6424
- "enableJsonFlag": true,
6425
- "isESM": true,
6426
- "relativePath": [
6427
- "dist",
6428
- "commands",
6429
- "asa",
6430
- "product-pages",
6431
- "list.js"
6432
- ]
6433
- },
6434
- "asa:product-pages:sync": {
6435
- "aliases": [],
6436
- "args": {},
6437
- "description": "Refresh custom product pages from Apple",
6438
- "examples": [
6439
- "<%= config.bin %> asa product-pages sync",
6440
- "<%= config.bin %> asa product-pages sync --adam-id 123456"
6441
- ],
6442
- "flags": {
6443
- "json": {
6444
- "description": "Format output as json.",
6445
- "helpGroup": "GLOBAL",
6446
- "name": "json",
6447
- "allowNo": false,
6448
- "type": "boolean"
6449
- },
6450
- "yes": {
6451
- "char": "y",
6452
- "description": "Apply without asking; required when the output is piped or --json is used",
6453
- "name": "yes",
6454
- "allowNo": false,
6455
- "type": "boolean"
6456
- },
6457
- "idempotency-key": {
6458
- "description": "Idempotency key for this write; re-running with the same key replays the stored result instead of applying twice",
6459
- "name": "idempotency-key",
6460
- "hasDynamicHelp": false,
6461
- "multiple": false,
6462
- "type": "option"
6463
- },
6464
- "adam-id": {
6465
- "description": "Limit the refresh to one app; omit to cover every app",
6466
- "name": "adam-id",
6467
- "hasDynamicHelp": false,
6468
- "multiple": false,
6469
- "type": "option"
6470
- }
6471
- },
6472
- "hasDynamicHelp": false,
6473
- "hiddenAliases": [],
6474
- "id": "asa:product-pages:sync",
6475
- "pluginAlias": "adapty",
6476
- "pluginName": "adapty",
6477
- "pluginType": "core",
6478
- "strict": true,
6479
- "enableJsonFlag": true,
6480
- "isESM": true,
6481
- "relativePath": [
6482
- "dist",
6483
- "commands",
6484
- "asa",
6485
- "product-pages",
6486
- "sync.js"
6487
- ]
6488
- },
6489
7524
  "flows:config:get": {
6490
7525
  "aliases": [],
6491
7526
  "args": {
@@ -6790,5 +7825,5 @@
6790
7825
  ]
6791
7826
  }
6792
7827
  },
6793
- "version": "0.11.0"
7828
+ "version": "0.13.0"
6794
7829
  }