@alva-ai/toolkit 0.4.2 → 0.7.0-beta.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.
package/dist/index.js CHANGED
@@ -209,6 +209,25 @@ var DeployResource = class {
209
209
  `/api/v1/deploy/cronjob/${params.id}/resume`
210
210
  );
211
211
  }
212
+ /**
213
+ * Fire the cronjob workflow once, immediately, bypassing the schedule.
214
+ * Async — returns the Hatchet workflow run id at enqueue. The
215
+ * `cronjob_runs` row appears only after the worker finishes the run;
216
+ * callers verify completion by polling `listRuns({cronjob_id})` and
217
+ * matching `runs[].workflow_run_id` against the returned id.
218
+ *
219
+ * Surfaces backend status as HTTP errors (handled by AlvaClient):
220
+ * - 404 not found / cross-user
221
+ * - 412 cronjob is paused (resume before triggering)
222
+ * - 503 worker workflow handle not yet connected (startup race)
223
+ */
224
+ async trigger(params) {
225
+ this.client._requireAuth();
226
+ return this.client._request(
227
+ "POST",
228
+ `/api/v1/deploy/cronjob/${params.id}/trigger`
229
+ );
230
+ }
212
231
  async listRuns(params) {
213
232
  this.client._requireAuth();
214
233
  return this.client._request(
@@ -255,7 +274,8 @@ var ReleaseResource = class {
255
274
  display_name: params.display_name,
256
275
  description: params.description,
257
276
  feeds: params.feeds,
258
- trading_symbols: params.trading_symbols
277
+ trading_symbols: params.trading_symbols,
278
+ template_id: params.template_id
259
279
  }
260
280
  });
261
281
  }
@@ -266,7 +286,8 @@ var ReleaseResource = class {
266
286
  name: params.name,
267
287
  version: params.version,
268
288
  feeds: params.feeds,
269
- changelog: params.changelog
289
+ changelog: params.changelog,
290
+ readme_url: params.readme_url
270
291
  }
271
292
  });
272
293
  }
@@ -339,8 +360,1060 @@ var SdkDocsResource = class {
339
360
  }
340
361
  };
341
362
 
342
- // src/resources/skills.ts
343
- var SkillsResource = class {
363
+ // src/resources/skillTiers.ts
364
+ var SKILL_ENDPOINT_METADATA = [
365
+ {
366
+ skill: "arrays-data-api-spot-market-price-and-volume",
367
+ file: "crypto-detail",
368
+ method: "GET",
369
+ path: "/api/v1/crypto/detail",
370
+ tier: "public",
371
+ required_subscription_tier: "free",
372
+ access: "free_and_pro",
373
+ pro_required: false
374
+ },
375
+ {
376
+ skill: "arrays-data-api-crypto-metrics-and-screener",
377
+ file: "fear-greed-index",
378
+ method: "GET",
379
+ path: "/api/v1/crypto/fear-greed-index",
380
+ tier: "public",
381
+ required_subscription_tier: "free",
382
+ access: "free_and_pro",
383
+ pro_required: false
384
+ },
385
+ {
386
+ skill: "arrays-data-api-crypto-futures-data",
387
+ file: "funding-rate",
388
+ method: "GET",
389
+ path: "/api/v1/crypto/funding-rate",
390
+ tier: "public",
391
+ required_subscription_tier: "free",
392
+ access: "free_and_pro",
393
+ pro_required: false
394
+ },
395
+ {
396
+ skill: "arrays-data-api-spot-market-price-and-volume",
397
+ file: "crypto-futures-ohlcv",
398
+ method: "GET",
399
+ path: "/api/v1/crypto/futures/ohlcv",
400
+ tier: "public",
401
+ required_subscription_tier: "free",
402
+ access: "free_and_pro",
403
+ pro_required: false
404
+ },
405
+ {
406
+ skill: "arrays-data-api-spot-market-price-and-volume",
407
+ file: "crypto-kline",
408
+ method: "GET",
409
+ path: "/api/v1/crypto/kline",
410
+ tier: "public",
411
+ required_subscription_tier: "free",
412
+ access: "free_and_pro",
413
+ pro_required: false
414
+ },
415
+ {
416
+ skill: "arrays-data-api-crypto-metrics-and-screener",
417
+ file: "list",
418
+ method: "GET",
419
+ path: "/api/v1/crypto/list",
420
+ tier: "public",
421
+ required_subscription_tier: "free",
422
+ access: "free_and_pro",
423
+ pro_required: false
424
+ },
425
+ {
426
+ skill: "arrays-data-api-crypto-futures-data",
427
+ file: "long-short-ratio",
428
+ method: "GET",
429
+ path: "/api/v1/crypto/long-short-ratio",
430
+ tier: "public",
431
+ required_subscription_tier: "free",
432
+ access: "free_and_pro",
433
+ pro_required: false
434
+ },
435
+ {
436
+ skill: "arrays-data-api-crypto-metrics-and-screener",
437
+ file: "crypto-market-cap",
438
+ method: "GET",
439
+ path: "/api/v1/crypto/market-cap",
440
+ tier: "public",
441
+ required_subscription_tier: "free",
442
+ access: "free_and_pro",
443
+ pro_required: false
444
+ },
445
+ {
446
+ skill: "arrays-data-api-crypto-metrics-and-screener",
447
+ file: "market-metrics",
448
+ method: "GET",
449
+ path: "/api/v1/crypto/market-metrics",
450
+ tier: "public",
451
+ required_subscription_tier: "free",
452
+ access: "free_and_pro",
453
+ pro_required: false
454
+ },
455
+ {
456
+ skill: "arrays-data-api-spot-market-price-and-volume",
457
+ file: "crypto-ohlcv",
458
+ method: "GET",
459
+ path: "/api/v1/crypto/ohlcv",
460
+ tier: "public",
461
+ required_subscription_tier: "free",
462
+ access: "free_and_pro",
463
+ pro_required: false
464
+ },
465
+ {
466
+ skill: "arrays-data-api-crypto-futures-data",
467
+ file: "open-interest",
468
+ method: "GET",
469
+ path: "/api/v1/crypto/open-interest",
470
+ tier: "public",
471
+ required_subscription_tier: "free",
472
+ access: "free_and_pro",
473
+ pro_required: false
474
+ },
475
+ {
476
+ skill: "arrays-data-api-crypto-metrics-and-screener",
477
+ file: "screener-metrics",
478
+ method: "GET",
479
+ path: "/api/v1/crypto/screener/metrics",
480
+ tier: "public",
481
+ required_subscription_tier: "free",
482
+ access: "free_and_pro",
483
+ pro_required: false
484
+ },
485
+ {
486
+ skill: "arrays-data-api-crypto-metrics-and-screener",
487
+ file: "screener-metrics-timerange",
488
+ method: "GET",
489
+ path: "/api/v1/crypto/screener/metrics/timerange",
490
+ tier: "public",
491
+ required_subscription_tier: "free",
492
+ access: "free_and_pro",
493
+ pro_required: false
494
+ },
495
+ {
496
+ skill: "arrays-data-api-crypto-metrics-and-screener",
497
+ file: "trading-pair",
498
+ method: "GET",
499
+ path: "/api/v1/crypto/trading-pair",
500
+ tier: "public",
501
+ required_subscription_tier: "free",
502
+ access: "free_and_pro",
503
+ pro_required: false
504
+ },
505
+ {
506
+ skill: "arrays-data-api-etf-fundamentals",
507
+ file: "country-weightings",
508
+ method: "GET",
509
+ path: "/api/v1/etf/country-weightings",
510
+ tier: "public",
511
+ required_subscription_tier: "free",
512
+ access: "free_and_pro",
513
+ pro_required: false
514
+ },
515
+ {
516
+ skill: "arrays-data-api-etf-fundamentals",
517
+ file: "holdings",
518
+ method: "GET",
519
+ path: "/api/v1/etf/holdings",
520
+ tier: "public",
521
+ required_subscription_tier: "free",
522
+ access: "free_and_pro",
523
+ pro_required: false
524
+ },
525
+ {
526
+ skill: "arrays-data-api-etf-fundamentals",
527
+ file: "info",
528
+ method: "GET",
529
+ path: "/api/v1/etf/info",
530
+ tier: "public",
531
+ required_subscription_tier: "free",
532
+ access: "free_and_pro",
533
+ pro_required: false
534
+ },
535
+ {
536
+ skill: "arrays-data-api-etf-fundamentals",
537
+ file: "sector-weightings",
538
+ method: "GET",
539
+ path: "/api/v1/etf/sector-weightings",
540
+ tier: "public",
541
+ required_subscription_tier: "free",
542
+ access: "free_and_pro",
543
+ pro_required: false
544
+ },
545
+ {
546
+ skill: "arrays-data-api-macro-and-economics",
547
+ file: "macro-commodity-historical",
548
+ method: "GET",
549
+ path: "/api/v1/macro/commodity/historical",
550
+ tier: "public",
551
+ required_subscription_tier: "free",
552
+ access: "free_and_pro",
553
+ pro_required: false
554
+ },
555
+ {
556
+ skill: "arrays-data-api-macro-and-economics",
557
+ file: "macro-commodity-real-time",
558
+ method: "GET",
559
+ path: "/api/v1/macro/commodity/real-time",
560
+ tier: "public",
561
+ required_subscription_tier: "free",
562
+ access: "free_and_pro",
563
+ pro_required: false
564
+ },
565
+ {
566
+ skill: "arrays-data-api-macro-and-economics",
567
+ file: "macro-commodity-symbol-list",
568
+ method: "GET",
569
+ path: "/api/v1/macro/commodity/symbols",
570
+ tier: "public",
571
+ required_subscription_tier: "free",
572
+ access: "free_and_pro",
573
+ pro_required: false
574
+ },
575
+ {
576
+ skill: "arrays-data-api-macro-and-economics",
577
+ file: "economic-indicators",
578
+ method: "GET",
579
+ path: "/api/v1/macro/economic-indicators",
580
+ tier: "public",
581
+ required_subscription_tier: "free",
582
+ access: "free_and_pro",
583
+ pro_required: false
584
+ },
585
+ {
586
+ skill: "arrays-data-api-macro-and-economics",
587
+ file: "macro-forex-historical",
588
+ method: "GET",
589
+ path: "/api/v1/macro/forex/historical",
590
+ tier: "public",
591
+ required_subscription_tier: "free",
592
+ access: "free_and_pro",
593
+ pro_required: false
594
+ },
595
+ {
596
+ skill: "arrays-data-api-macro-and-economics",
597
+ file: "macro-forex-real-time",
598
+ method: "GET",
599
+ path: "/api/v1/macro/forex/real-time",
600
+ tier: "public",
601
+ required_subscription_tier: "free",
602
+ access: "free_and_pro",
603
+ pro_required: false
604
+ },
605
+ {
606
+ skill: "arrays-data-api-macro-and-economics",
607
+ file: "macro-forex-symbol-list",
608
+ method: "GET",
609
+ path: "/api/v1/macro/forex/symbols",
610
+ tier: "public",
611
+ required_subscription_tier: "free",
612
+ access: "free_and_pro",
613
+ pro_required: false
614
+ },
615
+ {
616
+ skill: "arrays-data-api-macro-and-economics",
617
+ file: "macro-index-historical",
618
+ method: "GET",
619
+ path: "/api/v1/macro/index/historical",
620
+ tier: "public",
621
+ required_subscription_tier: "free",
622
+ access: "free_and_pro",
623
+ pro_required: false
624
+ },
625
+ {
626
+ skill: "arrays-data-api-macro-and-economics",
627
+ file: "macro-index-real-time",
628
+ method: "GET",
629
+ path: "/api/v1/macro/index/real-time",
630
+ tier: "public",
631
+ required_subscription_tier: "free",
632
+ access: "free_and_pro",
633
+ pro_required: false
634
+ },
635
+ {
636
+ skill: "arrays-data-api-macro-and-economics",
637
+ file: "rates",
638
+ method: "GET",
639
+ path: "/api/v1/macro/treasury-rates",
640
+ tier: "public",
641
+ required_subscription_tier: "free",
642
+ access: "free_and_pro",
643
+ pro_required: false
644
+ },
645
+ {
646
+ skill: "arrays-data-api-equity-fundamentals",
647
+ file: "company-balance-sheets",
648
+ method: "GET",
649
+ path: "/api/v1/stocks/company/balance-sheets",
650
+ tier: "public",
651
+ required_subscription_tier: "free",
652
+ access: "free_and_pro",
653
+ pro_required: false
654
+ },
655
+ {
656
+ skill: "arrays-data-api-equity-fundamentals",
657
+ file: "company-cashflow-statements",
658
+ method: "GET",
659
+ path: "/api/v1/stocks/company/cashflow-statements",
660
+ tier: "public",
661
+ required_subscription_tier: "free",
662
+ access: "free_and_pro",
663
+ pro_required: false
664
+ },
665
+ {
666
+ skill: "arrays-data-api-equity-fundamentals",
667
+ file: "company-detail",
668
+ method: "GET",
669
+ path: "/api/v1/stocks/company/detail",
670
+ tier: "public",
671
+ required_subscription_tier: "free",
672
+ access: "free_and_pro",
673
+ pro_required: false
674
+ },
675
+ {
676
+ skill: "arrays-data-api-equity-fundamentals",
677
+ file: "company-income-statements",
678
+ method: "GET",
679
+ path: "/api/v1/stocks/company/income-statements",
680
+ tier: "public",
681
+ required_subscription_tier: "free",
682
+ access: "free_and_pro",
683
+ pro_required: false
684
+ },
685
+ {
686
+ skill: "arrays-data-api-equity-fundamentals",
687
+ file: "company-kpi",
688
+ method: "GET",
689
+ path: "/api/v1/stocks/company/kpi",
690
+ tier: "public",
691
+ required_subscription_tier: "free",
692
+ access: "free_and_pro",
693
+ pro_required: false
694
+ },
695
+ {
696
+ skill: "arrays-data-api-equity-events",
697
+ file: "crowdfunding-offerings",
698
+ method: "GET",
699
+ path: "/api/v1/stocks/crowdfunding/offerings",
700
+ tier: "public",
701
+ required_subscription_tier: "free",
702
+ access: "free_and_pro",
703
+ pro_required: false
704
+ },
705
+ {
706
+ skill: "arrays-data-api-equity-events",
707
+ file: "dividends",
708
+ method: "GET",
709
+ path: "/api/v1/stocks/dividends",
710
+ tier: "public",
711
+ required_subscription_tier: "free",
712
+ access: "free_and_pro",
713
+ pro_required: false
714
+ },
715
+ {
716
+ skill: "arrays-data-api-equity-events",
717
+ file: "earnings-calendar",
718
+ method: "GET",
719
+ path: "/api/v1/stocks/earnings-calendar",
720
+ tier: "public",
721
+ required_subscription_tier: "free",
722
+ access: "free_and_pro",
723
+ pro_required: false
724
+ },
725
+ {
726
+ skill: "arrays-data-api-equity-events",
727
+ file: "equity-offering",
728
+ method: "GET",
729
+ path: "/api/v1/stocks/equity-offering",
730
+ tier: "public",
731
+ required_subscription_tier: "free",
732
+ access: "free_and_pro",
733
+ pro_required: false
734
+ },
735
+ {
736
+ skill: "arrays-data-api-stock-metrics",
737
+ file: "financial-metrics",
738
+ method: "GET",
739
+ path: "/api/v1/stocks/financial-metrics",
740
+ tier: "public",
741
+ required_subscription_tier: "free",
742
+ access: "free_and_pro",
743
+ pro_required: false
744
+ },
745
+ {
746
+ skill: "arrays-data-api-equity-fundamentals",
747
+ file: "fiscal-dates",
748
+ method: "GET",
749
+ path: "/api/v1/stocks/fiscal-dates",
750
+ tier: "public",
751
+ required_subscription_tier: "free",
752
+ access: "free_and_pro",
753
+ pro_required: false
754
+ },
755
+ {
756
+ skill: "arrays-data-api-equity-fundamentals",
757
+ file: "fiscal-dates-range",
758
+ method: "GET",
759
+ path: "/api/v1/stocks/fiscal-dates/range",
760
+ tier: "public",
761
+ required_subscription_tier: "free",
762
+ access: "free_and_pro",
763
+ pro_required: false
764
+ },
765
+ {
766
+ skill: "arrays-data-api-equity-events",
767
+ file: "ipo-calendar",
768
+ method: "GET",
769
+ path: "/api/v1/stocks/ipo-calendar",
770
+ tier: "public",
771
+ required_subscription_tier: "free",
772
+ access: "free_and_pro",
773
+ pro_required: false
774
+ },
775
+ {
776
+ skill: "arrays-data-api-equity-events",
777
+ file: "ipo-confirmed-calendar",
778
+ method: "GET",
779
+ path: "/api/v1/stocks/ipo-confirmed-calendar",
780
+ tier: "public",
781
+ required_subscription_tier: "free",
782
+ access: "free_and_pro",
783
+ pro_required: false
784
+ },
785
+ {
786
+ skill: "arrays-data-api-spot-market-price-and-volume",
787
+ file: "stocks-kline",
788
+ method: "GET",
789
+ path: "/api/v1/stocks/kline",
790
+ tier: "public",
791
+ required_subscription_tier: "free",
792
+ access: "free_and_pro",
793
+ pro_required: false
794
+ },
795
+ {
796
+ skill: "arrays-data-api-stock-metrics",
797
+ file: "market-metrics",
798
+ method: "GET",
799
+ path: "/api/v1/stocks/market-metrics",
800
+ tier: "public",
801
+ required_subscription_tier: "free",
802
+ access: "free_and_pro",
803
+ pro_required: false
804
+ },
805
+ {
806
+ skill: "arrays-data-api-equity-events",
807
+ file: "mergers-acquisitions",
808
+ method: "GET",
809
+ path: "/api/v1/stocks/mergers-acquisitions",
810
+ tier: "public",
811
+ required_subscription_tier: "free",
812
+ access: "free_and_pro",
813
+ pro_required: false
814
+ },
815
+ {
816
+ skill: "arrays-data-api-equity-fundamentals",
817
+ file: "outstanding-shares",
818
+ method: "GET",
819
+ path: "/api/v1/stocks/outstanding-shares",
820
+ tier: "public",
821
+ required_subscription_tier: "free",
822
+ access: "free_and_pro",
823
+ pro_required: false
824
+ },
825
+ {
826
+ skill: "arrays-data-api-stock-metrics",
827
+ file: "ratings",
828
+ method: "GET",
829
+ path: "/api/v1/stocks/ratings",
830
+ tier: "public",
831
+ required_subscription_tier: "free",
832
+ access: "free_and_pro",
833
+ pro_required: false
834
+ },
835
+ {
836
+ skill: "arrays-data-api-stock-screener",
837
+ file: "basic-info-screener",
838
+ method: "GET",
839
+ path: "/api/v1/stocks/screener/basic-info/{sub}",
840
+ tier: "public",
841
+ required_subscription_tier: "free",
842
+ access: "free_and_pro",
843
+ pro_required: false
844
+ },
845
+ {
846
+ skill: "arrays-data-api-stock-screener",
847
+ file: "event-screener",
848
+ method: "GET",
849
+ path: "/api/v1/stocks/screener/events",
850
+ tier: "public",
851
+ required_subscription_tier: "free",
852
+ access: "free_and_pro",
853
+ pro_required: false
854
+ },
855
+ {
856
+ skill: "arrays-data-api-stock-screener",
857
+ file: "screener-financial-metrics",
858
+ method: "GET",
859
+ path: "/api/v1/stocks/screener/financial-metrics",
860
+ tier: "public",
861
+ required_subscription_tier: "free",
862
+ access: "free_and_pro",
863
+ pro_required: false
864
+ },
865
+ {
866
+ skill: "arrays-data-api-stock-screener",
867
+ file: "screener-financial-metrics-timerange",
868
+ method: "GET",
869
+ path: "/api/v1/stocks/screener/financial-metrics/timerange",
870
+ tier: "public",
871
+ required_subscription_tier: "free",
872
+ access: "free_and_pro",
873
+ pro_required: false
874
+ },
875
+ {
876
+ skill: "arrays-data-api-stock-screener",
877
+ file: "screener-technical-metrics",
878
+ method: "GET",
879
+ path: "/api/v1/stocks/screener/technical-metrics",
880
+ tier: "public",
881
+ required_subscription_tier: "free",
882
+ access: "free_and_pro",
883
+ pro_required: false
884
+ },
885
+ {
886
+ skill: "arrays-data-api-stock-screener",
887
+ file: "screener-technical-metrics-timerange",
888
+ method: "GET",
889
+ path: "/api/v1/stocks/screener/technical-metrics/timerange",
890
+ tier: "public",
891
+ required_subscription_tier: "free",
892
+ access: "free_and_pro",
893
+ pro_required: false
894
+ },
895
+ {
896
+ skill: "arrays-data-api-equity-events",
897
+ file: "sec-earnings-release",
898
+ method: "GET",
899
+ path: "/api/v1/stocks/sec-earnings-release",
900
+ tier: "public",
901
+ required_subscription_tier: "free",
902
+ access: "free_and_pro",
903
+ pro_required: false
904
+ },
905
+ {
906
+ skill: "arrays-data-api-equity-fundamentals",
907
+ file: "shares-float",
908
+ method: "GET",
909
+ path: "/api/v1/stocks/shares-float",
910
+ tier: "public",
911
+ required_subscription_tier: "free",
912
+ access: "free_and_pro",
913
+ pro_required: false
914
+ },
915
+ {
916
+ skill: "arrays-data-api-equity-events",
917
+ file: "splits",
918
+ method: "GET",
919
+ path: "/api/v1/stocks/splits",
920
+ tier: "public",
921
+ required_subscription_tier: "free",
922
+ access: "free_and_pro",
923
+ pro_required: false
924
+ },
925
+ {
926
+ skill: "arrays-data-api-crypto-exchange-flow",
927
+ file: "exchange-flows",
928
+ method: "GET",
929
+ path: "/api/v1/crypto/exchange-flows",
930
+ tier: "alternative",
931
+ required_subscription_tier: "pro",
932
+ access: "pro_only",
933
+ pro_required: true
934
+ },
935
+ {
936
+ skill: "arrays-data-api-company-crypto-holdings",
937
+ file: "crypto-holdings",
938
+ method: "GET",
939
+ path: "/api/v1/crypto/holdings",
940
+ tier: "alternative",
941
+ required_subscription_tier: "pro",
942
+ access: "pro_only",
943
+ pro_required: true
944
+ },
945
+ {
946
+ skill: "arrays-data-api-crypto-metrics-and-screener",
947
+ file: "metrics-inflow-cdd",
948
+ method: "GET",
949
+ path: "/api/v1/crypto/metrics/inflow-cdd",
950
+ tier: "alternative",
951
+ required_subscription_tier: "pro",
952
+ access: "pro_only",
953
+ pro_required: true
954
+ },
955
+ {
956
+ skill: "arrays-data-api-crypto-metrics-and-screener",
957
+ file: "metrics-leverage-ratio",
958
+ method: "GET",
959
+ path: "/api/v1/crypto/metrics/leverage-ratio",
960
+ tier: "alternative",
961
+ required_subscription_tier: "pro",
962
+ access: "pro_only",
963
+ pro_required: true
964
+ },
965
+ {
966
+ skill: "arrays-data-api-crypto-metrics-and-screener",
967
+ file: "metrics-miner-to-exchange",
968
+ method: "GET",
969
+ path: "/api/v1/crypto/metrics/miner-to-exchange",
970
+ tier: "alternative",
971
+ required_subscription_tier: "pro",
972
+ access: "pro_only",
973
+ pro_required: true
974
+ },
975
+ {
976
+ skill: "arrays-data-api-crypto-metrics-and-screener",
977
+ file: "metrics-mvrv",
978
+ method: "GET",
979
+ path: "/api/v1/crypto/metrics/mvrv",
980
+ tier: "alternative",
981
+ required_subscription_tier: "pro",
982
+ access: "pro_only",
983
+ pro_required: true
984
+ },
985
+ {
986
+ skill: "arrays-data-api-crypto-metrics-and-screener",
987
+ file: "metrics-nupl",
988
+ method: "GET",
989
+ path: "/api/v1/crypto/metrics/nupl",
990
+ tier: "alternative",
991
+ required_subscription_tier: "pro",
992
+ access: "pro_only",
993
+ pro_required: true
994
+ },
995
+ {
996
+ skill: "arrays-data-api-crypto-metrics-and-screener",
997
+ file: "metrics-puell-multiple",
998
+ method: "GET",
999
+ path: "/api/v1/crypto/metrics/puell-multiple",
1000
+ tier: "alternative",
1001
+ required_subscription_tier: "pro",
1002
+ access: "pro_only",
1003
+ pro_required: true
1004
+ },
1005
+ {
1006
+ skill: "arrays-data-api-crypto-metrics-and-screener",
1007
+ file: "metrics-realized-price",
1008
+ method: "GET",
1009
+ path: "/api/v1/crypto/metrics/realized-price",
1010
+ tier: "alternative",
1011
+ required_subscription_tier: "pro",
1012
+ access: "pro_only",
1013
+ pro_required: true
1014
+ },
1015
+ {
1016
+ skill: "arrays-data-api-crypto-metrics-and-screener",
1017
+ file: "metrics-sopr",
1018
+ method: "GET",
1019
+ path: "/api/v1/crypto/metrics/sopr",
1020
+ tier: "alternative",
1021
+ required_subscription_tier: "pro",
1022
+ access: "pro_only",
1023
+ pro_required: true
1024
+ },
1025
+ {
1026
+ skill: "arrays-data-api-crypto-metrics-and-screener",
1027
+ file: "metrics-ssr",
1028
+ method: "GET",
1029
+ path: "/api/v1/crypto/metrics/ssr",
1030
+ tier: "alternative",
1031
+ required_subscription_tier: "pro",
1032
+ access: "pro_only",
1033
+ pro_required: true
1034
+ },
1035
+ {
1036
+ skill: "arrays-data-api-crypto-metrics-and-screener",
1037
+ file: "metrics-whale-ratio",
1038
+ method: "GET",
1039
+ path: "/api/v1/crypto/metrics/whale-ratio",
1040
+ tier: "alternative",
1041
+ required_subscription_tier: "pro",
1042
+ access: "pro_only",
1043
+ pro_required: true
1044
+ },
1045
+ {
1046
+ skill: "arrays-data-api-crypto-metrics-and-screener",
1047
+ file: "crypto-supply",
1048
+ method: "GET",
1049
+ path: "/api/v1/crypto/supply",
1050
+ tier: "alternative",
1051
+ required_subscription_tier: "pro",
1052
+ access: "pro_only",
1053
+ pro_required: true
1054
+ },
1055
+ {
1056
+ skill: "arrays-data-api-crypto-futures-data",
1057
+ file: "taker-buy-sell-volume",
1058
+ method: "GET",
1059
+ path: "/api/v1/crypto/taker-buy-sell-volume",
1060
+ tier: "alternative",
1061
+ required_subscription_tier: "pro",
1062
+ access: "pro_only",
1063
+ pro_required: true
1064
+ },
1065
+ {
1066
+ skill: "arrays-data-api-crypto-metrics-and-screener",
1067
+ file: "unlock-events",
1068
+ method: "GET",
1069
+ path: "/api/v1/crypto/unlock-events",
1070
+ tier: "alternative",
1071
+ required_subscription_tier: "pro",
1072
+ access: "pro_only",
1073
+ pro_required: true
1074
+ },
1075
+ {
1076
+ skill: "arrays-data-api-etf-fundamentals",
1077
+ file: "flow",
1078
+ method: "GET",
1079
+ path: "/api/v1/etf/flow",
1080
+ tier: "alternative",
1081
+ required_subscription_tier: "pro",
1082
+ access: "pro_only",
1083
+ pro_required: true
1084
+ },
1085
+ {
1086
+ skill: "arrays-data-api-options",
1087
+ file: "contracts",
1088
+ method: "GET",
1089
+ path: "/api/v1/options/contracts",
1090
+ tier: "alternative",
1091
+ required_subscription_tier: "pro",
1092
+ access: "pro_only",
1093
+ pro_required: true
1094
+ },
1095
+ {
1096
+ skill: "arrays-data-api-options",
1097
+ file: "kline",
1098
+ method: "GET",
1099
+ path: "/api/v1/options/kline",
1100
+ tier: "alternative",
1101
+ required_subscription_tier: "pro",
1102
+ access: "pro_only",
1103
+ pro_required: true
1104
+ },
1105
+ {
1106
+ skill: "arrays-data-api-equity-fundamentals",
1107
+ file: "company-executives",
1108
+ method: "GET",
1109
+ path: "/api/v1/stocks/company/executives",
1110
+ tier: "alternative",
1111
+ required_subscription_tier: "pro",
1112
+ access: "pro_only",
1113
+ pro_required: true
1114
+ },
1115
+ {
1116
+ skill: "arrays-data-api-equity-estimates-and-targets",
1117
+ file: "company-price-target-consensus",
1118
+ method: "GET",
1119
+ path: "/api/v1/stocks/company/price-target-consensus",
1120
+ tier: "alternative",
1121
+ required_subscription_tier: "pro",
1122
+ access: "pro_only",
1123
+ pro_required: true
1124
+ },
1125
+ {
1126
+ skill: "arrays-data-api-equity-estimates-and-targets",
1127
+ file: "company-price-target-news",
1128
+ method: "GET",
1129
+ path: "/api/v1/stocks/company/price-target-news",
1130
+ tier: "alternative",
1131
+ required_subscription_tier: "pro",
1132
+ access: "pro_only",
1133
+ pro_required: true
1134
+ },
1135
+ {
1136
+ skill: "arrays-data-api-equity-estimates-and-targets",
1137
+ file: "company-price-target-summary",
1138
+ method: "GET",
1139
+ path: "/api/v1/stocks/company/price-target-summary",
1140
+ tier: "alternative",
1141
+ required_subscription_tier: "pro",
1142
+ access: "pro_only",
1143
+ pro_required: true
1144
+ },
1145
+ {
1146
+ skill: "arrays-data-api-equity-ownership-and-flow",
1147
+ file: "congress-recent-trades",
1148
+ method: "GET",
1149
+ path: "/api/v1/stocks/congress/recent-trades",
1150
+ tier: "alternative",
1151
+ required_subscription_tier: "pro",
1152
+ access: "pro_only",
1153
+ pro_required: true
1154
+ },
1155
+ {
1156
+ skill: "arrays-data-api-equity-ownership-and-flow",
1157
+ file: "senate-trade",
1158
+ method: "GET",
1159
+ path: "/api/v1/stocks/company/senate-trade",
1160
+ tier: "alternative",
1161
+ required_subscription_tier: "pro",
1162
+ access: "pro_only",
1163
+ pro_required: true
1164
+ },
1165
+ {
1166
+ skill: "arrays-data-api-stock-metrics",
1167
+ file: "darkpool",
1168
+ method: "GET",
1169
+ path: "/api/v1/stocks/darkpool",
1170
+ tier: "alternative",
1171
+ required_subscription_tier: "pro",
1172
+ access: "pro_only",
1173
+ pro_required: true
1174
+ },
1175
+ {
1176
+ skill: "arrays-data-api-equity-estimates-and-targets",
1177
+ file: "estimates-guidance",
1178
+ method: "GET",
1179
+ path: "/api/v1/stocks/estimates-guidance",
1180
+ tier: "alternative",
1181
+ required_subscription_tier: "pro",
1182
+ access: "pro_only",
1183
+ pro_required: true
1184
+ },
1185
+ {
1186
+ skill: "arrays-data-api-equity-ownership-and-flow",
1187
+ file: "insider-transactions",
1188
+ method: "GET",
1189
+ path: "/api/v1/stocks/insider/transactions",
1190
+ tier: "alternative",
1191
+ required_subscription_tier: "pro",
1192
+ access: "pro_only",
1193
+ pro_required: true
1194
+ },
1195
+ {
1196
+ skill: "arrays-data-api-equity-ownership-and-flow",
1197
+ file: "institution-holder",
1198
+ method: "GET",
1199
+ path: "/api/v1/stocks/institution-holder",
1200
+ tier: "alternative",
1201
+ required_subscription_tier: "pro",
1202
+ access: "pro_only",
1203
+ pro_required: true
1204
+ },
1205
+ {
1206
+ skill: "arrays-data-api-polymarket",
1207
+ file: "activity",
1208
+ method: "GET",
1209
+ path: "polymarket:/activity",
1210
+ tier: "alternative",
1211
+ required_subscription_tier: "pro",
1212
+ access: "pro_only",
1213
+ pro_required: true
1214
+ },
1215
+ {
1216
+ skill: "arrays-data-api-polymarket",
1217
+ file: "book",
1218
+ method: "GET",
1219
+ path: "polymarket:/book",
1220
+ tier: "alternative",
1221
+ required_subscription_tier: "pro",
1222
+ access: "pro_only",
1223
+ pro_required: true
1224
+ },
1225
+ {
1226
+ skill: "arrays-data-api-polymarket",
1227
+ file: "closed-positions",
1228
+ method: "GET",
1229
+ path: "polymarket:/closed-positions",
1230
+ tier: "alternative",
1231
+ required_subscription_tier: "pro",
1232
+ access: "pro_only",
1233
+ pro_required: true
1234
+ },
1235
+ {
1236
+ skill: "arrays-data-api-polymarket",
1237
+ file: "events",
1238
+ method: "GET",
1239
+ path: "polymarket:/events",
1240
+ tier: "alternative",
1241
+ required_subscription_tier: "pro",
1242
+ access: "pro_only",
1243
+ pro_required: true
1244
+ },
1245
+ {
1246
+ skill: "arrays-data-api-polymarket",
1247
+ file: "holders",
1248
+ method: "GET",
1249
+ path: "polymarket:/holders",
1250
+ tier: "alternative",
1251
+ required_subscription_tier: "pro",
1252
+ access: "pro_only",
1253
+ pro_required: true
1254
+ },
1255
+ {
1256
+ skill: "arrays-data-api-polymarket",
1257
+ file: "markets",
1258
+ method: "GET",
1259
+ path: "polymarket:/markets",
1260
+ tier: "alternative",
1261
+ required_subscription_tier: "pro",
1262
+ access: "pro_only",
1263
+ pro_required: true
1264
+ },
1265
+ {
1266
+ skill: "arrays-data-api-polymarket",
1267
+ file: "midpoint",
1268
+ method: "GET",
1269
+ path: "polymarket:/midpoint",
1270
+ tier: "alternative",
1271
+ required_subscription_tier: "pro",
1272
+ access: "pro_only",
1273
+ pro_required: true
1274
+ },
1275
+ {
1276
+ skill: "arrays-data-api-polymarket",
1277
+ file: "oi",
1278
+ method: "GET",
1279
+ path: "polymarket:/oi",
1280
+ tier: "alternative",
1281
+ required_subscription_tier: "pro",
1282
+ access: "pro_only",
1283
+ pro_required: true
1284
+ },
1285
+ {
1286
+ skill: "arrays-data-api-polymarket",
1287
+ file: "positions",
1288
+ method: "GET",
1289
+ path: "polymarket:/positions",
1290
+ tier: "alternative",
1291
+ required_subscription_tier: "pro",
1292
+ access: "pro_only",
1293
+ pro_required: true
1294
+ },
1295
+ {
1296
+ skill: "arrays-data-api-polymarket",
1297
+ file: "price",
1298
+ method: "GET",
1299
+ path: "polymarket:/price",
1300
+ tier: "alternative",
1301
+ required_subscription_tier: "pro",
1302
+ access: "pro_only",
1303
+ pro_required: true
1304
+ },
1305
+ {
1306
+ skill: "arrays-data-api-polymarket",
1307
+ file: "prices-history",
1308
+ method: "GET",
1309
+ path: "polymarket:/prices-history",
1310
+ tier: "alternative",
1311
+ required_subscription_tier: "pro",
1312
+ access: "pro_only",
1313
+ pro_required: true
1314
+ },
1315
+ {
1316
+ skill: "arrays-data-api-polymarket",
1317
+ file: "public-search",
1318
+ method: "GET",
1319
+ path: "polymarket:/public-search",
1320
+ tier: "alternative",
1321
+ required_subscription_tier: "pro",
1322
+ access: "pro_only",
1323
+ pro_required: true
1324
+ },
1325
+ {
1326
+ skill: "arrays-data-api-polymarket",
1327
+ file: "series",
1328
+ method: "GET",
1329
+ path: "polymarket:/series",
1330
+ tier: "alternative",
1331
+ required_subscription_tier: "pro",
1332
+ access: "pro_only",
1333
+ pro_required: true
1334
+ },
1335
+ {
1336
+ skill: "arrays-data-api-polymarket",
1337
+ file: "sports",
1338
+ method: "GET",
1339
+ path: "polymarket:/sports",
1340
+ tier: "alternative",
1341
+ required_subscription_tier: "pro",
1342
+ access: "pro_only",
1343
+ pro_required: true
1344
+ },
1345
+ {
1346
+ skill: "arrays-data-api-polymarket",
1347
+ file: "spread",
1348
+ method: "GET",
1349
+ path: "polymarket:/spread",
1350
+ tier: "alternative",
1351
+ required_subscription_tier: "pro",
1352
+ access: "pro_only",
1353
+ pro_required: true
1354
+ },
1355
+ {
1356
+ skill: "arrays-data-api-polymarket",
1357
+ file: "tags",
1358
+ method: "GET",
1359
+ path: "polymarket:/tags",
1360
+ tier: "alternative",
1361
+ required_subscription_tier: "pro",
1362
+ access: "pro_only",
1363
+ pro_required: true
1364
+ },
1365
+ {
1366
+ skill: "arrays-data-api-polymarket",
1367
+ file: "trades",
1368
+ method: "GET",
1369
+ path: "polymarket:/trades",
1370
+ tier: "alternative",
1371
+ required_subscription_tier: "pro",
1372
+ access: "pro_only",
1373
+ pro_required: true
1374
+ },
1375
+ {
1376
+ skill: "arrays-data-api-polymarket",
1377
+ file: "value",
1378
+ method: "GET",
1379
+ path: "polymarket:/value",
1380
+ tier: "alternative",
1381
+ required_subscription_tier: "pro",
1382
+ access: "pro_only",
1383
+ pro_required: true
1384
+ },
1385
+ {
1386
+ skill: "arrays-data-api-equity-events",
1387
+ file: "earnings-transcript",
1388
+ method: "GET",
1389
+ path: "/api/v1/stocks/earnings-transcript",
1390
+ tier: "unstructured",
1391
+ required_subscription_tier: "pro",
1392
+ access: "pro_only",
1393
+ pro_required: true
1394
+ },
1395
+ {
1396
+ skill: "arrays-data-api-news",
1397
+ file: "market-news",
1398
+ method: "GET",
1399
+ path: "/api/v1/stocks/market-news",
1400
+ tier: "unstructured",
1401
+ required_subscription_tier: "pro",
1402
+ access: "pro_only",
1403
+ pro_required: true
1404
+ }
1405
+ ];
1406
+ function getSkillEndpointMetadata(skill, file) {
1407
+ return SKILL_ENDPOINT_METADATA.find(
1408
+ (item) => item.skill === skill && item.file === file
1409
+ );
1410
+ }
1411
+ function listSkillEndpointMetadata(skill) {
1412
+ return SKILL_ENDPOINT_METADATA.filter((item) => item.skill === skill);
1413
+ }
1414
+
1415
+ // src/resources/dataSkills.ts
1416
+ var DataSkillsResource = class {
344
1417
  constructor(client) {
345
1418
  this.client = client;
346
1419
  }
@@ -350,7 +1423,12 @@ var SkillsResource = class {
350
1423
  baseUrl: this.client.arraysBaseUrl,
351
1424
  noAuth: true
352
1425
  });
353
- return { skills: res.data ?? [] };
1426
+ return {
1427
+ skills: (res.data ?? []).map((skill) => ({
1428
+ ...skill,
1429
+ ...metadataSummaryForSkill(skill.name)
1430
+ }))
1431
+ };
354
1432
  }
355
1433
  async summary(params) {
356
1434
  const encoded = encodeURIComponent(params.name);
@@ -365,7 +1443,12 @@ var SkillsResource = class {
365
1443
  const doc = res.data?.[0];
366
1444
  if (!doc)
367
1445
  throw new Error(`empty skills summary response for "${params.name}"`);
368
- return doc;
1446
+ const endpointMetadata = listSkillEndpointMetadata(params.name);
1447
+ return {
1448
+ ...doc,
1449
+ ...metadataSummaryForSkill(params.name),
1450
+ ...endpointMetadata.length > 0 ? { endpoint_metadata: endpointMetadata } : {}
1451
+ };
369
1452
  }
370
1453
  async endpoint(params) {
371
1454
  const encoded = encodeURIComponent(params.name);
@@ -384,7 +1467,103 @@ var SkillsResource = class {
384
1467
  `empty skills endpoint response for "${params.name}" file "${params.file}"`
385
1468
  );
386
1469
  }
387
- return doc;
1470
+ const metadata = getSkillEndpointMetadata(params.name, params.file);
1471
+ return {
1472
+ ...doc,
1473
+ ...metadata ? { metadata } : {}
1474
+ };
1475
+ }
1476
+ };
1477
+ function metadataSummaryForSkill(skill) {
1478
+ const endpointMetadata = listSkillEndpointMetadata(skill);
1479
+ if (endpointMetadata.length === 0) {
1480
+ return {};
1481
+ }
1482
+ const counts = {};
1483
+ let proCount = 0;
1484
+ for (const endpoint of endpointMetadata) {
1485
+ counts[endpoint.tier] = (counts[endpoint.tier] ?? 0) + 1;
1486
+ if (endpoint.pro_required) proCount += 1;
1487
+ }
1488
+ return {
1489
+ endpoint_tier_counts: counts,
1490
+ metadata: {
1491
+ endpoint_count: endpointMetadata.length,
1492
+ endpoint_tier_counts: counts,
1493
+ pro_count: proCount
1494
+ }
1495
+ };
1496
+ }
1497
+
1498
+ // src/resources/playbookSkills.ts
1499
+ function parsePlaybookSkillId(s) {
1500
+ const parts = s.split("/");
1501
+ if (parts.length !== 2 || !parts[0] || !parts[1]) {
1502
+ throw new AlvaError(
1503
+ "INVALID_ARGUMENT",
1504
+ `playbook skill identifier must be "<user>/<name>", got "${s}"`,
1505
+ 0
1506
+ );
1507
+ }
1508
+ return { username: parts[0], name: parts[1] };
1509
+ }
1510
+ var PlaybookSkillsResource = class {
1511
+ constructor(client) {
1512
+ this.client = client;
1513
+ }
1514
+ client;
1515
+ async list(params) {
1516
+ const query = {};
1517
+ if (params?.tag) query.tag = params.tag;
1518
+ if (params?.username) query.username = params.username;
1519
+ const res = await this.client._request("GET", "/api/v1/skills", {
1520
+ query
1521
+ });
1522
+ return { skills: res.data ?? [] };
1523
+ }
1524
+ async tags() {
1525
+ const res = await this.client._request(
1526
+ "GET",
1527
+ "/api/v1/skills/tags"
1528
+ );
1529
+ return { tags: res.data ?? [] };
1530
+ }
1531
+ async get(id) {
1532
+ const { username, name } = parsePlaybookSkillId(id);
1533
+ const u = encodeURIComponent(username);
1534
+ const n = encodeURIComponent(name);
1535
+ const res = await this.client._request(
1536
+ "GET",
1537
+ `/api/v1/skills/${u}/${n}`
1538
+ );
1539
+ const meta = res.data?.[0];
1540
+ if (!meta) {
1541
+ throw new AlvaError(
1542
+ "NOT_FOUND",
1543
+ `empty playbook skills get response for ${id}`,
1544
+ 0
1545
+ );
1546
+ }
1547
+ return meta;
1548
+ }
1549
+ async file(id, path) {
1550
+ const { username, name } = parsePlaybookSkillId(id);
1551
+ const u = encodeURIComponent(username);
1552
+ const n = encodeURIComponent(name);
1553
+ const p = path.split("/").map(encodeURIComponent).join("/");
1554
+ const res = await this.client._request(
1555
+ "GET",
1556
+ `/api/v1/skills/${u}/${n}/files/${p}`
1557
+ );
1558
+ const out = res.data?.[0];
1559
+ if (!out) {
1560
+ throw new AlvaError(
1561
+ "NOT_FOUND",
1562
+ `empty playbook skills file response for ${id} path ${path}`,
1563
+ 0
1564
+ );
1565
+ }
1566
+ return out;
388
1567
  }
389
1568
  };
390
1569
 
@@ -448,7 +1627,10 @@ var ScreenshotResource = class {
448
1627
  query: {
449
1628
  url: params.url,
450
1629
  selector: params.selector,
451
- xpath: params.xpath
1630
+ xpath: params.xpath,
1631
+ compress: params.compress,
1632
+ compress_quality: params.compressQuality,
1633
+ compress_max_width: params.compressMaxWidth
452
1634
  }
453
1635
  });
454
1636
  }
@@ -688,6 +1870,69 @@ var PushSubscriptionsResource = class {
688
1870
  }
689
1871
  };
690
1872
 
1873
+ // src/resources/channelGroupSubscriptions.ts
1874
+ var ChannelGroupSubscriptionsResource = class {
1875
+ constructor(client) {
1876
+ this.client = client;
1877
+ }
1878
+ client;
1879
+ async context(params) {
1880
+ this.client._requireAuth();
1881
+ return this.client._request(
1882
+ "GET",
1883
+ "/api/v1/channel/group-subscriptions/context",
1884
+ {
1885
+ query: { session_id: params.session_id }
1886
+ }
1887
+ );
1888
+ }
1889
+ async list(params) {
1890
+ this.client._requireAuth();
1891
+ return this.client._request("GET", "/api/v1/channel/group-subscriptions", {
1892
+ query: { session_id: params.session_id }
1893
+ });
1894
+ }
1895
+ async subscribe(params) {
1896
+ this.client._requireAuth();
1897
+ return this.client._request("POST", "/api/v1/channel/group-subscriptions", {
1898
+ jsonBody: mutationBody(params)
1899
+ });
1900
+ }
1901
+ async unsubscribe(params) {
1902
+ this.client._requireAuth();
1903
+ return this.client._request(
1904
+ "DELETE",
1905
+ "/api/v1/channel/group-subscriptions",
1906
+ {
1907
+ jsonBody: mutationBody(params)
1908
+ }
1909
+ );
1910
+ }
1911
+ };
1912
+ function mutationBody(params) {
1913
+ return `{"session_id":${idLiteral(params.session_id)},"target_type":${JSON.stringify(params.target_type)},"target_id":${idLiteral(params.target_id)}}`;
1914
+ }
1915
+ function idLiteral(value) {
1916
+ if (typeof value === "number") {
1917
+ if (!Number.isInteger(value) || value <= 0 || !Number.isSafeInteger(value)) {
1918
+ throw new AlvaError(
1919
+ "INVALID_ARGUMENT",
1920
+ "channel group subscription ids must be positive safe integers; pass large int64 ids as strings",
1921
+ 0
1922
+ );
1923
+ }
1924
+ return String(value);
1925
+ }
1926
+ if (!/^[1-9]\d*$/.test(value)) {
1927
+ throw new AlvaError(
1928
+ "INVALID_ARGUMENT",
1929
+ "channel group subscription ids must be positive integer strings",
1930
+ 0
1931
+ );
1932
+ }
1933
+ return value;
1934
+ }
1935
+
691
1936
  // src/client.ts
692
1937
  var DEFAULT_BASE_URL = "https://api-llm.prd.alva.ai";
693
1938
  var DEFAULT_ARRAYS_BASE_URL = "https://data-tools.prd.space.id";
@@ -702,7 +1947,8 @@ var AlvaClient = class {
702
1947
  _release;
703
1948
  _secrets;
704
1949
  _sdk;
705
- _skills;
1950
+ _dataSkills;
1951
+ _playbookSkills;
706
1952
  _comments;
707
1953
  _remix;
708
1954
  _screenshot;
@@ -711,6 +1957,7 @@ var AlvaClient = class {
711
1957
  _arraysJwt;
712
1958
  _notifications;
713
1959
  _pushSubscriptions;
1960
+ _channelGroupSubscriptions;
714
1961
  constructor(config) {
715
1962
  this.baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;
716
1963
  this.arraysBaseUrl = config.arraysBaseUrl ?? DEFAULT_ARRAYS_BASE_URL;
@@ -735,8 +1982,11 @@ var AlvaClient = class {
735
1982
  get sdk() {
736
1983
  return this._sdk ??= new SdkDocsResource(this);
737
1984
  }
738
- get skills() {
739
- return this._skills ??= new SkillsResource(this);
1985
+ get dataSkills() {
1986
+ return this._dataSkills ??= new DataSkillsResource(this);
1987
+ }
1988
+ get playbookSkills() {
1989
+ return this._playbookSkills ??= new PlaybookSkillsResource(this);
740
1990
  }
741
1991
  get comments() {
742
1992
  return this._comments ??= new CommentsResource(this);
@@ -762,6 +2012,9 @@ var AlvaClient = class {
762
2012
  get pushSubscriptions() {
763
2013
  return this._pushSubscriptions ??= new PushSubscriptionsResource(this);
764
2014
  }
2015
+ get channelGroupSubscriptions() {
2016
+ return this._channelGroupSubscriptions ??= new ChannelGroupSubscriptionsResource(this);
2017
+ }
765
2018
  _requireAuth() {
766
2019
  if (!this.viewer_token && !this.apiKey) {
767
2020
  throw new AlvaError(
@@ -798,6 +2051,9 @@ var AlvaClient = class {
798
2051
  if (options?.rawBody !== void 0) {
799
2052
  headers["Content-Type"] = "application/octet-stream";
800
2053
  fetchBody = options.rawBody;
2054
+ } else if (options?.jsonBody !== void 0) {
2055
+ headers["Content-Type"] = "application/json";
2056
+ fetchBody = options.jsonBody;
801
2057
  } else if (options?.body !== void 0) {
802
2058
  headers["Content-Type"] = "application/json";
803
2059
  fetchBody = JSON.stringify(options.body);
@@ -851,7 +2107,7 @@ var AlvaClient = class {
851
2107
  };
852
2108
 
853
2109
  // src/index.ts
854
- var VERSION = true ? "0.4.2" : "dev";
2110
+ var VERSION = true ? "0.7.0-beta.0" : "dev";
855
2111
  export {
856
2112
  AlvaClient,
857
2113
  AlvaError,