@sendly/cli 3.23.0 → 3.24.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 (2) hide show
  1. package/oclif.manifest.json +1483 -1483
  2. package/package.json +1 -1
@@ -342,18 +342,25 @@
342
342
  "whoami.js"
343
343
  ]
344
344
  },
345
- "campaigns:cancel": {
345
+ "config:get": {
346
346
  "aliases": [],
347
347
  "args": {
348
- "id": {
349
- "description": "Campaign ID",
350
- "name": "id",
348
+ "key": {
349
+ "description": "Configuration key",
350
+ "name": "key",
351
+ "options": [
352
+ "environment",
353
+ "baseUrl",
354
+ "defaultFormat",
355
+ "colorEnabled"
356
+ ],
351
357
  "required": true
352
358
  }
353
359
  },
354
- "description": "Cancel a scheduled campaign",
360
+ "description": "Get a configuration value",
355
361
  "examples": [
356
- "<%= config.bin %> campaigns cancel cmp_xxx"
362
+ "<%= config.bin %> config get environment",
363
+ "<%= config.bin %> config get baseUrl"
357
364
  ],
358
365
  "flags": {
359
366
  "json": {
@@ -372,32 +379,84 @@
372
379
  },
373
380
  "hasDynamicHelp": false,
374
381
  "hiddenAliases": [],
375
- "id": "campaigns:cancel",
382
+ "id": "config:get",
376
383
  "pluginAlias": "@sendly/cli",
377
384
  "pluginName": "@sendly/cli",
378
385
  "pluginType": "core",
379
386
  "strict": true,
387
+ "enableJsonFlag": false,
380
388
  "isESM": true,
381
389
  "relativePath": [
382
390
  "dist",
383
391
  "commands",
384
- "campaigns",
385
- "cancel.js"
392
+ "config",
393
+ "get.js"
386
394
  ]
387
395
  },
388
- "campaigns:clone": {
396
+ "config:list": {
397
+ "aliases": [],
398
+ "args": {},
399
+ "description": "List all configuration values",
400
+ "examples": [
401
+ "<%= config.bin %> config list",
402
+ "<%= config.bin %> config list --json"
403
+ ],
404
+ "flags": {
405
+ "json": {
406
+ "description": "Output in JSON format",
407
+ "name": "json",
408
+ "allowNo": false,
409
+ "type": "boolean"
410
+ },
411
+ "quiet": {
412
+ "char": "q",
413
+ "description": "Minimal output",
414
+ "name": "quiet",
415
+ "allowNo": false,
416
+ "type": "boolean"
417
+ }
418
+ },
419
+ "hasDynamicHelp": false,
420
+ "hiddenAliases": [],
421
+ "id": "config:list",
422
+ "pluginAlias": "@sendly/cli",
423
+ "pluginName": "@sendly/cli",
424
+ "pluginType": "core",
425
+ "strict": true,
426
+ "enableJsonFlag": false,
427
+ "isESM": true,
428
+ "relativePath": [
429
+ "dist",
430
+ "commands",
431
+ "config",
432
+ "list.js"
433
+ ]
434
+ },
435
+ "config:set": {
389
436
  "aliases": [],
390
437
  "args": {
391
- "id": {
392
- "description": "Campaign ID to clone",
393
- "name": "id",
438
+ "key": {
439
+ "description": "Configuration key",
440
+ "name": "key",
441
+ "options": [
442
+ "environment",
443
+ "baseUrl",
444
+ "defaultFormat",
445
+ "colorEnabled"
446
+ ],
447
+ "required": true
448
+ },
449
+ "value": {
450
+ "description": "Configuration value",
451
+ "name": "value",
394
452
  "required": true
395
453
  }
396
454
  },
397
- "description": "Clone an existing campaign",
455
+ "description": "Set a configuration value",
398
456
  "examples": [
399
- "<%= config.bin %> campaigns clone cmp_xxx",
400
- "<%= config.bin %> campaigns clone cmp_xxx --name \"Copy of Sale\""
457
+ "<%= config.bin %> config set environment live",
458
+ "<%= config.bin %> config set defaultFormat json",
459
+ "<%= config.bin %> config set baseUrl https://api.sendly.live"
401
460
  ],
402
461
  "flags": {
403
462
  "json": {
@@ -412,39 +471,33 @@
412
471
  "name": "quiet",
413
472
  "allowNo": false,
414
473
  "type": "boolean"
415
- },
416
- "name": {
417
- "char": "n",
418
- "description": "Name for the cloned campaign",
419
- "name": "name",
420
- "hasDynamicHelp": false,
421
- "multiple": false,
422
- "type": "option"
423
474
  }
424
475
  },
425
476
  "hasDynamicHelp": false,
426
477
  "hiddenAliases": [],
427
- "id": "campaigns:clone",
478
+ "id": "config:set",
428
479
  "pluginAlias": "@sendly/cli",
429
480
  "pluginName": "@sendly/cli",
430
481
  "pluginType": "core",
431
482
  "strict": true,
483
+ "enableJsonFlag": false,
432
484
  "isESM": true,
433
485
  "relativePath": [
434
486
  "dist",
435
487
  "commands",
436
- "campaigns",
437
- "clone.js"
488
+ "config",
489
+ "set.js"
438
490
  ]
439
491
  },
440
- "campaigns:create": {
492
+ "contacts:create": {
441
493
  "aliases": [],
442
494
  "args": {},
443
- "description": "Create a new campaign",
495
+ "description": "Create a new contact",
444
496
  "examples": [
445
- "<%= config.bin %> campaigns create --name \"Welcome\" --text \"Hello {{name}}!\" --list lst_xxx",
446
- "<%= config.bin %> campaigns create --name \"Sale\" --text \"50% off today!\" --list lst_customers --list lst_subscribers",
447
- "<%= config.bin %> campaigns create --name \"OTP\" --template tpl_preset_otp --list lst_xxx"
497
+ "<%= config.bin %> contacts create --phone +15551234567",
498
+ "<%= config.bin %> contacts create --phone +15551234567 --name \"John Doe\"",
499
+ "<%= config.bin %> contacts create --phone +15551234567 --name \"John\" --email john@example.com",
500
+ "<%= config.bin %> contacts create --phone +15551234567 --json"
448
501
  ],
449
502
  "flags": {
450
503
  "json": {
@@ -460,43 +513,35 @@
460
513
  "allowNo": false,
461
514
  "type": "boolean"
462
515
  },
463
- "name": {
464
- "char": "n",
465
- "description": "Campaign name",
466
- "name": "name",
516
+ "phone": {
517
+ "char": "p",
518
+ "description": "Phone number in E.164 format (e.g., +15551234567)",
519
+ "name": "phone",
467
520
  "required": true,
468
521
  "hasDynamicHelp": false,
469
522
  "multiple": false,
470
523
  "type": "option"
471
524
  },
472
- "text": {
473
- "char": "t",
474
- "description": "Message text (supports {{variables}})",
475
- "name": "text",
525
+ "name": {
526
+ "char": "n",
527
+ "description": "Contact name",
528
+ "name": "name",
476
529
  "hasDynamicHelp": false,
477
530
  "multiple": false,
478
531
  "type": "option"
479
532
  },
480
- "template": {
481
- "description": "Template ID to use instead of text",
482
- "name": "template",
533
+ "email": {
534
+ "char": "e",
535
+ "description": "Contact email",
536
+ "name": "email",
483
537
  "hasDynamicHelp": false,
484
538
  "multiple": false,
485
539
  "type": "option"
486
- },
487
- "list": {
488
- "char": "l",
489
- "description": "Contact list ID (can specify multiple)",
490
- "name": "list",
491
- "required": true,
492
- "hasDynamicHelp": false,
493
- "multiple": true,
494
- "type": "option"
495
540
  }
496
541
  },
497
542
  "hasDynamicHelp": false,
498
543
  "hiddenAliases": [],
499
- "id": "campaigns:create",
544
+ "id": "contacts:create",
500
545
  "pluginAlias": "@sendly/cli",
501
546
  "pluginName": "@sendly/cli",
502
547
  "pluginType": "core",
@@ -505,23 +550,23 @@
505
550
  "relativePath": [
506
551
  "dist",
507
552
  "commands",
508
- "campaigns",
553
+ "contacts",
509
554
  "create.js"
510
555
  ]
511
556
  },
512
- "campaigns:delete": {
557
+ "contacts:delete": {
513
558
  "aliases": [],
514
559
  "args": {
515
560
  "id": {
516
- "description": "Campaign ID",
561
+ "description": "Contact ID to delete",
517
562
  "name": "id",
518
563
  "required": true
519
564
  }
520
565
  },
521
- "description": "Delete a campaign",
566
+ "description": "Delete a contact",
522
567
  "examples": [
523
- "<%= config.bin %> campaigns delete cmp_xxx",
524
- "<%= config.bin %> campaigns delete cmp_xxx --yes"
568
+ "<%= config.bin %> contacts delete cnt_xxx",
569
+ "<%= config.bin %> contacts delete cnt_xxx --yes"
525
570
  ],
526
571
  "flags": {
527
572
  "json": {
@@ -547,7 +592,7 @@
547
592
  },
548
593
  "hasDynamicHelp": false,
549
594
  "hiddenAliases": [],
550
- "id": "campaigns:delete",
595
+ "id": "contacts:delete",
551
596
  "pluginAlias": "@sendly/cli",
552
597
  "pluginName": "@sendly/cli",
553
598
  "pluginType": "core",
@@ -556,23 +601,23 @@
556
601
  "relativePath": [
557
602
  "dist",
558
603
  "commands",
559
- "campaigns",
604
+ "contacts",
560
605
  "delete.js"
561
606
  ]
562
607
  },
563
- "campaigns:get": {
608
+ "contacts:get": {
564
609
  "aliases": [],
565
610
  "args": {
566
611
  "id": {
567
- "description": "Campaign ID",
612
+ "description": "Contact ID",
568
613
  "name": "id",
569
614
  "required": true
570
615
  }
571
616
  },
572
- "description": "Get campaign details",
617
+ "description": "Get contact details",
573
618
  "examples": [
574
- "<%= config.bin %> campaigns get cmp_xxx",
575
- "<%= config.bin %> campaigns get cmp_xxx --json"
619
+ "<%= config.bin %> contacts get cnt_xxx",
620
+ "<%= config.bin %> contacts get cnt_xxx --json"
576
621
  ],
577
622
  "flags": {
578
623
  "json": {
@@ -591,7 +636,7 @@
591
636
  },
592
637
  "hasDynamicHelp": false,
593
638
  "hiddenAliases": [],
594
- "id": "campaigns:get",
639
+ "id": "contacts:get",
595
640
  "pluginAlias": "@sendly/cli",
596
641
  "pluginName": "@sendly/cli",
597
642
  "pluginType": "core",
@@ -600,19 +645,24 @@
600
645
  "relativePath": [
601
646
  "dist",
602
647
  "commands",
603
- "campaigns",
648
+ "contacts",
604
649
  "get.js"
605
650
  ]
606
651
  },
607
- "campaigns:list": {
652
+ "contacts:import": {
608
653
  "aliases": [],
609
- "args": {},
610
- "description": "List campaigns",
654
+ "args": {
655
+ "file": {
656
+ "description": "Path to CSV file (columns: phone, name, email)",
657
+ "name": "file",
658
+ "required": true
659
+ }
660
+ },
661
+ "description": "Import contacts from a CSV file",
611
662
  "examples": [
612
- "<%= config.bin %> campaigns list",
613
- "<%= config.bin %> campaigns list --status draft",
614
- "<%= config.bin %> campaigns list --limit 10",
615
- "<%= config.bin %> campaigns list --json"
663
+ "<%= config.bin %> contacts import contacts.csv",
664
+ "<%= config.bin %> contacts import contacts.csv --list lst_xxx",
665
+ "<%= config.bin %> contacts import contacts.csv --list lst_xxx --json"
616
666
  ],
617
667
  "flags": {
618
668
  "json": {
@@ -628,27 +678,10 @@
628
678
  "allowNo": false,
629
679
  "type": "boolean"
630
680
  },
631
- "limit": {
681
+ "list": {
632
682
  "char": "l",
633
- "description": "Number of campaigns to show",
634
- "name": "limit",
635
- "default": 20,
636
- "hasDynamicHelp": false,
637
- "multiple": false,
638
- "type": "option"
639
- },
640
- "offset": {
641
- "description": "Offset for pagination",
642
- "name": "offset",
643
- "default": 0,
644
- "hasDynamicHelp": false,
645
- "multiple": false,
646
- "type": "option"
647
- },
648
- "status": {
649
- "char": "s",
650
- "description": "Filter by status (draft, scheduled, sending, sent, cancelled)",
651
- "name": "status",
683
+ "description": "Contact list ID to add imported contacts to",
684
+ "name": "list",
652
685
  "hasDynamicHelp": false,
653
686
  "multiple": false,
654
687
  "type": "option"
@@ -656,7 +689,7 @@
656
689
  },
657
690
  "hasDynamicHelp": false,
658
691
  "hiddenAliases": [],
659
- "id": "campaigns:list",
692
+ "id": "contacts:import",
660
693
  "pluginAlias": "@sendly/cli",
661
694
  "pluginName": "@sendly/cli",
662
695
  "pluginType": "core",
@@ -665,23 +698,20 @@
665
698
  "relativePath": [
666
699
  "dist",
667
700
  "commands",
668
- "campaigns",
669
- "list.js"
701
+ "contacts",
702
+ "import.js"
670
703
  ]
671
704
  },
672
- "campaigns:preview": {
705
+ "contacts:list": {
673
706
  "aliases": [],
674
- "args": {
675
- "id": {
676
- "description": "Campaign ID",
677
- "name": "id",
678
- "required": true
679
- }
680
- },
681
- "description": "Preview campaign cost and recipients",
707
+ "args": {},
708
+ "description": "List contacts",
682
709
  "examples": [
683
- "<%= config.bin %> campaigns preview cmp_xxx",
684
- "<%= config.bin %> campaigns preview cmp_xxx --json"
710
+ "<%= config.bin %> contacts list",
711
+ "<%= config.bin %> contacts list --search john",
712
+ "<%= config.bin %> contacts list --list lst_xxx",
713
+ "<%= config.bin %> contacts list --limit 50",
714
+ "<%= config.bin %> contacts list --json"
685
715
  ],
686
716
  "flags": {
687
717
  "json": {
@@ -696,36 +726,69 @@
696
726
  "name": "quiet",
697
727
  "allowNo": false,
698
728
  "type": "boolean"
699
- }
700
- },
701
- "hasDynamicHelp": false,
702
- "hiddenAliases": [],
703
- "id": "campaigns:preview",
704
- "pluginAlias": "@sendly/cli",
705
- "pluginName": "@sendly/cli",
706
- "pluginType": "core",
729
+ },
730
+ "limit": {
731
+ "char": "l",
732
+ "description": "Number of contacts to show",
733
+ "name": "limit",
734
+ "default": 50,
735
+ "hasDynamicHelp": false,
736
+ "multiple": false,
737
+ "type": "option"
738
+ },
739
+ "offset": {
740
+ "description": "Offset for pagination",
741
+ "name": "offset",
742
+ "default": 0,
743
+ "hasDynamicHelp": false,
744
+ "multiple": false,
745
+ "type": "option"
746
+ },
747
+ "search": {
748
+ "char": "s",
749
+ "description": "Search by name, phone, or email",
750
+ "name": "search",
751
+ "hasDynamicHelp": false,
752
+ "multiple": false,
753
+ "type": "option"
754
+ },
755
+ "list": {
756
+ "description": "Filter by contact list ID",
757
+ "name": "list",
758
+ "hasDynamicHelp": false,
759
+ "multiple": false,
760
+ "type": "option"
761
+ }
762
+ },
763
+ "hasDynamicHelp": false,
764
+ "hiddenAliases": [],
765
+ "id": "contacts:list",
766
+ "pluginAlias": "@sendly/cli",
767
+ "pluginName": "@sendly/cli",
768
+ "pluginType": "core",
707
769
  "strict": true,
708
770
  "isESM": true,
709
771
  "relativePath": [
710
772
  "dist",
711
773
  "commands",
712
- "campaigns",
713
- "preview.js"
774
+ "contacts",
775
+ "list.js"
714
776
  ]
715
777
  },
716
- "campaigns:schedule": {
778
+ "contacts:update": {
717
779
  "aliases": [],
718
780
  "args": {
719
781
  "id": {
720
- "description": "Campaign ID",
782
+ "description": "Contact ID",
721
783
  "name": "id",
722
784
  "required": true
723
785
  }
724
786
  },
725
- "description": "Schedule a campaign for later",
787
+ "description": "Update a contact",
726
788
  "examples": [
727
- "<%= config.bin %> campaigns schedule cmp_xxx --at \"2024-01-15T10:00:00Z\"",
728
- "<%= config.bin %> campaigns schedule cmp_xxx --at \"2024-01-15T10:00:00\" --timezone \"America/New_York\""
789
+ "<%= config.bin %> contacts update cnt_xxx --name \"John Doe\"",
790
+ "<%= config.bin %> contacts update cnt_xxx --email john@example.com",
791
+ "<%= config.bin %> contacts update cnt_xxx --name \"John\" --email john@example.com"
729
792
  ],
730
793
  "flags": {
731
794
  "json": {
@@ -741,18 +804,18 @@
741
804
  "allowNo": false,
742
805
  "type": "boolean"
743
806
  },
744
- "at": {
745
- "description": "When to send (ISO 8601 datetime)",
746
- "name": "at",
747
- "required": true,
807
+ "name": {
808
+ "char": "n",
809
+ "description": "Contact name",
810
+ "name": "name",
748
811
  "hasDynamicHelp": false,
749
812
  "multiple": false,
750
813
  "type": "option"
751
814
  },
752
- "timezone": {
753
- "char": "z",
754
- "description": "Timezone (e.g., \"America/New_York\")",
755
- "name": "timezone",
815
+ "email": {
816
+ "char": "e",
817
+ "description": "Contact email",
818
+ "name": "email",
756
819
  "hasDynamicHelp": false,
757
820
  "multiple": false,
758
821
  "type": "option"
@@ -760,7 +823,7 @@
760
823
  },
761
824
  "hasDynamicHelp": false,
762
825
  "hiddenAliases": [],
763
- "id": "campaigns:schedule",
826
+ "id": "contacts:update",
764
827
  "pluginAlias": "@sendly/cli",
765
828
  "pluginName": "@sendly/cli",
766
829
  "pluginType": "core",
@@ -769,23 +832,23 @@
769
832
  "relativePath": [
770
833
  "dist",
771
834
  "commands",
772
- "campaigns",
773
- "schedule.js"
835
+ "contacts",
836
+ "update.js"
774
837
  ]
775
838
  },
776
- "campaigns:send": {
839
+ "conversations:close": {
777
840
  "aliases": [],
778
841
  "args": {
779
842
  "id": {
780
- "description": "Campaign ID",
843
+ "description": "Conversation ID",
781
844
  "name": "id",
782
845
  "required": true
783
846
  }
784
847
  },
785
- "description": "Send a campaign immediately",
848
+ "description": "Close a conversation",
786
849
  "examples": [
787
- "<%= config.bin %> campaigns send cmp_xxx",
788
- "<%= config.bin %> campaigns send cmp_xxx --yes"
850
+ "<%= config.bin %> conversations close conv_abc123",
851
+ "<%= config.bin %> conversations close conv_abc123 --json"
789
852
  ],
790
853
  "flags": {
791
854
  "json": {
@@ -800,18 +863,11 @@
800
863
  "name": "quiet",
801
864
  "allowNo": false,
802
865
  "type": "boolean"
803
- },
804
- "yes": {
805
- "char": "y",
806
- "description": "Skip confirmation prompt",
807
- "name": "yes",
808
- "allowNo": false,
809
- "type": "boolean"
810
866
  }
811
867
  },
812
868
  "hasDynamicHelp": false,
813
869
  "hiddenAliases": [],
814
- "id": "campaigns:send",
870
+ "id": "conversations:close",
815
871
  "pluginAlias": "@sendly/cli",
816
872
  "pluginName": "@sendly/cli",
817
873
  "pluginType": "core",
@@ -820,25 +876,25 @@
820
876
  "relativePath": [
821
877
  "dist",
822
878
  "commands",
823
- "campaigns",
824
- "send.js"
879
+ "conversations",
880
+ "close.js"
825
881
  ]
826
882
  },
827
- "campaigns:update": {
883
+ "conversations:get": {
828
884
  "aliases": [],
829
885
  "args": {
830
886
  "id": {
831
- "description": "Campaign ID",
887
+ "description": "Conversation ID",
832
888
  "name": "id",
833
889
  "required": true
834
890
  }
835
891
  },
836
- "description": "Update a campaign",
892
+ "description": "Get details of a conversation",
837
893
  "examples": [
838
- "<%= config.bin %> campaigns update cmp_xxx --name \"New Name\"",
839
- "<%= config.bin %> campaigns update cmp_xxx --text \"Updated message\"",
840
- "<%= config.bin %> campaigns update cmp_xxx --list lst_xxx",
841
- "<%= config.bin %> campaigns update cmp_xxx --name \"Sale\" --text \"50% off!\""
894
+ "<%= config.bin %> conversations get conv_abc123",
895
+ "<%= config.bin %> conversations get conv_abc123 --messages",
896
+ "<%= config.bin %> conversations get conv_abc123 --messages --limit 10",
897
+ "<%= config.bin %> conversations get conv_abc123 --json"
842
898
  ],
843
899
  "flags": {
844
900
  "json": {
@@ -854,33 +910,18 @@
854
910
  "allowNo": false,
855
911
  "type": "boolean"
856
912
  },
857
- "name": {
858
- "char": "n",
859
- "description": "Campaign name",
860
- "name": "name",
861
- "hasDynamicHelp": false,
862
- "multiple": false,
863
- "type": "option"
864
- },
865
- "text": {
866
- "char": "t",
867
- "description": "Message text (supports {{variables}})",
868
- "name": "text",
869
- "hasDynamicHelp": false,
870
- "multiple": false,
871
- "type": "option"
913
+ "messages": {
914
+ "char": "m",
915
+ "description": "Include message thread",
916
+ "name": "messages",
917
+ "allowNo": false,
918
+ "type": "boolean"
872
919
  },
873
- "list": {
920
+ "limit": {
874
921
  "char": "l",
875
- "description": "Contact list ID",
876
- "name": "list",
877
- "hasDynamicHelp": false,
878
- "multiple": false,
879
- "type": "option"
880
- },
881
- "template": {
882
- "description": "Template ID",
883
- "name": "template",
922
+ "description": "Number of messages to include (requires --messages)",
923
+ "name": "limit",
924
+ "default": 50,
884
925
  "hasDynamicHelp": false,
885
926
  "multiple": false,
886
927
  "type": "option"
@@ -888,7 +929,7 @@
888
929
  },
889
930
  "hasDynamicHelp": false,
890
931
  "hiddenAliases": [],
891
- "id": "campaigns:update",
932
+ "id": "conversations:get",
892
933
  "pluginAlias": "@sendly/cli",
893
934
  "pluginName": "@sendly/cli",
894
935
  "pluginType": "core",
@@ -897,29 +938,17 @@
897
938
  "relativePath": [
898
939
  "dist",
899
940
  "commands",
900
- "campaigns",
901
- "update.js"
941
+ "conversations",
942
+ "get.js"
902
943
  ]
903
944
  },
904
- "config:get": {
945
+ "conversations": {
905
946
  "aliases": [],
906
- "args": {
907
- "key": {
908
- "description": "Configuration key",
909
- "name": "key",
910
- "options": [
911
- "environment",
912
- "baseUrl",
913
- "defaultFormat",
914
- "colorEnabled"
915
- ],
916
- "required": true
917
- }
918
- },
919
- "description": "Get a configuration value",
947
+ "args": {},
948
+ "description": "List conversations (default subcommand)",
920
949
  "examples": [
921
- "<%= config.bin %> config get environment",
922
- "<%= config.bin %> config get baseUrl"
950
+ "<%= config.bin %> conversations",
951
+ "<%= config.bin %> conversations --json"
923
952
  ],
924
953
  "flags": {
925
954
  "json": {
@@ -938,27 +967,28 @@
938
967
  },
939
968
  "hasDynamicHelp": false,
940
969
  "hiddenAliases": [],
941
- "id": "config:get",
970
+ "id": "conversations",
942
971
  "pluginAlias": "@sendly/cli",
943
972
  "pluginName": "@sendly/cli",
944
973
  "pluginType": "core",
945
974
  "strict": true,
946
- "enableJsonFlag": false,
947
975
  "isESM": true,
948
976
  "relativePath": [
949
977
  "dist",
950
978
  "commands",
951
- "config",
952
- "get.js"
979
+ "conversations",
980
+ "index.js"
953
981
  ]
954
982
  },
955
- "config:list": {
983
+ "conversations:list": {
956
984
  "aliases": [],
957
985
  "args": {},
958
- "description": "List all configuration values",
986
+ "description": "List conversations",
959
987
  "examples": [
960
- "<%= config.bin %> config list",
961
- "<%= config.bin %> config list --json"
988
+ "<%= config.bin %> conversations list",
989
+ "<%= config.bin %> conversations list --status active",
990
+ "<%= config.bin %> conversations list --limit 10",
991
+ "<%= config.bin %> conversations list --json"
962
992
  ],
963
993
  "flags": {
964
994
  "json": {
@@ -973,49 +1003,64 @@
973
1003
  "name": "quiet",
974
1004
  "allowNo": false,
975
1005
  "type": "boolean"
1006
+ },
1007
+ "limit": {
1008
+ "char": "l",
1009
+ "description": "Number of conversations per page",
1010
+ "name": "limit",
1011
+ "default": 20,
1012
+ "hasDynamicHelp": false,
1013
+ "multiple": false,
1014
+ "type": "option"
1015
+ },
1016
+ "offset": {
1017
+ "description": "Offset from start",
1018
+ "name": "offset",
1019
+ "hasDynamicHelp": false,
1020
+ "multiple": false,
1021
+ "type": "option"
1022
+ },
1023
+ "status": {
1024
+ "char": "s",
1025
+ "description": "Filter by status (active, closed)",
1026
+ "name": "status",
1027
+ "hasDynamicHelp": false,
1028
+ "multiple": false,
1029
+ "options": [
1030
+ "active",
1031
+ "closed"
1032
+ ],
1033
+ "type": "option"
976
1034
  }
977
1035
  },
978
1036
  "hasDynamicHelp": false,
979
1037
  "hiddenAliases": [],
980
- "id": "config:list",
1038
+ "id": "conversations:list",
981
1039
  "pluginAlias": "@sendly/cli",
982
1040
  "pluginName": "@sendly/cli",
983
1041
  "pluginType": "core",
984
1042
  "strict": true,
985
- "enableJsonFlag": false,
986
1043
  "isESM": true,
987
1044
  "relativePath": [
988
1045
  "dist",
989
1046
  "commands",
990
- "config",
1047
+ "conversations",
991
1048
  "list.js"
992
1049
  ]
993
1050
  },
994
- "config:set": {
1051
+ "conversations:mark-read": {
995
1052
  "aliases": [],
996
1053
  "args": {
997
- "key": {
998
- "description": "Configuration key",
999
- "name": "key",
1000
- "options": [
1001
- "environment",
1002
- "baseUrl",
1003
- "defaultFormat",
1004
- "colorEnabled"
1005
- ],
1006
- "required": true
1007
- },
1008
- "value": {
1009
- "description": "Configuration value",
1010
- "name": "value",
1054
+ "id": {
1055
+ "description": "Conversation ID",
1056
+ "name": "id",
1011
1057
  "required": true
1012
1058
  }
1013
1059
  },
1014
- "description": "Set a configuration value",
1060
+ "description": "Mark a conversation as read",
1015
1061
  "examples": [
1016
- "<%= config.bin %> config set environment live",
1017
- "<%= config.bin %> config set defaultFormat json",
1018
- "<%= config.bin %> config set baseUrl https://api.sendly.live"
1062
+ "<%= config.bin %> conversations mark-read conv_abc123",
1063
+ "<%= config.bin %> conversations mark-read conv_abc123 --json"
1019
1064
  ],
1020
1065
  "flags": {
1021
1066
  "json": {
@@ -1034,18 +1079,110 @@
1034
1079
  },
1035
1080
  "hasDynamicHelp": false,
1036
1081
  "hiddenAliases": [],
1037
- "id": "config:set",
1082
+ "id": "conversations:mark-read",
1038
1083
  "pluginAlias": "@sendly/cli",
1039
1084
  "pluginName": "@sendly/cli",
1040
1085
  "pluginType": "core",
1041
1086
  "strict": true,
1042
- "enableJsonFlag": false,
1043
1087
  "isESM": true,
1044
1088
  "relativePath": [
1045
1089
  "dist",
1046
1090
  "commands",
1047
- "config",
1048
- "set.js"
1091
+ "conversations",
1092
+ "mark-read.js"
1093
+ ]
1094
+ },
1095
+ "conversations:reopen": {
1096
+ "aliases": [],
1097
+ "args": {
1098
+ "id": {
1099
+ "description": "Conversation ID",
1100
+ "name": "id",
1101
+ "required": true
1102
+ }
1103
+ },
1104
+ "description": "Reopen a closed conversation",
1105
+ "examples": [
1106
+ "<%= config.bin %> conversations reopen conv_abc123",
1107
+ "<%= config.bin %> conversations reopen conv_abc123 --json"
1108
+ ],
1109
+ "flags": {
1110
+ "json": {
1111
+ "description": "Output in JSON format",
1112
+ "name": "json",
1113
+ "allowNo": false,
1114
+ "type": "boolean"
1115
+ },
1116
+ "quiet": {
1117
+ "char": "q",
1118
+ "description": "Minimal output",
1119
+ "name": "quiet",
1120
+ "allowNo": false,
1121
+ "type": "boolean"
1122
+ }
1123
+ },
1124
+ "hasDynamicHelp": false,
1125
+ "hiddenAliases": [],
1126
+ "id": "conversations:reopen",
1127
+ "pluginAlias": "@sendly/cli",
1128
+ "pluginName": "@sendly/cli",
1129
+ "pluginType": "core",
1130
+ "strict": true,
1131
+ "isESM": true,
1132
+ "relativePath": [
1133
+ "dist",
1134
+ "commands",
1135
+ "conversations",
1136
+ "reopen.js"
1137
+ ]
1138
+ },
1139
+ "conversations:reply": {
1140
+ "aliases": [],
1141
+ "args": {
1142
+ "id": {
1143
+ "description": "Conversation ID",
1144
+ "name": "id",
1145
+ "required": true
1146
+ },
1147
+ "text": {
1148
+ "description": "Reply message text",
1149
+ "name": "text",
1150
+ "required": true
1151
+ }
1152
+ },
1153
+ "description": "Send a reply in a conversation",
1154
+ "examples": [
1155
+ "<%= config.bin %> conversations reply conv_abc123 \"Thanks for reaching out!\"",
1156
+ "<%= config.bin %> conversations reply conv_abc123 \"Got it\" --json"
1157
+ ],
1158
+ "flags": {
1159
+ "json": {
1160
+ "description": "Output in JSON format",
1161
+ "name": "json",
1162
+ "allowNo": false,
1163
+ "type": "boolean"
1164
+ },
1165
+ "quiet": {
1166
+ "char": "q",
1167
+ "description": "Minimal output",
1168
+ "name": "quiet",
1169
+ "allowNo": false,
1170
+ "type": "boolean"
1171
+ }
1172
+ },
1173
+ "hasDynamicHelp": false,
1174
+ "hiddenAliases": [],
1175
+ "id": "conversations:reply",
1176
+ "pluginAlias": "@sendly/cli",
1177
+ "pluginName": "@sendly/cli",
1178
+ "pluginType": "core",
1179
+ "strict": true,
1180
+ "isESM": true,
1181
+ "relativePath": [
1182
+ "dist",
1183
+ "commands",
1184
+ "conversations",
1185
+ "reply.js"
1049
1186
  ]
1050
1187
  },
1051
1188
  "credits:balance": {
@@ -1195,19 +1332,18 @@
1195
1332
  "transfer.js"
1196
1333
  ]
1197
1334
  },
1198
- "conversations:close": {
1335
+ "campaigns:cancel": {
1199
1336
  "aliases": [],
1200
1337
  "args": {
1201
1338
  "id": {
1202
- "description": "Conversation ID",
1339
+ "description": "Campaign ID",
1203
1340
  "name": "id",
1204
1341
  "required": true
1205
1342
  }
1206
1343
  },
1207
- "description": "Close a conversation",
1344
+ "description": "Cancel a scheduled campaign",
1208
1345
  "examples": [
1209
- "<%= config.bin %> conversations close conv_abc123",
1210
- "<%= config.bin %> conversations close conv_abc123 --json"
1346
+ "<%= config.bin %> campaigns cancel cmp_xxx"
1211
1347
  ],
1212
1348
  "flags": {
1213
1349
  "json": {
@@ -1226,7 +1362,7 @@
1226
1362
  },
1227
1363
  "hasDynamicHelp": false,
1228
1364
  "hiddenAliases": [],
1229
- "id": "conversations:close",
1365
+ "id": "campaigns:cancel",
1230
1366
  "pluginAlias": "@sendly/cli",
1231
1367
  "pluginName": "@sendly/cli",
1232
1368
  "pluginType": "core",
@@ -1235,25 +1371,23 @@
1235
1371
  "relativePath": [
1236
1372
  "dist",
1237
1373
  "commands",
1238
- "conversations",
1239
- "close.js"
1374
+ "campaigns",
1375
+ "cancel.js"
1240
1376
  ]
1241
1377
  },
1242
- "conversations:get": {
1378
+ "campaigns:clone": {
1243
1379
  "aliases": [],
1244
1380
  "args": {
1245
1381
  "id": {
1246
- "description": "Conversation ID",
1382
+ "description": "Campaign ID to clone",
1247
1383
  "name": "id",
1248
1384
  "required": true
1249
1385
  }
1250
1386
  },
1251
- "description": "Get details of a conversation",
1387
+ "description": "Clone an existing campaign",
1252
1388
  "examples": [
1253
- "<%= config.bin %> conversations get conv_abc123",
1254
- "<%= config.bin %> conversations get conv_abc123 --messages",
1255
- "<%= config.bin %> conversations get conv_abc123 --messages --limit 10",
1256
- "<%= config.bin %> conversations get conv_abc123 --json"
1389
+ "<%= config.bin %> campaigns clone cmp_xxx",
1390
+ "<%= config.bin %> campaigns clone cmp_xxx --name \"Copy of Sale\""
1257
1391
  ],
1258
1392
  "flags": {
1259
1393
  "json": {
@@ -1269,18 +1403,10 @@
1269
1403
  "allowNo": false,
1270
1404
  "type": "boolean"
1271
1405
  },
1272
- "messages": {
1273
- "char": "m",
1274
- "description": "Include message thread",
1275
- "name": "messages",
1276
- "allowNo": false,
1277
- "type": "boolean"
1278
- },
1279
- "limit": {
1280
- "char": "l",
1281
- "description": "Number of messages to include (requires --messages)",
1282
- "name": "limit",
1283
- "default": 50,
1406
+ "name": {
1407
+ "char": "n",
1408
+ "description": "Name for the cloned campaign",
1409
+ "name": "name",
1284
1410
  "hasDynamicHelp": false,
1285
1411
  "multiple": false,
1286
1412
  "type": "option"
@@ -1288,45 +1414,7 @@
1288
1414
  },
1289
1415
  "hasDynamicHelp": false,
1290
1416
  "hiddenAliases": [],
1291
- "id": "conversations:get",
1292
- "pluginAlias": "@sendly/cli",
1293
- "pluginName": "@sendly/cli",
1294
- "pluginType": "core",
1295
- "strict": true,
1296
- "isESM": true,
1297
- "relativePath": [
1298
- "dist",
1299
- "commands",
1300
- "conversations",
1301
- "get.js"
1302
- ]
1303
- },
1304
- "conversations": {
1305
- "aliases": [],
1306
- "args": {},
1307
- "description": "List conversations (default subcommand)",
1308
- "examples": [
1309
- "<%= config.bin %> conversations",
1310
- "<%= config.bin %> conversations --json"
1311
- ],
1312
- "flags": {
1313
- "json": {
1314
- "description": "Output in JSON format",
1315
- "name": "json",
1316
- "allowNo": false,
1317
- "type": "boolean"
1318
- },
1319
- "quiet": {
1320
- "char": "q",
1321
- "description": "Minimal output",
1322
- "name": "quiet",
1323
- "allowNo": false,
1324
- "type": "boolean"
1325
- }
1326
- },
1327
- "hasDynamicHelp": false,
1328
- "hiddenAliases": [],
1329
- "id": "conversations",
1417
+ "id": "campaigns:clone",
1330
1418
  "pluginAlias": "@sendly/cli",
1331
1419
  "pluginName": "@sendly/cli",
1332
1420
  "pluginType": "core",
@@ -1335,19 +1423,18 @@
1335
1423
  "relativePath": [
1336
1424
  "dist",
1337
1425
  "commands",
1338
- "conversations",
1339
- "index.js"
1426
+ "campaigns",
1427
+ "clone.js"
1340
1428
  ]
1341
1429
  },
1342
- "conversations:list": {
1430
+ "campaigns:create": {
1343
1431
  "aliases": [],
1344
1432
  "args": {},
1345
- "description": "List conversations",
1433
+ "description": "Create a new campaign",
1346
1434
  "examples": [
1347
- "<%= config.bin %> conversations list",
1348
- "<%= config.bin %> conversations list --status active",
1349
- "<%= config.bin %> conversations list --limit 10",
1350
- "<%= config.bin %> conversations list --json"
1435
+ "<%= config.bin %> campaigns create --name \"Welcome\" --text \"Hello {{name}}!\" --list lst_xxx",
1436
+ "<%= config.bin %> campaigns create --name \"Sale\" --text \"50% off today!\" --list lst_customers --list lst_subscribers",
1437
+ "<%= config.bin %> campaigns create --name \"OTP\" --template tpl_preset_otp --list lst_xxx"
1351
1438
  ],
1352
1439
  "flags": {
1353
1440
  "json": {
@@ -1363,38 +1450,43 @@
1363
1450
  "allowNo": false,
1364
1451
  "type": "boolean"
1365
1452
  },
1366
- "limit": {
1367
- "char": "l",
1368
- "description": "Number of conversations per page",
1369
- "name": "limit",
1370
- "default": 20,
1453
+ "name": {
1454
+ "char": "n",
1455
+ "description": "Campaign name",
1456
+ "name": "name",
1457
+ "required": true,
1371
1458
  "hasDynamicHelp": false,
1372
1459
  "multiple": false,
1373
1460
  "type": "option"
1374
1461
  },
1375
- "offset": {
1376
- "description": "Offset from start",
1377
- "name": "offset",
1462
+ "text": {
1463
+ "char": "t",
1464
+ "description": "Message text (supports {{variables}})",
1465
+ "name": "text",
1378
1466
  "hasDynamicHelp": false,
1379
1467
  "multiple": false,
1380
1468
  "type": "option"
1381
1469
  },
1382
- "status": {
1383
- "char": "s",
1384
- "description": "Filter by status (active, closed)",
1385
- "name": "status",
1470
+ "template": {
1471
+ "description": "Template ID to use instead of text",
1472
+ "name": "template",
1386
1473
  "hasDynamicHelp": false,
1387
1474
  "multiple": false,
1388
- "options": [
1389
- "active",
1390
- "closed"
1391
- ],
1475
+ "type": "option"
1476
+ },
1477
+ "list": {
1478
+ "char": "l",
1479
+ "description": "Contact list ID (can specify multiple)",
1480
+ "name": "list",
1481
+ "required": true,
1482
+ "hasDynamicHelp": false,
1483
+ "multiple": true,
1392
1484
  "type": "option"
1393
1485
  }
1394
1486
  },
1395
1487
  "hasDynamicHelp": false,
1396
1488
  "hiddenAliases": [],
1397
- "id": "conversations:list",
1489
+ "id": "campaigns:create",
1398
1490
  "pluginAlias": "@sendly/cli",
1399
1491
  "pluginName": "@sendly/cli",
1400
1492
  "pluginType": "core",
@@ -1403,23 +1495,23 @@
1403
1495
  "relativePath": [
1404
1496
  "dist",
1405
1497
  "commands",
1406
- "conversations",
1407
- "list.js"
1498
+ "campaigns",
1499
+ "create.js"
1408
1500
  ]
1409
1501
  },
1410
- "conversations:mark-read": {
1502
+ "campaigns:delete": {
1411
1503
  "aliases": [],
1412
1504
  "args": {
1413
1505
  "id": {
1414
- "description": "Conversation ID",
1506
+ "description": "Campaign ID",
1415
1507
  "name": "id",
1416
1508
  "required": true
1417
1509
  }
1418
1510
  },
1419
- "description": "Mark a conversation as read",
1511
+ "description": "Delete a campaign",
1420
1512
  "examples": [
1421
- "<%= config.bin %> conversations mark-read conv_abc123",
1422
- "<%= config.bin %> conversations mark-read conv_abc123 --json"
1513
+ "<%= config.bin %> campaigns delete cmp_xxx",
1514
+ "<%= config.bin %> campaigns delete cmp_xxx --yes"
1423
1515
  ],
1424
1516
  "flags": {
1425
1517
  "json": {
@@ -1434,11 +1526,18 @@
1434
1526
  "name": "quiet",
1435
1527
  "allowNo": false,
1436
1528
  "type": "boolean"
1529
+ },
1530
+ "yes": {
1531
+ "char": "y",
1532
+ "description": "Skip confirmation prompt",
1533
+ "name": "yes",
1534
+ "allowNo": false,
1535
+ "type": "boolean"
1437
1536
  }
1438
1537
  },
1439
1538
  "hasDynamicHelp": false,
1440
1539
  "hiddenAliases": [],
1441
- "id": "conversations:mark-read",
1540
+ "id": "campaigns:delete",
1442
1541
  "pluginAlias": "@sendly/cli",
1443
1542
  "pluginName": "@sendly/cli",
1444
1543
  "pluginType": "core",
@@ -1447,23 +1546,23 @@
1447
1546
  "relativePath": [
1448
1547
  "dist",
1449
1548
  "commands",
1450
- "conversations",
1451
- "mark-read.js"
1549
+ "campaigns",
1550
+ "delete.js"
1452
1551
  ]
1453
1552
  },
1454
- "conversations:reopen": {
1553
+ "campaigns:get": {
1455
1554
  "aliases": [],
1456
1555
  "args": {
1457
1556
  "id": {
1458
- "description": "Conversation ID",
1557
+ "description": "Campaign ID",
1459
1558
  "name": "id",
1460
1559
  "required": true
1461
1560
  }
1462
1561
  },
1463
- "description": "Reopen a closed conversation",
1562
+ "description": "Get campaign details",
1464
1563
  "examples": [
1465
- "<%= config.bin %> conversations reopen conv_abc123",
1466
- "<%= config.bin %> conversations reopen conv_abc123 --json"
1564
+ "<%= config.bin %> campaigns get cmp_xxx",
1565
+ "<%= config.bin %> campaigns get cmp_xxx --json"
1467
1566
  ],
1468
1567
  "flags": {
1469
1568
  "json": {
@@ -1482,7 +1581,7 @@
1482
1581
  },
1483
1582
  "hasDynamicHelp": false,
1484
1583
  "hiddenAliases": [],
1485
- "id": "conversations:reopen",
1584
+ "id": "campaigns:get",
1486
1585
  "pluginAlias": "@sendly/cli",
1487
1586
  "pluginName": "@sendly/cli",
1488
1587
  "pluginType": "core",
@@ -1491,28 +1590,19 @@
1491
1590
  "relativePath": [
1492
1591
  "dist",
1493
1592
  "commands",
1494
- "conversations",
1495
- "reopen.js"
1593
+ "campaigns",
1594
+ "get.js"
1496
1595
  ]
1497
1596
  },
1498
- "conversations:reply": {
1597
+ "campaigns:list": {
1499
1598
  "aliases": [],
1500
- "args": {
1501
- "id": {
1502
- "description": "Conversation ID",
1503
- "name": "id",
1504
- "required": true
1505
- },
1506
- "text": {
1507
- "description": "Reply message text",
1508
- "name": "text",
1509
- "required": true
1510
- }
1511
- },
1512
- "description": "Send a reply in a conversation",
1599
+ "args": {},
1600
+ "description": "List campaigns",
1513
1601
  "examples": [
1514
- "<%= config.bin %> conversations reply conv_abc123 \"Thanks for reaching out!\"",
1515
- "<%= config.bin %> conversations reply conv_abc123 \"Got it\" --json"
1602
+ "<%= config.bin %> campaigns list",
1603
+ "<%= config.bin %> campaigns list --status draft",
1604
+ "<%= config.bin %> campaigns list --limit 10",
1605
+ "<%= config.bin %> campaigns list --json"
1516
1606
  ],
1517
1607
  "flags": {
1518
1608
  "json": {
@@ -1527,11 +1617,36 @@
1527
1617
  "name": "quiet",
1528
1618
  "allowNo": false,
1529
1619
  "type": "boolean"
1620
+ },
1621
+ "limit": {
1622
+ "char": "l",
1623
+ "description": "Number of campaigns to show",
1624
+ "name": "limit",
1625
+ "default": 20,
1626
+ "hasDynamicHelp": false,
1627
+ "multiple": false,
1628
+ "type": "option"
1629
+ },
1630
+ "offset": {
1631
+ "description": "Offset for pagination",
1632
+ "name": "offset",
1633
+ "default": 0,
1634
+ "hasDynamicHelp": false,
1635
+ "multiple": false,
1636
+ "type": "option"
1637
+ },
1638
+ "status": {
1639
+ "char": "s",
1640
+ "description": "Filter by status (draft, scheduled, sending, sent, cancelled)",
1641
+ "name": "status",
1642
+ "hasDynamicHelp": false,
1643
+ "multiple": false,
1644
+ "type": "option"
1530
1645
  }
1531
1646
  },
1532
1647
  "hasDynamicHelp": false,
1533
1648
  "hiddenAliases": [],
1534
- "id": "conversations:reply",
1649
+ "id": "campaigns:list",
1535
1650
  "pluginAlias": "@sendly/cli",
1536
1651
  "pluginName": "@sendly/cli",
1537
1652
  "pluginType": "core",
@@ -1540,19 +1655,23 @@
1540
1655
  "relativePath": [
1541
1656
  "dist",
1542
1657
  "commands",
1543
- "conversations",
1544
- "reply.js"
1658
+ "campaigns",
1659
+ "list.js"
1545
1660
  ]
1546
1661
  },
1547
- "contacts:create": {
1662
+ "campaigns:preview": {
1548
1663
  "aliases": [],
1549
- "args": {},
1550
- "description": "Create a new contact",
1664
+ "args": {
1665
+ "id": {
1666
+ "description": "Campaign ID",
1667
+ "name": "id",
1668
+ "required": true
1669
+ }
1670
+ },
1671
+ "description": "Preview campaign cost and recipients",
1551
1672
  "examples": [
1552
- "<%= config.bin %> contacts create --phone +15551234567",
1553
- "<%= config.bin %> contacts create --phone +15551234567 --name \"John Doe\"",
1554
- "<%= config.bin %> contacts create --phone +15551234567 --name \"John\" --email john@example.com",
1555
- "<%= config.bin %> contacts create --phone +15551234567 --json"
1673
+ "<%= config.bin %> campaigns preview cmp_xxx",
1674
+ "<%= config.bin %> campaigns preview cmp_xxx --json"
1556
1675
  ],
1557
1676
  "flags": {
1558
1677
  "json": {
@@ -1567,36 +1686,11 @@
1567
1686
  "name": "quiet",
1568
1687
  "allowNo": false,
1569
1688
  "type": "boolean"
1570
- },
1571
- "phone": {
1572
- "char": "p",
1573
- "description": "Phone number in E.164 format (e.g., +15551234567)",
1574
- "name": "phone",
1575
- "required": true,
1576
- "hasDynamicHelp": false,
1577
- "multiple": false,
1578
- "type": "option"
1579
- },
1580
- "name": {
1581
- "char": "n",
1582
- "description": "Contact name",
1583
- "name": "name",
1584
- "hasDynamicHelp": false,
1585
- "multiple": false,
1586
- "type": "option"
1587
- },
1588
- "email": {
1589
- "char": "e",
1590
- "description": "Contact email",
1591
- "name": "email",
1592
- "hasDynamicHelp": false,
1593
- "multiple": false,
1594
- "type": "option"
1595
1689
  }
1596
1690
  },
1597
1691
  "hasDynamicHelp": false,
1598
1692
  "hiddenAliases": [],
1599
- "id": "contacts:create",
1693
+ "id": "campaigns:preview",
1600
1694
  "pluginAlias": "@sendly/cli",
1601
1695
  "pluginName": "@sendly/cli",
1602
1696
  "pluginType": "core",
@@ -1605,23 +1699,23 @@
1605
1699
  "relativePath": [
1606
1700
  "dist",
1607
1701
  "commands",
1608
- "contacts",
1609
- "create.js"
1702
+ "campaigns",
1703
+ "preview.js"
1610
1704
  ]
1611
1705
  },
1612
- "contacts:delete": {
1706
+ "campaigns:schedule": {
1613
1707
  "aliases": [],
1614
1708
  "args": {
1615
1709
  "id": {
1616
- "description": "Contact ID to delete",
1710
+ "description": "Campaign ID",
1617
1711
  "name": "id",
1618
1712
  "required": true
1619
1713
  }
1620
1714
  },
1621
- "description": "Delete a contact",
1715
+ "description": "Schedule a campaign for later",
1622
1716
  "examples": [
1623
- "<%= config.bin %> contacts delete cnt_xxx",
1624
- "<%= config.bin %> contacts delete cnt_xxx --yes"
1717
+ "<%= config.bin %> campaigns schedule cmp_xxx --at \"2024-01-15T10:00:00Z\"",
1718
+ "<%= config.bin %> campaigns schedule cmp_xxx --at \"2024-01-15T10:00:00\" --timezone \"America/New_York\""
1625
1719
  ],
1626
1720
  "flags": {
1627
1721
  "json": {
@@ -1637,17 +1731,26 @@
1637
1731
  "allowNo": false,
1638
1732
  "type": "boolean"
1639
1733
  },
1640
- "yes": {
1641
- "char": "y",
1642
- "description": "Skip confirmation prompt",
1643
- "name": "yes",
1644
- "allowNo": false,
1645
- "type": "boolean"
1734
+ "at": {
1735
+ "description": "When to send (ISO 8601 datetime)",
1736
+ "name": "at",
1737
+ "required": true,
1738
+ "hasDynamicHelp": false,
1739
+ "multiple": false,
1740
+ "type": "option"
1741
+ },
1742
+ "timezone": {
1743
+ "char": "z",
1744
+ "description": "Timezone (e.g., \"America/New_York\")",
1745
+ "name": "timezone",
1746
+ "hasDynamicHelp": false,
1747
+ "multiple": false,
1748
+ "type": "option"
1646
1749
  }
1647
1750
  },
1648
1751
  "hasDynamicHelp": false,
1649
1752
  "hiddenAliases": [],
1650
- "id": "contacts:delete",
1753
+ "id": "campaigns:schedule",
1651
1754
  "pluginAlias": "@sendly/cli",
1652
1755
  "pluginName": "@sendly/cli",
1653
1756
  "pluginType": "core",
@@ -1656,23 +1759,23 @@
1656
1759
  "relativePath": [
1657
1760
  "dist",
1658
1761
  "commands",
1659
- "contacts",
1660
- "delete.js"
1762
+ "campaigns",
1763
+ "schedule.js"
1661
1764
  ]
1662
1765
  },
1663
- "contacts:get": {
1766
+ "campaigns:send": {
1664
1767
  "aliases": [],
1665
1768
  "args": {
1666
1769
  "id": {
1667
- "description": "Contact ID",
1770
+ "description": "Campaign ID",
1668
1771
  "name": "id",
1669
1772
  "required": true
1670
1773
  }
1671
1774
  },
1672
- "description": "Get contact details",
1775
+ "description": "Send a campaign immediately",
1673
1776
  "examples": [
1674
- "<%= config.bin %> contacts get cnt_xxx",
1675
- "<%= config.bin %> contacts get cnt_xxx --json"
1777
+ "<%= config.bin %> campaigns send cmp_xxx",
1778
+ "<%= config.bin %> campaigns send cmp_xxx --yes"
1676
1779
  ],
1677
1780
  "flags": {
1678
1781
  "json": {
@@ -1687,11 +1790,18 @@
1687
1790
  "name": "quiet",
1688
1791
  "allowNo": false,
1689
1792
  "type": "boolean"
1793
+ },
1794
+ "yes": {
1795
+ "char": "y",
1796
+ "description": "Skip confirmation prompt",
1797
+ "name": "yes",
1798
+ "allowNo": false,
1799
+ "type": "boolean"
1690
1800
  }
1691
1801
  },
1692
1802
  "hasDynamicHelp": false,
1693
1803
  "hiddenAliases": [],
1694
- "id": "contacts:get",
1804
+ "id": "campaigns:send",
1695
1805
  "pluginAlias": "@sendly/cli",
1696
1806
  "pluginName": "@sendly/cli",
1697
1807
  "pluginType": "core",
@@ -1700,24 +1810,25 @@
1700
1810
  "relativePath": [
1701
1811
  "dist",
1702
1812
  "commands",
1703
- "contacts",
1704
- "get.js"
1813
+ "campaigns",
1814
+ "send.js"
1705
1815
  ]
1706
1816
  },
1707
- "contacts:import": {
1817
+ "campaigns:update": {
1708
1818
  "aliases": [],
1709
1819
  "args": {
1710
- "file": {
1711
- "description": "Path to CSV file (columns: phone, name, email)",
1712
- "name": "file",
1820
+ "id": {
1821
+ "description": "Campaign ID",
1822
+ "name": "id",
1713
1823
  "required": true
1714
1824
  }
1715
1825
  },
1716
- "description": "Import contacts from a CSV file",
1826
+ "description": "Update a campaign",
1717
1827
  "examples": [
1718
- "<%= config.bin %> contacts import contacts.csv",
1719
- "<%= config.bin %> contacts import contacts.csv --list lst_xxx",
1720
- "<%= config.bin %> contacts import contacts.csv --list lst_xxx --json"
1828
+ "<%= config.bin %> campaigns update cmp_xxx --name \"New Name\"",
1829
+ "<%= config.bin %> campaigns update cmp_xxx --text \"Updated message\"",
1830
+ "<%= config.bin %> campaigns update cmp_xxx --list lst_xxx",
1831
+ "<%= config.bin %> campaigns update cmp_xxx --name \"Sale\" --text \"50% off!\""
1721
1832
  ],
1722
1833
  "flags": {
1723
1834
  "json": {
@@ -1733,18 +1844,41 @@
1733
1844
  "allowNo": false,
1734
1845
  "type": "boolean"
1735
1846
  },
1847
+ "name": {
1848
+ "char": "n",
1849
+ "description": "Campaign name",
1850
+ "name": "name",
1851
+ "hasDynamicHelp": false,
1852
+ "multiple": false,
1853
+ "type": "option"
1854
+ },
1855
+ "text": {
1856
+ "char": "t",
1857
+ "description": "Message text (supports {{variables}})",
1858
+ "name": "text",
1859
+ "hasDynamicHelp": false,
1860
+ "multiple": false,
1861
+ "type": "option"
1862
+ },
1736
1863
  "list": {
1737
1864
  "char": "l",
1738
- "description": "Contact list ID to add imported contacts to",
1865
+ "description": "Contact list ID",
1739
1866
  "name": "list",
1740
1867
  "hasDynamicHelp": false,
1741
1868
  "multiple": false,
1742
1869
  "type": "option"
1870
+ },
1871
+ "template": {
1872
+ "description": "Template ID",
1873
+ "name": "template",
1874
+ "hasDynamicHelp": false,
1875
+ "multiple": false,
1876
+ "type": "option"
1743
1877
  }
1744
1878
  },
1745
1879
  "hasDynamicHelp": false,
1746
1880
  "hiddenAliases": [],
1747
- "id": "contacts:import",
1881
+ "id": "campaigns:update",
1748
1882
  "pluginAlias": "@sendly/cli",
1749
1883
  "pluginName": "@sendly/cli",
1750
1884
  "pluginType": "core",
@@ -1753,157 +1887,23 @@
1753
1887
  "relativePath": [
1754
1888
  "dist",
1755
1889
  "commands",
1756
- "contacts",
1757
- "import.js"
1890
+ "campaigns",
1891
+ "update.js"
1758
1892
  ]
1759
1893
  },
1760
- "contacts:list": {
1894
+ "drafts:approve": {
1761
1895
  "aliases": [],
1762
- "args": {},
1763
- "description": "List contacts",
1896
+ "args": {
1897
+ "id": {
1898
+ "description": "Draft ID",
1899
+ "name": "id",
1900
+ "required": true
1901
+ }
1902
+ },
1903
+ "description": "Approve a draft and send it",
1764
1904
  "examples": [
1765
- "<%= config.bin %> contacts list",
1766
- "<%= config.bin %> contacts list --search john",
1767
- "<%= config.bin %> contacts list --list lst_xxx",
1768
- "<%= config.bin %> contacts list --limit 50",
1769
- "<%= config.bin %> contacts list --json"
1770
- ],
1771
- "flags": {
1772
- "json": {
1773
- "description": "Output in JSON format",
1774
- "name": "json",
1775
- "allowNo": false,
1776
- "type": "boolean"
1777
- },
1778
- "quiet": {
1779
- "char": "q",
1780
- "description": "Minimal output",
1781
- "name": "quiet",
1782
- "allowNo": false,
1783
- "type": "boolean"
1784
- },
1785
- "limit": {
1786
- "char": "l",
1787
- "description": "Number of contacts to show",
1788
- "name": "limit",
1789
- "default": 50,
1790
- "hasDynamicHelp": false,
1791
- "multiple": false,
1792
- "type": "option"
1793
- },
1794
- "offset": {
1795
- "description": "Offset for pagination",
1796
- "name": "offset",
1797
- "default": 0,
1798
- "hasDynamicHelp": false,
1799
- "multiple": false,
1800
- "type": "option"
1801
- },
1802
- "search": {
1803
- "char": "s",
1804
- "description": "Search by name, phone, or email",
1805
- "name": "search",
1806
- "hasDynamicHelp": false,
1807
- "multiple": false,
1808
- "type": "option"
1809
- },
1810
- "list": {
1811
- "description": "Filter by contact list ID",
1812
- "name": "list",
1813
- "hasDynamicHelp": false,
1814
- "multiple": false,
1815
- "type": "option"
1816
- }
1817
- },
1818
- "hasDynamicHelp": false,
1819
- "hiddenAliases": [],
1820
- "id": "contacts:list",
1821
- "pluginAlias": "@sendly/cli",
1822
- "pluginName": "@sendly/cli",
1823
- "pluginType": "core",
1824
- "strict": true,
1825
- "isESM": true,
1826
- "relativePath": [
1827
- "dist",
1828
- "commands",
1829
- "contacts",
1830
- "list.js"
1831
- ]
1832
- },
1833
- "contacts:update": {
1834
- "aliases": [],
1835
- "args": {
1836
- "id": {
1837
- "description": "Contact ID",
1838
- "name": "id",
1839
- "required": true
1840
- }
1841
- },
1842
- "description": "Update a contact",
1843
- "examples": [
1844
- "<%= config.bin %> contacts update cnt_xxx --name \"John Doe\"",
1845
- "<%= config.bin %> contacts update cnt_xxx --email john@example.com",
1846
- "<%= config.bin %> contacts update cnt_xxx --name \"John\" --email john@example.com"
1847
- ],
1848
- "flags": {
1849
- "json": {
1850
- "description": "Output in JSON format",
1851
- "name": "json",
1852
- "allowNo": false,
1853
- "type": "boolean"
1854
- },
1855
- "quiet": {
1856
- "char": "q",
1857
- "description": "Minimal output",
1858
- "name": "quiet",
1859
- "allowNo": false,
1860
- "type": "boolean"
1861
- },
1862
- "name": {
1863
- "char": "n",
1864
- "description": "Contact name",
1865
- "name": "name",
1866
- "hasDynamicHelp": false,
1867
- "multiple": false,
1868
- "type": "option"
1869
- },
1870
- "email": {
1871
- "char": "e",
1872
- "description": "Contact email",
1873
- "name": "email",
1874
- "hasDynamicHelp": false,
1875
- "multiple": false,
1876
- "type": "option"
1877
- }
1878
- },
1879
- "hasDynamicHelp": false,
1880
- "hiddenAliases": [],
1881
- "id": "contacts:update",
1882
- "pluginAlias": "@sendly/cli",
1883
- "pluginName": "@sendly/cli",
1884
- "pluginType": "core",
1885
- "strict": true,
1886
- "isESM": true,
1887
- "relativePath": [
1888
- "dist",
1889
- "commands",
1890
- "contacts",
1891
- "update.js"
1892
- ]
1893
- },
1894
- "drafts:approve": {
1895
- "aliases": [],
1896
- "args": {
1897
- "id": {
1898
- "description": "Draft ID",
1899
- "name": "id",
1900
- "required": true
1901
- }
1902
- },
1903
- "description": "Approve a draft and send it",
1904
- "examples": [
1905
- "<%= config.bin %> drafts approve draft_abc123",
1906
- "<%= config.bin %> drafts approve draft_abc123 --json"
1905
+ "<%= config.bin %> drafts approve draft_abc123",
1906
+ "<%= config.bin %> drafts approve draft_abc123 --json"
1907
1907
  ],
1908
1908
  "flags": {
1909
1909
  "json": {
@@ -3556,19 +3556,13 @@
3556
3556
  "send.js"
3557
3557
  ]
3558
3558
  },
3559
- "verify:check": {
3559
+ "teams:create": {
3560
3560
  "aliases": [],
3561
- "args": {
3562
- "id": {
3563
- "description": "Verification ID",
3564
- "name": "id",
3565
- "required": true
3566
- }
3567
- },
3568
- "description": "Verify an OTP code",
3561
+ "args": {},
3562
+ "description": "Create a new team",
3569
3563
  "examples": [
3570
- "<%= config.bin %> verify check ver_xxx --code 123456",
3571
- "<%= config.bin %> verify check ver_xxx -c 123456"
3564
+ "<%= config.bin %> teams create --name \"Acme Corp\"",
3565
+ "<%= config.bin %> teams create --name \"Acme Corp\" --description \"Our main team\""
3572
3566
  ],
3573
3567
  "flags": {
3574
3568
  "json": {
@@ -3584,19 +3578,27 @@
3584
3578
  "allowNo": false,
3585
3579
  "type": "boolean"
3586
3580
  },
3587
- "code": {
3588
- "char": "c",
3589
- "description": "The OTP code to verify",
3590
- "name": "code",
3581
+ "name": {
3582
+ "char": "n",
3583
+ "description": "Team name",
3584
+ "name": "name",
3591
3585
  "required": true,
3592
3586
  "hasDynamicHelp": false,
3593
3587
  "multiple": false,
3594
3588
  "type": "option"
3589
+ },
3590
+ "description": {
3591
+ "char": "d",
3592
+ "description": "Team description",
3593
+ "name": "description",
3594
+ "hasDynamicHelp": false,
3595
+ "multiple": false,
3596
+ "type": "option"
3595
3597
  }
3596
3598
  },
3597
3599
  "hasDynamicHelp": false,
3598
3600
  "hiddenAliases": [],
3599
- "id": "verify:check",
3601
+ "id": "teams:create",
3600
3602
  "pluginAlias": "@sendly/cli",
3601
3603
  "pluginName": "@sendly/cli",
3602
3604
  "pluginType": "core",
@@ -3605,20 +3607,17 @@
3605
3607
  "relativePath": [
3606
3608
  "dist",
3607
3609
  "commands",
3608
- "verify",
3609
- "check.js"
3610
+ "teams",
3611
+ "create.js"
3610
3612
  ]
3611
3613
  },
3612
- "verify:list": {
3614
+ "teams:current": {
3613
3615
  "aliases": [],
3614
3616
  "args": {},
3615
- "description": "List recent verifications",
3617
+ "description": "Show the currently active team",
3616
3618
  "examples": [
3617
- "<%= config.bin %> verify list",
3618
- "<%= config.bin %> verify list --limit 10",
3619
- "<%= config.bin %> verify list --page 2",
3620
- "<%= config.bin %> verify list --status verified",
3621
- "<%= config.bin %> verify list --json"
3619
+ "<%= config.bin %> teams current",
3620
+ "<%= config.bin %> teams current --json"
3622
3621
  ],
3623
3622
  "flags": {
3624
3623
  "json": {
@@ -3633,43 +3632,11 @@
3633
3632
  "name": "quiet",
3634
3633
  "allowNo": false,
3635
3634
  "type": "boolean"
3636
- },
3637
- "limit": {
3638
- "char": "l",
3639
- "description": "Number of verifications per page",
3640
- "name": "limit",
3641
- "default": 20,
3642
- "hasDynamicHelp": false,
3643
- "multiple": false,
3644
- "type": "option"
3645
- },
3646
- "page": {
3647
- "char": "p",
3648
- "description": "Page number (starts at 1)",
3649
- "name": "page",
3650
- "hasDynamicHelp": false,
3651
- "multiple": false,
3652
- "type": "option"
3653
- },
3654
- "offset": {
3655
- "description": "Offset from start (alternative to --page)",
3656
- "name": "offset",
3657
- "hasDynamicHelp": false,
3658
- "multiple": false,
3659
- "type": "option"
3660
- },
3661
- "status": {
3662
- "char": "s",
3663
- "description": "Filter by status (pending, verified, expired, failed)",
3664
- "name": "status",
3665
- "hasDynamicHelp": false,
3666
- "multiple": false,
3667
- "type": "option"
3668
3635
  }
3669
3636
  },
3670
3637
  "hasDynamicHelp": false,
3671
3638
  "hiddenAliases": [],
3672
- "id": "verify:list",
3639
+ "id": "teams:current",
3673
3640
  "pluginAlias": "@sendly/cli",
3674
3641
  "pluginName": "@sendly/cli",
3675
3642
  "pluginType": "core",
@@ -3678,23 +3645,23 @@
3678
3645
  "relativePath": [
3679
3646
  "dist",
3680
3647
  "commands",
3681
- "verify",
3682
- "list.js"
3648
+ "teams",
3649
+ "current.js"
3683
3650
  ]
3684
3651
  },
3685
- "verify:resend": {
3652
+ "teams:invite": {
3686
3653
  "aliases": [],
3687
3654
  "args": {
3688
- "id": {
3689
- "description": "Verification ID",
3690
- "name": "id",
3655
+ "email": {
3656
+ "description": "Email address to invite",
3657
+ "name": "email",
3691
3658
  "required": true
3692
3659
  }
3693
3660
  },
3694
- "description": "Resend an OTP verification code",
3661
+ "description": "Invite a member to the current team",
3695
3662
  "examples": [
3696
- "<%= config.bin %> verify resend ver_xxx",
3697
- "<%= config.bin %> verify resend ver_xxx --json"
3663
+ "<%= config.bin %> teams invite user@example.com",
3664
+ "<%= config.bin %> teams invite user@example.com --role admin"
3698
3665
  ],
3699
3666
  "flags": {
3700
3667
  "json": {
@@ -3709,11 +3676,25 @@
3709
3676
  "name": "quiet",
3710
3677
  "allowNo": false,
3711
3678
  "type": "boolean"
3679
+ },
3680
+ "role": {
3681
+ "char": "r",
3682
+ "description": "Role to assign (admin, member, viewer)",
3683
+ "name": "role",
3684
+ "default": "member",
3685
+ "hasDynamicHelp": false,
3686
+ "multiple": false,
3687
+ "options": [
3688
+ "admin",
3689
+ "member",
3690
+ "viewer"
3691
+ ],
3692
+ "type": "option"
3712
3693
  }
3713
3694
  },
3714
3695
  "hasDynamicHelp": false,
3715
3696
  "hiddenAliases": [],
3716
- "id": "verify:resend",
3697
+ "id": "teams:invite",
3717
3698
  "pluginAlias": "@sendly/cli",
3718
3699
  "pluginName": "@sendly/cli",
3719
3700
  "pluginType": "core",
@@ -3722,20 +3703,17 @@
3722
3703
  "relativePath": [
3723
3704
  "dist",
3724
3705
  "commands",
3725
- "verify",
3726
- "resend.js"
3706
+ "teams",
3707
+ "invite.js"
3727
3708
  ]
3728
3709
  },
3729
- "verify:send": {
3710
+ "teams:list": {
3730
3711
  "aliases": [],
3731
3712
  "args": {},
3732
- "description": "Send an OTP verification code",
3713
+ "description": "List your teams",
3733
3714
  "examples": [
3734
- "<%= config.bin %> verify send --to \"+1234567890\"",
3735
- "<%= config.bin %> verify send --to \"+1234567890\" --app-name \"MyApp\"",
3736
- "<%= config.bin %> verify send --to \"+1234567890\" --template tpl_preset_2fa",
3737
- "<%= config.bin %> verify send --to \"+1234567890\" --profile vp_xxx",
3738
- "<%= config.bin %> verify send --to \"+1234567890\" --code-length 8 --timeout 120"
3715
+ "<%= config.bin %> teams list",
3716
+ "<%= config.bin %> teams list --json"
3739
3717
  ],
3740
3718
  "flags": {
3741
3719
  "json": {
@@ -3750,57 +3728,49 @@
3750
3728
  "name": "quiet",
3751
3729
  "allowNo": false,
3752
3730
  "type": "boolean"
3731
+ }
3732
+ },
3733
+ "hasDynamicHelp": false,
3734
+ "hiddenAliases": [],
3735
+ "id": "teams:list",
3736
+ "pluginAlias": "@sendly/cli",
3737
+ "pluginName": "@sendly/cli",
3738
+ "pluginType": "core",
3739
+ "strict": true,
3740
+ "isESM": true,
3741
+ "relativePath": [
3742
+ "dist",
3743
+ "commands",
3744
+ "teams",
3745
+ "list.js"
3746
+ ]
3747
+ },
3748
+ "teams:members": {
3749
+ "aliases": [],
3750
+ "args": {},
3751
+ "description": "List members of the current team",
3752
+ "examples": [
3753
+ "<%= config.bin %> teams members",
3754
+ "<%= config.bin %> teams members --json"
3755
+ ],
3756
+ "flags": {
3757
+ "json": {
3758
+ "description": "Output in JSON format",
3759
+ "name": "json",
3760
+ "allowNo": false,
3761
+ "type": "boolean"
3753
3762
  },
3754
- "to": {
3755
- "char": "t",
3756
- "description": "Recipient phone number (E.164 format)",
3757
- "name": "to",
3758
- "required": true,
3759
- "hasDynamicHelp": false,
3760
- "multiple": false,
3761
- "type": "option"
3762
- },
3763
- "app-name": {
3764
- "char": "a",
3765
- "description": "App name shown in message (defaults to your business name)",
3766
- "name": "app-name",
3767
- "hasDynamicHelp": false,
3768
- "multiple": false,
3769
- "type": "option"
3770
- },
3771
- "template": {
3772
- "description": "Template ID to use (defaults to tpl_preset_otp)",
3773
- "name": "template",
3774
- "hasDynamicHelp": false,
3775
- "multiple": false,
3776
- "type": "option"
3777
- },
3778
- "profile": {
3779
- "char": "p",
3780
- "description": "Verify profile ID for preconfigured settings",
3781
- "name": "profile",
3782
- "hasDynamicHelp": false,
3783
- "multiple": false,
3784
- "type": "option"
3785
- },
3786
- "code-length": {
3787
- "description": "Length of OTP code (4-10, default: 6)",
3788
- "name": "code-length",
3789
- "hasDynamicHelp": false,
3790
- "multiple": false,
3791
- "type": "option"
3792
- },
3793
- "timeout": {
3794
- "description": "Code validity in seconds (60-3600, default: 300)",
3795
- "name": "timeout",
3796
- "hasDynamicHelp": false,
3797
- "multiple": false,
3798
- "type": "option"
3763
+ "quiet": {
3764
+ "char": "q",
3765
+ "description": "Minimal output",
3766
+ "name": "quiet",
3767
+ "allowNo": false,
3768
+ "type": "boolean"
3799
3769
  }
3800
3770
  },
3801
3771
  "hasDynamicHelp": false,
3802
3772
  "hiddenAliases": [],
3803
- "id": "verify:send",
3773
+ "id": "teams:members",
3804
3774
  "pluginAlias": "@sendly/cli",
3805
3775
  "pluginName": "@sendly/cli",
3806
3776
  "pluginType": "core",
@@ -3809,23 +3779,24 @@
3809
3779
  "relativePath": [
3810
3780
  "dist",
3811
3781
  "commands",
3812
- "verify",
3813
- "send.js"
3782
+ "teams",
3783
+ "members.js"
3814
3784
  ]
3815
3785
  },
3816
- "verify:status": {
3786
+ "teams:switch": {
3817
3787
  "aliases": [],
3818
3788
  "args": {
3819
- "id": {
3820
- "description": "Verification ID",
3821
- "name": "id",
3822
- "required": true
3789
+ "org": {
3790
+ "description": "Organization ID or slug to switch to",
3791
+ "name": "org",
3792
+ "required": false
3823
3793
  }
3824
3794
  },
3825
- "description": "Get verification status",
3795
+ "description": "Switch the active team",
3826
3796
  "examples": [
3827
- "<%= config.bin %> verify status ver_xxx",
3828
- "<%= config.bin %> verify status ver_xxx --json"
3797
+ "<%= config.bin %> teams switch",
3798
+ "<%= config.bin %> teams switch <org-id-or-slug>",
3799
+ "<%= config.bin %> teams switch --clear"
3829
3800
  ],
3830
3801
  "flags": {
3831
3802
  "json": {
@@ -3844,7 +3815,7 @@
3844
3815
  },
3845
3816
  "hasDynamicHelp": false,
3846
3817
  "hiddenAliases": [],
3847
- "id": "verify:status",
3818
+ "id": "teams:switch",
3848
3819
  "pluginAlias": "@sendly/cli",
3849
3820
  "pluginName": "@sendly/cli",
3850
3821
  "pluginType": "core",
@@ -3853,17 +3824,24 @@
3853
3824
  "relativePath": [
3854
3825
  "dist",
3855
3826
  "commands",
3856
- "verify",
3857
- "status.js"
3827
+ "teams",
3828
+ "switch.js"
3858
3829
  ]
3859
3830
  },
3860
- "teams:create": {
3831
+ "templates:clone": {
3861
3832
  "aliases": [],
3862
- "args": {},
3863
- "description": "Create a new team",
3833
+ "args": {
3834
+ "id": {
3835
+ "description": "Template ID to clone",
3836
+ "name": "id",
3837
+ "required": true
3838
+ }
3839
+ },
3840
+ "description": "Clone a template",
3864
3841
  "examples": [
3865
- "<%= config.bin %> teams create --name \"Acme Corp\"",
3866
- "<%= config.bin %> teams create --name \"Acme Corp\" --description \"Our main team\""
3842
+ "<%= config.bin %> templates clone tpl_preset_otp",
3843
+ "<%= config.bin %> templates clone tpl_preset_otp --name \"My Custom OTP\"",
3844
+ "<%= config.bin %> templates clone tpl_xxx --json"
3867
3845
  ],
3868
3846
  "flags": {
3869
3847
  "json": {
@@ -3881,17 +3859,8 @@
3881
3859
  },
3882
3860
  "name": {
3883
3861
  "char": "n",
3884
- "description": "Team name",
3862
+ "description": "Name for the cloned template",
3885
3863
  "name": "name",
3886
- "required": true,
3887
- "hasDynamicHelp": false,
3888
- "multiple": false,
3889
- "type": "option"
3890
- },
3891
- "description": {
3892
- "char": "d",
3893
- "description": "Team description",
3894
- "name": "description",
3895
3864
  "hasDynamicHelp": false,
3896
3865
  "multiple": false,
3897
3866
  "type": "option"
@@ -3899,7 +3868,7 @@
3899
3868
  },
3900
3869
  "hasDynamicHelp": false,
3901
3870
  "hiddenAliases": [],
3902
- "id": "teams:create",
3871
+ "id": "templates:clone",
3903
3872
  "pluginAlias": "@sendly/cli",
3904
3873
  "pluginName": "@sendly/cli",
3905
3874
  "pluginType": "core",
@@ -3908,17 +3877,17 @@
3908
3877
  "relativePath": [
3909
3878
  "dist",
3910
3879
  "commands",
3911
- "teams",
3912
- "create.js"
3880
+ "templates",
3881
+ "clone.js"
3913
3882
  ]
3914
3883
  },
3915
- "teams:current": {
3884
+ "templates:create": {
3916
3885
  "aliases": [],
3917
3886
  "args": {},
3918
- "description": "Show the currently active team",
3887
+ "description": "Create a new SMS template",
3919
3888
  "examples": [
3920
- "<%= config.bin %> teams current",
3921
- "<%= config.bin %> teams current --json"
3889
+ "<%= config.bin %> templates create --name \"My OTP\" --text \"Your code is {{code}}\"",
3890
+ "<%= config.bin %> templates create --name \"Login\" --text \"{{code}} is your {{app_name}} login code\""
3922
3891
  ],
3923
3892
  "flags": {
3924
3893
  "json": {
@@ -3933,11 +3902,29 @@
3933
3902
  "name": "quiet",
3934
3903
  "allowNo": false,
3935
3904
  "type": "boolean"
3905
+ },
3906
+ "name": {
3907
+ "char": "n",
3908
+ "description": "Template name",
3909
+ "name": "name",
3910
+ "required": true,
3911
+ "hasDynamicHelp": false,
3912
+ "multiple": false,
3913
+ "type": "option"
3914
+ },
3915
+ "text": {
3916
+ "char": "t",
3917
+ "description": "Message text (use {{code}} and {{app_name}} variables)",
3918
+ "name": "text",
3919
+ "required": true,
3920
+ "hasDynamicHelp": false,
3921
+ "multiple": false,
3922
+ "type": "option"
3936
3923
  }
3937
3924
  },
3938
3925
  "hasDynamicHelp": false,
3939
3926
  "hiddenAliases": [],
3940
- "id": "teams:current",
3927
+ "id": "templates:create",
3941
3928
  "pluginAlias": "@sendly/cli",
3942
3929
  "pluginName": "@sendly/cli",
3943
3930
  "pluginType": "core",
@@ -3946,23 +3933,23 @@
3946
3933
  "relativePath": [
3947
3934
  "dist",
3948
3935
  "commands",
3949
- "teams",
3950
- "current.js"
3936
+ "templates",
3937
+ "create.js"
3951
3938
  ]
3952
3939
  },
3953
- "teams:invite": {
3940
+ "templates:delete": {
3954
3941
  "aliases": [],
3955
3942
  "args": {
3956
- "email": {
3957
- "description": "Email address to invite",
3958
- "name": "email",
3943
+ "id": {
3944
+ "description": "Template ID",
3945
+ "name": "id",
3959
3946
  "required": true
3960
3947
  }
3961
3948
  },
3962
- "description": "Invite a member to the current team",
3949
+ "description": "Delete a template",
3963
3950
  "examples": [
3964
- "<%= config.bin %> teams invite user@example.com",
3965
- "<%= config.bin %> teams invite user@example.com --role admin"
3951
+ "<%= config.bin %> templates delete tpl_xxx",
3952
+ "<%= config.bin %> templates delete tpl_xxx --force"
3966
3953
  ],
3967
3954
  "flags": {
3968
3955
  "json": {
@@ -3978,24 +3965,17 @@
3978
3965
  "allowNo": false,
3979
3966
  "type": "boolean"
3980
3967
  },
3981
- "role": {
3982
- "char": "r",
3983
- "description": "Role to assign (admin, member, viewer)",
3984
- "name": "role",
3985
- "default": "member",
3986
- "hasDynamicHelp": false,
3987
- "multiple": false,
3988
- "options": [
3989
- "admin",
3990
- "member",
3991
- "viewer"
3992
- ],
3993
- "type": "option"
3968
+ "force": {
3969
+ "char": "f",
3970
+ "description": "Skip confirmation",
3971
+ "name": "force",
3972
+ "allowNo": false,
3973
+ "type": "boolean"
3994
3974
  }
3995
3975
  },
3996
3976
  "hasDynamicHelp": false,
3997
3977
  "hiddenAliases": [],
3998
- "id": "teams:invite",
3978
+ "id": "templates:delete",
3999
3979
  "pluginAlias": "@sendly/cli",
4000
3980
  "pluginName": "@sendly/cli",
4001
3981
  "pluginType": "core",
@@ -4004,17 +3984,23 @@
4004
3984
  "relativePath": [
4005
3985
  "dist",
4006
3986
  "commands",
4007
- "teams",
4008
- "invite.js"
3987
+ "templates",
3988
+ "delete.js"
4009
3989
  ]
4010
3990
  },
4011
- "teams:list": {
3991
+ "templates:get": {
4012
3992
  "aliases": [],
4013
- "args": {},
4014
- "description": "List your teams",
3993
+ "args": {
3994
+ "id": {
3995
+ "description": "Template ID",
3996
+ "name": "id",
3997
+ "required": true
3998
+ }
3999
+ },
4000
+ "description": "Get template details",
4015
4001
  "examples": [
4016
- "<%= config.bin %> teams list",
4017
- "<%= config.bin %> teams list --json"
4002
+ "<%= config.bin %> templates get tpl_xxx",
4003
+ "<%= config.bin %> templates get tpl_preset_2fa"
4018
4004
  ],
4019
4005
  "flags": {
4020
4006
  "json": {
@@ -4033,7 +4019,7 @@
4033
4019
  },
4034
4020
  "hasDynamicHelp": false,
4035
4021
  "hiddenAliases": [],
4036
- "id": "teams:list",
4022
+ "id": "templates:get",
4037
4023
  "pluginAlias": "@sendly/cli",
4038
4024
  "pluginName": "@sendly/cli",
4039
4025
  "pluginType": "core",
@@ -4042,17 +4028,17 @@
4042
4028
  "relativePath": [
4043
4029
  "dist",
4044
4030
  "commands",
4045
- "teams",
4046
- "list.js"
4031
+ "templates",
4032
+ "get.js"
4047
4033
  ]
4048
4034
  },
4049
- "teams:members": {
4035
+ "templates:list": {
4050
4036
  "aliases": [],
4051
4037
  "args": {},
4052
- "description": "List members of the current team",
4038
+ "description": "List your SMS templates",
4053
4039
  "examples": [
4054
- "<%= config.bin %> teams members",
4055
- "<%= config.bin %> teams members --json"
4040
+ "<%= config.bin %> templates list",
4041
+ "<%= config.bin %> templates list --json"
4056
4042
  ],
4057
4043
  "flags": {
4058
4044
  "json": {
@@ -4071,7 +4057,7 @@
4071
4057
  },
4072
4058
  "hasDynamicHelp": false,
4073
4059
  "hiddenAliases": [],
4074
- "id": "teams:members",
4060
+ "id": "templates:list",
4075
4061
  "pluginAlias": "@sendly/cli",
4076
4062
  "pluginName": "@sendly/cli",
4077
4063
  "pluginType": "core",
@@ -4080,24 +4066,60 @@
4080
4066
  "relativePath": [
4081
4067
  "dist",
4082
4068
  "commands",
4083
- "teams",
4084
- "members.js"
4069
+ "templates",
4070
+ "list.js"
4085
4071
  ]
4086
4072
  },
4087
- "teams:switch": {
4073
+ "templates:presets": {
4074
+ "aliases": [],
4075
+ "args": {},
4076
+ "description": "List available preset templates",
4077
+ "examples": [
4078
+ "<%= config.bin %> templates presets",
4079
+ "<%= config.bin %> templates presets --json"
4080
+ ],
4081
+ "flags": {
4082
+ "json": {
4083
+ "description": "Output in JSON format",
4084
+ "name": "json",
4085
+ "allowNo": false,
4086
+ "type": "boolean"
4087
+ },
4088
+ "quiet": {
4089
+ "char": "q",
4090
+ "description": "Minimal output",
4091
+ "name": "quiet",
4092
+ "allowNo": false,
4093
+ "type": "boolean"
4094
+ }
4095
+ },
4096
+ "hasDynamicHelp": false,
4097
+ "hiddenAliases": [],
4098
+ "id": "templates:presets",
4099
+ "pluginAlias": "@sendly/cli",
4100
+ "pluginName": "@sendly/cli",
4101
+ "pluginType": "core",
4102
+ "strict": true,
4103
+ "isESM": true,
4104
+ "relativePath": [
4105
+ "dist",
4106
+ "commands",
4107
+ "templates",
4108
+ "presets.js"
4109
+ ]
4110
+ },
4111
+ "templates:publish": {
4088
4112
  "aliases": [],
4089
4113
  "args": {
4090
- "org": {
4091
- "description": "Organization ID or slug to switch to",
4092
- "name": "org",
4093
- "required": false
4114
+ "id": {
4115
+ "description": "Template ID",
4116
+ "name": "id",
4117
+ "required": true
4094
4118
  }
4095
4119
  },
4096
- "description": "Switch the active team",
4120
+ "description": "Publish a draft template (locks it for use)",
4097
4121
  "examples": [
4098
- "<%= config.bin %> teams switch",
4099
- "<%= config.bin %> teams switch <org-id-or-slug>",
4100
- "<%= config.bin %> teams switch --clear"
4122
+ "<%= config.bin %> templates publish tpl_xxx"
4101
4123
  ],
4102
4124
  "flags": {
4103
4125
  "json": {
@@ -4116,7 +4138,7 @@
4116
4138
  },
4117
4139
  "hasDynamicHelp": false,
4118
4140
  "hiddenAliases": [],
4119
- "id": "teams:switch",
4141
+ "id": "templates:publish",
4120
4142
  "pluginAlias": "@sendly/cli",
4121
4143
  "pluginName": "@sendly/cli",
4122
4144
  "pluginType": "core",
@@ -4125,24 +4147,23 @@
4125
4147
  "relativePath": [
4126
4148
  "dist",
4127
4149
  "commands",
4128
- "teams",
4129
- "switch.js"
4150
+ "templates",
4151
+ "publish.js"
4130
4152
  ]
4131
4153
  },
4132
- "templates:clone": {
4154
+ "verify:check": {
4133
4155
  "aliases": [],
4134
4156
  "args": {
4135
4157
  "id": {
4136
- "description": "Template ID to clone",
4158
+ "description": "Verification ID",
4137
4159
  "name": "id",
4138
4160
  "required": true
4139
4161
  }
4140
4162
  },
4141
- "description": "Clone a template",
4163
+ "description": "Verify an OTP code",
4142
4164
  "examples": [
4143
- "<%= config.bin %> templates clone tpl_preset_otp",
4144
- "<%= config.bin %> templates clone tpl_preset_otp --name \"My Custom OTP\"",
4145
- "<%= config.bin %> templates clone tpl_xxx --json"
4165
+ "<%= config.bin %> verify check ver_xxx --code 123456",
4166
+ "<%= config.bin %> verify check ver_xxx -c 123456"
4146
4167
  ],
4147
4168
  "flags": {
4148
4169
  "json": {
@@ -4158,10 +4179,11 @@
4158
4179
  "allowNo": false,
4159
4180
  "type": "boolean"
4160
4181
  },
4161
- "name": {
4162
- "char": "n",
4163
- "description": "Name for the cloned template",
4164
- "name": "name",
4182
+ "code": {
4183
+ "char": "c",
4184
+ "description": "The OTP code to verify",
4185
+ "name": "code",
4186
+ "required": true,
4165
4187
  "hasDynamicHelp": false,
4166
4188
  "multiple": false,
4167
4189
  "type": "option"
@@ -4169,7 +4191,7 @@
4169
4191
  },
4170
4192
  "hasDynamicHelp": false,
4171
4193
  "hiddenAliases": [],
4172
- "id": "templates:clone",
4194
+ "id": "verify:check",
4173
4195
  "pluginAlias": "@sendly/cli",
4174
4196
  "pluginName": "@sendly/cli",
4175
4197
  "pluginType": "core",
@@ -4178,17 +4200,20 @@
4178
4200
  "relativePath": [
4179
4201
  "dist",
4180
4202
  "commands",
4181
- "templates",
4182
- "clone.js"
4203
+ "verify",
4204
+ "check.js"
4183
4205
  ]
4184
4206
  },
4185
- "templates:create": {
4207
+ "verify:list": {
4186
4208
  "aliases": [],
4187
4209
  "args": {},
4188
- "description": "Create a new SMS template",
4210
+ "description": "List recent verifications",
4189
4211
  "examples": [
4190
- "<%= config.bin %> templates create --name \"My OTP\" --text \"Your code is {{code}}\"",
4191
- "<%= config.bin %> templates create --name \"Login\" --text \"{{code}} is your {{app_name}} login code\""
4212
+ "<%= config.bin %> verify list",
4213
+ "<%= config.bin %> verify list --limit 10",
4214
+ "<%= config.bin %> verify list --page 2",
4215
+ "<%= config.bin %> verify list --status verified",
4216
+ "<%= config.bin %> verify list --json"
4192
4217
  ],
4193
4218
  "flags": {
4194
4219
  "json": {
@@ -4204,28 +4229,173 @@
4204
4229
  "allowNo": false,
4205
4230
  "type": "boolean"
4206
4231
  },
4207
- "name": {
4208
- "char": "n",
4209
- "description": "Template name",
4210
- "name": "name",
4211
- "required": true,
4232
+ "limit": {
4233
+ "char": "l",
4234
+ "description": "Number of verifications per page",
4235
+ "name": "limit",
4236
+ "default": 20,
4212
4237
  "hasDynamicHelp": false,
4213
4238
  "multiple": false,
4214
4239
  "type": "option"
4215
4240
  },
4216
- "text": {
4241
+ "page": {
4242
+ "char": "p",
4243
+ "description": "Page number (starts at 1)",
4244
+ "name": "page",
4245
+ "hasDynamicHelp": false,
4246
+ "multiple": false,
4247
+ "type": "option"
4248
+ },
4249
+ "offset": {
4250
+ "description": "Offset from start (alternative to --page)",
4251
+ "name": "offset",
4252
+ "hasDynamicHelp": false,
4253
+ "multiple": false,
4254
+ "type": "option"
4255
+ },
4256
+ "status": {
4257
+ "char": "s",
4258
+ "description": "Filter by status (pending, verified, expired, failed)",
4259
+ "name": "status",
4260
+ "hasDynamicHelp": false,
4261
+ "multiple": false,
4262
+ "type": "option"
4263
+ }
4264
+ },
4265
+ "hasDynamicHelp": false,
4266
+ "hiddenAliases": [],
4267
+ "id": "verify:list",
4268
+ "pluginAlias": "@sendly/cli",
4269
+ "pluginName": "@sendly/cli",
4270
+ "pluginType": "core",
4271
+ "strict": true,
4272
+ "isESM": true,
4273
+ "relativePath": [
4274
+ "dist",
4275
+ "commands",
4276
+ "verify",
4277
+ "list.js"
4278
+ ]
4279
+ },
4280
+ "verify:resend": {
4281
+ "aliases": [],
4282
+ "args": {
4283
+ "id": {
4284
+ "description": "Verification ID",
4285
+ "name": "id",
4286
+ "required": true
4287
+ }
4288
+ },
4289
+ "description": "Resend an OTP verification code",
4290
+ "examples": [
4291
+ "<%= config.bin %> verify resend ver_xxx",
4292
+ "<%= config.bin %> verify resend ver_xxx --json"
4293
+ ],
4294
+ "flags": {
4295
+ "json": {
4296
+ "description": "Output in JSON format",
4297
+ "name": "json",
4298
+ "allowNo": false,
4299
+ "type": "boolean"
4300
+ },
4301
+ "quiet": {
4302
+ "char": "q",
4303
+ "description": "Minimal output",
4304
+ "name": "quiet",
4305
+ "allowNo": false,
4306
+ "type": "boolean"
4307
+ }
4308
+ },
4309
+ "hasDynamicHelp": false,
4310
+ "hiddenAliases": [],
4311
+ "id": "verify:resend",
4312
+ "pluginAlias": "@sendly/cli",
4313
+ "pluginName": "@sendly/cli",
4314
+ "pluginType": "core",
4315
+ "strict": true,
4316
+ "isESM": true,
4317
+ "relativePath": [
4318
+ "dist",
4319
+ "commands",
4320
+ "verify",
4321
+ "resend.js"
4322
+ ]
4323
+ },
4324
+ "verify:send": {
4325
+ "aliases": [],
4326
+ "args": {},
4327
+ "description": "Send an OTP verification code",
4328
+ "examples": [
4329
+ "<%= config.bin %> verify send --to \"+1234567890\"",
4330
+ "<%= config.bin %> verify send --to \"+1234567890\" --app-name \"MyApp\"",
4331
+ "<%= config.bin %> verify send --to \"+1234567890\" --template tpl_preset_2fa",
4332
+ "<%= config.bin %> verify send --to \"+1234567890\" --profile vp_xxx",
4333
+ "<%= config.bin %> verify send --to \"+1234567890\" --code-length 8 --timeout 120"
4334
+ ],
4335
+ "flags": {
4336
+ "json": {
4337
+ "description": "Output in JSON format",
4338
+ "name": "json",
4339
+ "allowNo": false,
4340
+ "type": "boolean"
4341
+ },
4342
+ "quiet": {
4343
+ "char": "q",
4344
+ "description": "Minimal output",
4345
+ "name": "quiet",
4346
+ "allowNo": false,
4347
+ "type": "boolean"
4348
+ },
4349
+ "to": {
4217
4350
  "char": "t",
4218
- "description": "Message text (use {{code}} and {{app_name}} variables)",
4219
- "name": "text",
4351
+ "description": "Recipient phone number (E.164 format)",
4352
+ "name": "to",
4220
4353
  "required": true,
4221
4354
  "hasDynamicHelp": false,
4222
4355
  "multiple": false,
4223
4356
  "type": "option"
4357
+ },
4358
+ "app-name": {
4359
+ "char": "a",
4360
+ "description": "App name shown in message (defaults to your business name)",
4361
+ "name": "app-name",
4362
+ "hasDynamicHelp": false,
4363
+ "multiple": false,
4364
+ "type": "option"
4365
+ },
4366
+ "template": {
4367
+ "description": "Template ID to use (defaults to tpl_preset_otp)",
4368
+ "name": "template",
4369
+ "hasDynamicHelp": false,
4370
+ "multiple": false,
4371
+ "type": "option"
4372
+ },
4373
+ "profile": {
4374
+ "char": "p",
4375
+ "description": "Verify profile ID for preconfigured settings",
4376
+ "name": "profile",
4377
+ "hasDynamicHelp": false,
4378
+ "multiple": false,
4379
+ "type": "option"
4380
+ },
4381
+ "code-length": {
4382
+ "description": "Length of OTP code (4-10, default: 6)",
4383
+ "name": "code-length",
4384
+ "hasDynamicHelp": false,
4385
+ "multiple": false,
4386
+ "type": "option"
4387
+ },
4388
+ "timeout": {
4389
+ "description": "Code validity in seconds (60-3600, default: 300)",
4390
+ "name": "timeout",
4391
+ "hasDynamicHelp": false,
4392
+ "multiple": false,
4393
+ "type": "option"
4224
4394
  }
4225
4395
  },
4226
4396
  "hasDynamicHelp": false,
4227
4397
  "hiddenAliases": [],
4228
- "id": "templates:create",
4398
+ "id": "verify:send",
4229
4399
  "pluginAlias": "@sendly/cli",
4230
4400
  "pluginName": "@sendly/cli",
4231
4401
  "pluginType": "core",
@@ -4234,23 +4404,23 @@
4234
4404
  "relativePath": [
4235
4405
  "dist",
4236
4406
  "commands",
4237
- "templates",
4238
- "create.js"
4407
+ "verify",
4408
+ "send.js"
4239
4409
  ]
4240
4410
  },
4241
- "templates:delete": {
4411
+ "verify:status": {
4242
4412
  "aliases": [],
4243
4413
  "args": {
4244
4414
  "id": {
4245
- "description": "Template ID",
4415
+ "description": "Verification ID",
4246
4416
  "name": "id",
4247
4417
  "required": true
4248
4418
  }
4249
4419
  },
4250
- "description": "Delete a template",
4420
+ "description": "Get verification status",
4251
4421
  "examples": [
4252
- "<%= config.bin %> templates delete tpl_xxx",
4253
- "<%= config.bin %> templates delete tpl_xxx --force"
4422
+ "<%= config.bin %> verify status ver_xxx",
4423
+ "<%= config.bin %> verify status ver_xxx --json"
4254
4424
  ],
4255
4425
  "flags": {
4256
4426
  "json": {
@@ -4265,18 +4435,90 @@
4265
4435
  "name": "quiet",
4266
4436
  "allowNo": false,
4267
4437
  "type": "boolean"
4438
+ }
4439
+ },
4440
+ "hasDynamicHelp": false,
4441
+ "hiddenAliases": [],
4442
+ "id": "verify:status",
4443
+ "pluginAlias": "@sendly/cli",
4444
+ "pluginName": "@sendly/cli",
4445
+ "pluginType": "core",
4446
+ "strict": true,
4447
+ "isESM": true,
4448
+ "relativePath": [
4449
+ "dist",
4450
+ "commands",
4451
+ "verify",
4452
+ "status.js"
4453
+ ]
4454
+ },
4455
+ "webhooks:create": {
4456
+ "aliases": [],
4457
+ "args": {},
4458
+ "description": "Create a webhook",
4459
+ "examples": [
4460
+ "<%= config.bin %> webhooks create --url https://myapp.com/webhook --events message.delivered",
4461
+ "<%= config.bin %> webhooks create --url https://myapp.com/webhook --events message.delivered,message.failed --description \"Production webhook\"",
4462
+ "<%= config.bin %> webhooks create --url https://webhook.site/abc123 --events message.sent --json"
4463
+ ],
4464
+ "flags": {
4465
+ "json": {
4466
+ "description": "Output in JSON format",
4467
+ "name": "json",
4468
+ "allowNo": false,
4469
+ "type": "boolean"
4268
4470
  },
4269
- "force": {
4270
- "char": "f",
4271
- "description": "Skip confirmation",
4272
- "name": "force",
4471
+ "quiet": {
4472
+ "char": "q",
4473
+ "description": "Minimal output",
4474
+ "name": "quiet",
4273
4475
  "allowNo": false,
4274
4476
  "type": "boolean"
4477
+ },
4478
+ "url": {
4479
+ "char": "u",
4480
+ "description": "Webhook URL (must be HTTPS)",
4481
+ "name": "url",
4482
+ "required": true,
4483
+ "hasDynamicHelp": false,
4484
+ "multiple": false,
4485
+ "type": "option"
4486
+ },
4487
+ "events": {
4488
+ "char": "e",
4489
+ "description": "Comma-separated list of events to listen for",
4490
+ "name": "events",
4491
+ "required": true,
4492
+ "hasDynamicHelp": false,
4493
+ "multiple": false,
4494
+ "type": "option"
4495
+ },
4496
+ "description": {
4497
+ "char": "d",
4498
+ "description": "Description for the webhook",
4499
+ "name": "description",
4500
+ "hasDynamicHelp": false,
4501
+ "multiple": false,
4502
+ "type": "option"
4503
+ },
4504
+ "mode": {
4505
+ "char": "m",
4506
+ "description": "Event mode filter: all (default), test (sandbox only), live (production only)",
4507
+ "name": "mode",
4508
+ "default": "all",
4509
+ "hasDynamicHelp": false,
4510
+ "multiple": false,
4511
+ "options": [
4512
+ "all",
4513
+ "test",
4514
+ "live"
4515
+ ],
4516
+ "type": "option"
4275
4517
  }
4276
4518
  },
4277
4519
  "hasDynamicHelp": false,
4278
4520
  "hiddenAliases": [],
4279
- "id": "templates:delete",
4521
+ "id": "webhooks:create",
4280
4522
  "pluginAlias": "@sendly/cli",
4281
4523
  "pluginName": "@sendly/cli",
4282
4524
  "pluginType": "core",
@@ -4285,23 +4527,24 @@
4285
4527
  "relativePath": [
4286
4528
  "dist",
4287
4529
  "commands",
4288
- "templates",
4289
- "delete.js"
4530
+ "webhooks",
4531
+ "create.js"
4290
4532
  ]
4291
4533
  },
4292
- "templates:get": {
4534
+ "webhooks:delete": {
4293
4535
  "aliases": [],
4294
4536
  "args": {
4295
4537
  "id": {
4296
- "description": "Template ID",
4538
+ "description": "Webhook ID to delete",
4297
4539
  "name": "id",
4298
4540
  "required": true
4299
4541
  }
4300
4542
  },
4301
- "description": "Get template details",
4543
+ "description": "Delete a webhook",
4302
4544
  "examples": [
4303
- "<%= config.bin %> templates get tpl_xxx",
4304
- "<%= config.bin %> templates get tpl_preset_2fa"
4545
+ "<%= config.bin %> webhooks delete whk_abc123",
4546
+ "<%= config.bin %> webhooks delete whk_abc123 --yes",
4547
+ "<%= config.bin %> webhooks delete whk_abc123 --json"
4305
4548
  ],
4306
4549
  "flags": {
4307
4550
  "json": {
@@ -4316,11 +4559,18 @@
4316
4559
  "name": "quiet",
4317
4560
  "allowNo": false,
4318
4561
  "type": "boolean"
4562
+ },
4563
+ "yes": {
4564
+ "char": "y",
4565
+ "description": "Skip confirmation prompt",
4566
+ "name": "yes",
4567
+ "allowNo": false,
4568
+ "type": "boolean"
4319
4569
  }
4320
4570
  },
4321
4571
  "hasDynamicHelp": false,
4322
4572
  "hiddenAliases": [],
4323
- "id": "templates:get",
4573
+ "id": "webhooks:delete",
4324
4574
  "pluginAlias": "@sendly/cli",
4325
4575
  "pluginName": "@sendly/cli",
4326
4576
  "pluginType": "core",
@@ -4329,17 +4579,25 @@
4329
4579
  "relativePath": [
4330
4580
  "dist",
4331
4581
  "commands",
4332
- "templates",
4333
- "get.js"
4582
+ "webhooks",
4583
+ "delete.js"
4334
4584
  ]
4335
4585
  },
4336
- "templates:list": {
4586
+ "webhooks:deliveries": {
4337
4587
  "aliases": [],
4338
- "args": {},
4339
- "description": "List your SMS templates",
4588
+ "args": {
4589
+ "id": {
4590
+ "description": "Webhook ID",
4591
+ "name": "id",
4592
+ "required": true
4593
+ }
4594
+ },
4595
+ "description": "View webhook delivery history",
4340
4596
  "examples": [
4341
- "<%= config.bin %> templates list",
4342
- "<%= config.bin %> templates list --json"
4597
+ "<%= config.bin %> webhooks deliveries whk_abc123",
4598
+ "<%= config.bin %> webhooks deliveries whk_abc123 --limit 20",
4599
+ "<%= config.bin %> webhooks deliveries whk_abc123 --failed-only",
4600
+ "<%= config.bin %> webhooks deliveries whk_abc123 --json"
4343
4601
  ],
4344
4602
  "flags": {
4345
4603
  "json": {
@@ -4354,11 +4612,26 @@
4354
4612
  "name": "quiet",
4355
4613
  "allowNo": false,
4356
4614
  "type": "boolean"
4615
+ },
4616
+ "limit": {
4617
+ "char": "l",
4618
+ "description": "Number of deliveries to show",
4619
+ "name": "limit",
4620
+ "default": 10,
4621
+ "hasDynamicHelp": false,
4622
+ "multiple": false,
4623
+ "type": "option"
4624
+ },
4625
+ "failed-only": {
4626
+ "description": "Show only failed deliveries",
4627
+ "name": "failed-only",
4628
+ "allowNo": false,
4629
+ "type": "boolean"
4357
4630
  }
4358
4631
  },
4359
4632
  "hasDynamicHelp": false,
4360
4633
  "hiddenAliases": [],
4361
- "id": "templates:list",
4634
+ "id": "webhooks:deliveries",
4362
4635
  "pluginAlias": "@sendly/cli",
4363
4636
  "pluginName": "@sendly/cli",
4364
4637
  "pluginType": "core",
@@ -4367,17 +4640,23 @@
4367
4640
  "relativePath": [
4368
4641
  "dist",
4369
4642
  "commands",
4370
- "templates",
4371
- "list.js"
4643
+ "webhooks",
4644
+ "deliveries.js"
4372
4645
  ]
4373
4646
  },
4374
- "templates:presets": {
4647
+ "webhooks:get": {
4375
4648
  "aliases": [],
4376
- "args": {},
4377
- "description": "List available preset templates",
4649
+ "args": {
4650
+ "id": {
4651
+ "description": "Webhook ID",
4652
+ "name": "id",
4653
+ "required": true
4654
+ }
4655
+ },
4656
+ "description": "Get webhook details",
4378
4657
  "examples": [
4379
- "<%= config.bin %> templates presets",
4380
- "<%= config.bin %> templates presets --json"
4658
+ "<%= config.bin %> webhooks get whk_abc123",
4659
+ "<%= config.bin %> webhooks get whk_abc123 --json"
4381
4660
  ],
4382
4661
  "flags": {
4383
4662
  "json": {
@@ -4396,7 +4675,7 @@
4396
4675
  },
4397
4676
  "hasDynamicHelp": false,
4398
4677
  "hiddenAliases": [],
4399
- "id": "templates:presets",
4678
+ "id": "webhooks:get",
4400
4679
  "pluginAlias": "@sendly/cli",
4401
4680
  "pluginName": "@sendly/cli",
4402
4681
  "pluginType": "core",
@@ -4405,22 +4684,17 @@
4405
4684
  "relativePath": [
4406
4685
  "dist",
4407
4686
  "commands",
4408
- "templates",
4409
- "presets.js"
4687
+ "webhooks",
4688
+ "get.js"
4410
4689
  ]
4411
4690
  },
4412
- "templates:publish": {
4691
+ "webhooks:list": {
4413
4692
  "aliases": [],
4414
- "args": {
4415
- "id": {
4416
- "description": "Template ID",
4417
- "name": "id",
4418
- "required": true
4419
- }
4420
- },
4421
- "description": "Publish a draft template (locks it for use)",
4693
+ "args": {},
4694
+ "description": "List configured webhooks",
4422
4695
  "examples": [
4423
- "<%= config.bin %> templates publish tpl_xxx"
4696
+ "<%= config.bin %> webhooks list",
4697
+ "<%= config.bin %> webhooks list --json"
4424
4698
  ],
4425
4699
  "flags": {
4426
4700
  "json": {
@@ -4439,7 +4713,7 @@
4439
4713
  },
4440
4714
  "hasDynamicHelp": false,
4441
4715
  "hiddenAliases": [],
4442
- "id": "templates:publish",
4716
+ "id": "webhooks:list",
4443
4717
  "pluginAlias": "@sendly/cli",
4444
4718
  "pluginName": "@sendly/cli",
4445
4719
  "pluginType": "core",
@@ -4448,18 +4722,18 @@
4448
4722
  "relativePath": [
4449
4723
  "dist",
4450
4724
  "commands",
4451
- "templates",
4452
- "publish.js"
4725
+ "webhooks",
4726
+ "list.js"
4453
4727
  ]
4454
4728
  },
4455
- "webhooks:create": {
4729
+ "webhooks:listen": {
4456
4730
  "aliases": [],
4457
4731
  "args": {},
4458
- "description": "Create a webhook",
4732
+ "description": "Listen for webhooks locally. Receives events in real-time via WebSocket and forwards them to your local server.",
4459
4733
  "examples": [
4460
- "<%= config.bin %> webhooks create --url https://myapp.com/webhook --events message.delivered",
4461
- "<%= config.bin %> webhooks create --url https://myapp.com/webhook --events message.delivered,message.failed --description \"Production webhook\"",
4462
- "<%= config.bin %> webhooks create --url https://webhook.site/abc123 --events message.sent --json"
4734
+ "<%= config.bin %> webhooks listen",
4735
+ "<%= config.bin %> webhooks listen --forward http://localhost:3000/webhook",
4736
+ "<%= config.bin %> webhooks listen --events message.delivered,message.failed"
4463
4737
  ],
4464
4738
  "flags": {
4465
4739
  "json": {
@@ -4475,11 +4749,11 @@
4475
4749
  "allowNo": false,
4476
4750
  "type": "boolean"
4477
4751
  },
4478
- "url": {
4479
- "char": "u",
4480
- "description": "Webhook URL (must be HTTPS)",
4481
- "name": "url",
4482
- "required": true,
4752
+ "forward": {
4753
+ "char": "f",
4754
+ "description": "Local URL to forward events to",
4755
+ "name": "forward",
4756
+ "default": "http://localhost:3000/webhook",
4483
4757
  "hasDynamicHelp": false,
4484
4758
  "multiple": false,
4485
4759
  "type": "option"
@@ -4488,37 +4762,15 @@
4488
4762
  "char": "e",
4489
4763
  "description": "Comma-separated list of events to listen for",
4490
4764
  "name": "events",
4491
- "required": true,
4492
- "hasDynamicHelp": false,
4493
- "multiple": false,
4494
- "type": "option"
4495
- },
4496
- "description": {
4497
- "char": "d",
4498
- "description": "Description for the webhook",
4499
- "name": "description",
4500
- "hasDynamicHelp": false,
4501
- "multiple": false,
4502
- "type": "option"
4503
- },
4504
- "mode": {
4505
- "char": "m",
4506
- "description": "Event mode filter: all (default), test (sandbox only), live (production only)",
4507
- "name": "mode",
4508
- "default": "all",
4765
+ "default": "message.sent,message.delivered,message.failed,message.bounced,message.retrying",
4509
4766
  "hasDynamicHelp": false,
4510
4767
  "multiple": false,
4511
- "options": [
4512
- "all",
4513
- "test",
4514
- "live"
4515
- ],
4516
4768
  "type": "option"
4517
4769
  }
4518
4770
  },
4519
4771
  "hasDynamicHelp": false,
4520
4772
  "hiddenAliases": [],
4521
- "id": "webhooks:create",
4773
+ "id": "webhooks:listen",
4522
4774
  "pluginAlias": "@sendly/cli",
4523
4775
  "pluginName": "@sendly/cli",
4524
4776
  "pluginType": "core",
@@ -4528,23 +4780,23 @@
4528
4780
  "dist",
4529
4781
  "commands",
4530
4782
  "webhooks",
4531
- "create.js"
4783
+ "listen.js"
4532
4784
  ]
4533
4785
  },
4534
- "webhooks:delete": {
4786
+ "webhooks:rotate-secret": {
4535
4787
  "aliases": [],
4536
4788
  "args": {
4537
4789
  "id": {
4538
- "description": "Webhook ID to delete",
4790
+ "description": "Webhook ID",
4539
4791
  "name": "id",
4540
4792
  "required": true
4541
4793
  }
4542
4794
  },
4543
- "description": "Delete a webhook",
4795
+ "description": "Rotate webhook secret",
4544
4796
  "examples": [
4545
- "<%= config.bin %> webhooks delete whk_abc123",
4546
- "<%= config.bin %> webhooks delete whk_abc123 --yes",
4547
- "<%= config.bin %> webhooks delete whk_abc123 --json"
4797
+ "<%= config.bin %> webhooks rotate-secret whk_abc123",
4798
+ "<%= config.bin %> webhooks rotate-secret whk_abc123 --yes",
4799
+ "<%= config.bin %> webhooks rotate-secret whk_abc123 --json"
4548
4800
  ],
4549
4801
  "flags": {
4550
4802
  "json": {
@@ -4570,7 +4822,7 @@
4570
4822
  },
4571
4823
  "hasDynamicHelp": false,
4572
4824
  "hiddenAliases": [],
4573
- "id": "webhooks:delete",
4825
+ "id": "webhooks:rotate-secret",
4574
4826
  "pluginAlias": "@sendly/cli",
4575
4827
  "pluginName": "@sendly/cli",
4576
4828
  "pluginType": "core",
@@ -4580,24 +4832,22 @@
4580
4832
  "dist",
4581
4833
  "commands",
4582
4834
  "webhooks",
4583
- "delete.js"
4835
+ "rotate-secret.js"
4584
4836
  ]
4585
4837
  },
4586
- "webhooks:deliveries": {
4838
+ "webhooks:test": {
4587
4839
  "aliases": [],
4588
4840
  "args": {
4589
4841
  "id": {
4590
- "description": "Webhook ID",
4842
+ "description": "Webhook ID to test",
4591
4843
  "name": "id",
4592
4844
  "required": true
4593
4845
  }
4594
4846
  },
4595
- "description": "View webhook delivery history",
4847
+ "description": "Send a test event to a webhook",
4596
4848
  "examples": [
4597
- "<%= config.bin %> webhooks deliveries whk_abc123",
4598
- "<%= config.bin %> webhooks deliveries whk_abc123 --limit 20",
4599
- "<%= config.bin %> webhooks deliveries whk_abc123 --failed-only",
4600
- "<%= config.bin %> webhooks deliveries whk_abc123 --json"
4849
+ "<%= config.bin %> webhooks test whk_abc123",
4850
+ "<%= config.bin %> webhooks test whk_abc123 --json"
4601
4851
  ],
4602
4852
  "flags": {
4603
4853
  "json": {
@@ -4612,26 +4862,11 @@
4612
4862
  "name": "quiet",
4613
4863
  "allowNo": false,
4614
4864
  "type": "boolean"
4615
- },
4616
- "limit": {
4617
- "char": "l",
4618
- "description": "Number of deliveries to show",
4619
- "name": "limit",
4620
- "default": 10,
4621
- "hasDynamicHelp": false,
4622
- "multiple": false,
4623
- "type": "option"
4624
- },
4625
- "failed-only": {
4626
- "description": "Show only failed deliveries",
4627
- "name": "failed-only",
4628
- "allowNo": false,
4629
- "type": "boolean"
4630
4865
  }
4631
4866
  },
4632
4867
  "hasDynamicHelp": false,
4633
4868
  "hiddenAliases": [],
4634
- "id": "webhooks:deliveries",
4869
+ "id": "webhooks:test",
4635
4870
  "pluginAlias": "@sendly/cli",
4636
4871
  "pluginName": "@sendly/cli",
4637
4872
  "pluginType": "core",
@@ -4641,22 +4876,25 @@
4641
4876
  "dist",
4642
4877
  "commands",
4643
4878
  "webhooks",
4644
- "deliveries.js"
4879
+ "test.js"
4645
4880
  ]
4646
4881
  },
4647
- "webhooks:get": {
4882
+ "webhooks:update": {
4648
4883
  "aliases": [],
4649
4884
  "args": {
4650
4885
  "id": {
4651
- "description": "Webhook ID",
4886
+ "description": "Webhook ID to update",
4652
4887
  "name": "id",
4653
4888
  "required": true
4654
4889
  }
4655
4890
  },
4656
- "description": "Get webhook details",
4891
+ "description": "Update a webhook",
4657
4892
  "examples": [
4658
- "<%= config.bin %> webhooks get whk_abc123",
4659
- "<%= config.bin %> webhooks get whk_abc123 --json"
4893
+ "<%= config.bin %> webhooks update whk_abc123 --url https://newdomain.com/webhook",
4894
+ "<%= config.bin %> webhooks update whk_abc123 --events message.delivered,message.failed",
4895
+ "<%= config.bin %> webhooks update whk_abc123 --description \"Updated production webhook\"",
4896
+ "<%= config.bin %> webhooks update whk_abc123 --active false",
4897
+ "<%= config.bin %> webhooks update whk_abc123 --url https://newdomain.com/webhook --events message.sent --json"
4660
4898
  ],
4661
4899
  "flags": {
4662
4900
  "json": {
@@ -4671,11 +4909,55 @@
4671
4909
  "name": "quiet",
4672
4910
  "allowNo": false,
4673
4911
  "type": "boolean"
4912
+ },
4913
+ "url": {
4914
+ "char": "u",
4915
+ "description": "Update webhook URL (must be HTTPS)",
4916
+ "name": "url",
4917
+ "hasDynamicHelp": false,
4918
+ "multiple": false,
4919
+ "type": "option"
4920
+ },
4921
+ "events": {
4922
+ "char": "e",
4923
+ "description": "Update events list (comma-separated)",
4924
+ "name": "events",
4925
+ "hasDynamicHelp": false,
4926
+ "multiple": false,
4927
+ "type": "option"
4928
+ },
4929
+ "description": {
4930
+ "char": "d",
4931
+ "description": "Update description",
4932
+ "name": "description",
4933
+ "hasDynamicHelp": false,
4934
+ "multiple": false,
4935
+ "type": "option"
4936
+ },
4937
+ "active": {
4938
+ "char": "a",
4939
+ "description": "Enable or disable the webhook",
4940
+ "name": "active",
4941
+ "allowNo": true,
4942
+ "type": "boolean"
4943
+ },
4944
+ "mode": {
4945
+ "char": "m",
4946
+ "description": "Update event mode filter: all, test (sandbox only), live (production only)",
4947
+ "name": "mode",
4948
+ "hasDynamicHelp": false,
4949
+ "multiple": false,
4950
+ "options": [
4951
+ "all",
4952
+ "test",
4953
+ "live"
4954
+ ],
4955
+ "type": "option"
4674
4956
  }
4675
4957
  },
4676
4958
  "hasDynamicHelp": false,
4677
4959
  "hiddenAliases": [],
4678
- "id": "webhooks:get",
4960
+ "id": "webhooks:update",
4679
4961
  "pluginAlias": "@sendly/cli",
4680
4962
  "pluginName": "@sendly/cli",
4681
4963
  "pluginType": "core",
@@ -4685,16 +4967,22 @@
4685
4967
  "dist",
4686
4968
  "commands",
4687
4969
  "webhooks",
4688
- "get.js"
4970
+ "update.js"
4689
4971
  ]
4690
4972
  },
4691
- "webhooks:list": {
4973
+ "contacts:lists:add": {
4692
4974
  "aliases": [],
4693
- "args": {},
4694
- "description": "List configured webhooks",
4975
+ "args": {
4976
+ "listId": {
4977
+ "description": "Contact list ID",
4978
+ "name": "listId",
4979
+ "required": true
4980
+ }
4981
+ },
4982
+ "description": "Add contacts to a list",
4695
4983
  "examples": [
4696
- "<%= config.bin %> webhooks list",
4697
- "<%= config.bin %> webhooks list --json"
4984
+ "<%= config.bin %> contacts lists add lst_xxx --contacts cnt_abc,cnt_def",
4985
+ "<%= config.bin %> contacts lists add lst_xxx --contacts cnt_abc --contacts cnt_def"
4698
4986
  ],
4699
4987
  "flags": {
4700
4988
  "json": {
@@ -4709,11 +4997,20 @@
4709
4997
  "name": "quiet",
4710
4998
  "allowNo": false,
4711
4999
  "type": "boolean"
5000
+ },
5001
+ "contacts": {
5002
+ "char": "c",
5003
+ "description": "Contact IDs to add (comma-separated or multiple flags)",
5004
+ "name": "contacts",
5005
+ "required": true,
5006
+ "hasDynamicHelp": false,
5007
+ "multiple": true,
5008
+ "type": "option"
4712
5009
  }
4713
5010
  },
4714
5011
  "hasDynamicHelp": false,
4715
5012
  "hiddenAliases": [],
4716
- "id": "webhooks:list",
5013
+ "id": "contacts:lists:add",
4717
5014
  "pluginAlias": "@sendly/cli",
4718
5015
  "pluginName": "@sendly/cli",
4719
5016
  "pluginType": "core",
@@ -4722,18 +5019,18 @@
4722
5019
  "relativePath": [
4723
5020
  "dist",
4724
5021
  "commands",
4725
- "webhooks",
4726
- "list.js"
5022
+ "contacts",
5023
+ "lists",
5024
+ "add.js"
4727
5025
  ]
4728
5026
  },
4729
- "webhooks:listen": {
5027
+ "contacts:lists:create": {
4730
5028
  "aliases": [],
4731
5029
  "args": {},
4732
- "description": "Listen for webhooks locally. Receives events in real-time via WebSocket and forwards them to your local server.",
5030
+ "description": "Create a new contact list",
4733
5031
  "examples": [
4734
- "<%= config.bin %> webhooks listen",
4735
- "<%= config.bin %> webhooks listen --forward http://localhost:3000/webhook",
4736
- "<%= config.bin %> webhooks listen --events message.delivered,message.failed"
5032
+ "<%= config.bin %> contacts lists create --name \"VIP Customers\"",
5033
+ "<%= config.bin %> contacts lists create --name \"Newsletter\" --description \"Weekly newsletter subscribers\""
4737
5034
  ],
4738
5035
  "flags": {
4739
5036
  "json": {
@@ -4749,20 +5046,19 @@
4749
5046
  "allowNo": false,
4750
5047
  "type": "boolean"
4751
5048
  },
4752
- "forward": {
4753
- "char": "f",
4754
- "description": "Local URL to forward events to",
4755
- "name": "forward",
4756
- "default": "http://localhost:3000/webhook",
5049
+ "name": {
5050
+ "char": "n",
5051
+ "description": "List name",
5052
+ "name": "name",
5053
+ "required": true,
4757
5054
  "hasDynamicHelp": false,
4758
5055
  "multiple": false,
4759
5056
  "type": "option"
4760
5057
  },
4761
- "events": {
4762
- "char": "e",
4763
- "description": "Comma-separated list of events to listen for",
4764
- "name": "events",
4765
- "default": "message.sent,message.delivered,message.failed,message.bounced,message.retrying",
5058
+ "description": {
5059
+ "char": "d",
5060
+ "description": "List description",
5061
+ "name": "description",
4766
5062
  "hasDynamicHelp": false,
4767
5063
  "multiple": false,
4768
5064
  "type": "option"
@@ -4770,7 +5066,7 @@
4770
5066
  },
4771
5067
  "hasDynamicHelp": false,
4772
5068
  "hiddenAliases": [],
4773
- "id": "webhooks:listen",
5069
+ "id": "contacts:lists:create",
4774
5070
  "pluginAlias": "@sendly/cli",
4775
5071
  "pluginName": "@sendly/cli",
4776
5072
  "pluginType": "core",
@@ -4779,24 +5075,24 @@
4779
5075
  "relativePath": [
4780
5076
  "dist",
4781
5077
  "commands",
4782
- "webhooks",
4783
- "listen.js"
5078
+ "contacts",
5079
+ "lists",
5080
+ "create.js"
4784
5081
  ]
4785
5082
  },
4786
- "webhooks:rotate-secret": {
5083
+ "contacts:lists:delete": {
4787
5084
  "aliases": [],
4788
5085
  "args": {
4789
5086
  "id": {
4790
- "description": "Webhook ID",
5087
+ "description": "Contact list ID to delete",
4791
5088
  "name": "id",
4792
5089
  "required": true
4793
5090
  }
4794
5091
  },
4795
- "description": "Rotate webhook secret",
5092
+ "description": "Delete a contact list (does not delete the contacts)",
4796
5093
  "examples": [
4797
- "<%= config.bin %> webhooks rotate-secret whk_abc123",
4798
- "<%= config.bin %> webhooks rotate-secret whk_abc123 --yes",
4799
- "<%= config.bin %> webhooks rotate-secret whk_abc123 --json"
5094
+ "<%= config.bin %> contacts lists delete lst_xxx",
5095
+ "<%= config.bin %> contacts lists delete lst_xxx --yes"
4800
5096
  ],
4801
5097
  "flags": {
4802
5098
  "json": {
@@ -4822,7 +5118,7 @@
4822
5118
  },
4823
5119
  "hasDynamicHelp": false,
4824
5120
  "hiddenAliases": [],
4825
- "id": "webhooks:rotate-secret",
5121
+ "id": "contacts:lists:delete",
4826
5122
  "pluginAlias": "@sendly/cli",
4827
5123
  "pluginName": "@sendly/cli",
4828
5124
  "pluginType": "core",
@@ -4831,23 +5127,24 @@
4831
5127
  "relativePath": [
4832
5128
  "dist",
4833
5129
  "commands",
4834
- "webhooks",
4835
- "rotate-secret.js"
5130
+ "contacts",
5131
+ "lists",
5132
+ "delete.js"
4836
5133
  ]
4837
5134
  },
4838
- "webhooks:test": {
5135
+ "contacts:lists:get": {
4839
5136
  "aliases": [],
4840
5137
  "args": {
4841
5138
  "id": {
4842
- "description": "Webhook ID to test",
5139
+ "description": "Contact list ID",
4843
5140
  "name": "id",
4844
5141
  "required": true
4845
5142
  }
4846
5143
  },
4847
- "description": "Send a test event to a webhook",
5144
+ "description": "Get contact list details",
4848
5145
  "examples": [
4849
- "<%= config.bin %> webhooks test whk_abc123",
4850
- "<%= config.bin %> webhooks test whk_abc123 --json"
5146
+ "<%= config.bin %> contacts lists get lst_xxx",
5147
+ "<%= config.bin %> contacts lists get lst_xxx --json"
4851
5148
  ],
4852
5149
  "flags": {
4853
5150
  "json": {
@@ -4866,7 +5163,7 @@
4866
5163
  },
4867
5164
  "hasDynamicHelp": false,
4868
5165
  "hiddenAliases": [],
4869
- "id": "webhooks:test",
5166
+ "id": "contacts:lists:get",
4870
5167
  "pluginAlias": "@sendly/cli",
4871
5168
  "pluginName": "@sendly/cli",
4872
5169
  "pluginType": "core",
@@ -4875,26 +5172,18 @@
4875
5172
  "relativePath": [
4876
5173
  "dist",
4877
5174
  "commands",
4878
- "webhooks",
4879
- "test.js"
5175
+ "contacts",
5176
+ "lists",
5177
+ "get.js"
4880
5178
  ]
4881
5179
  },
4882
- "webhooks:update": {
5180
+ "contacts:lists": {
4883
5181
  "aliases": [],
4884
- "args": {
4885
- "id": {
4886
- "description": "Webhook ID to update",
4887
- "name": "id",
4888
- "required": true
4889
- }
4890
- },
4891
- "description": "Update a webhook",
5182
+ "args": {},
5183
+ "description": "List all contact lists",
4892
5184
  "examples": [
4893
- "<%= config.bin %> webhooks update whk_abc123 --url https://newdomain.com/webhook",
4894
- "<%= config.bin %> webhooks update whk_abc123 --events message.delivered,message.failed",
4895
- "<%= config.bin %> webhooks update whk_abc123 --description \"Updated production webhook\"",
4896
- "<%= config.bin %> webhooks update whk_abc123 --active false",
4897
- "<%= config.bin %> webhooks update whk_abc123 --url https://newdomain.com/webhook --events message.sent --json"
5185
+ "<%= config.bin %> contacts lists",
5186
+ "<%= config.bin %> contacts lists --json"
4898
5187
  ],
4899
5188
  "flags": {
4900
5189
  "json": {
@@ -4909,55 +5198,11 @@
4909
5198
  "name": "quiet",
4910
5199
  "allowNo": false,
4911
5200
  "type": "boolean"
4912
- },
4913
- "url": {
4914
- "char": "u",
4915
- "description": "Update webhook URL (must be HTTPS)",
4916
- "name": "url",
4917
- "hasDynamicHelp": false,
4918
- "multiple": false,
4919
- "type": "option"
4920
- },
4921
- "events": {
4922
- "char": "e",
4923
- "description": "Update events list (comma-separated)",
4924
- "name": "events",
4925
- "hasDynamicHelp": false,
4926
- "multiple": false,
4927
- "type": "option"
4928
- },
4929
- "description": {
4930
- "char": "d",
4931
- "description": "Update description",
4932
- "name": "description",
4933
- "hasDynamicHelp": false,
4934
- "multiple": false,
4935
- "type": "option"
4936
- },
4937
- "active": {
4938
- "char": "a",
4939
- "description": "Enable or disable the webhook",
4940
- "name": "active",
4941
- "allowNo": true,
4942
- "type": "boolean"
4943
- },
4944
- "mode": {
4945
- "char": "m",
4946
- "description": "Update event mode filter: all, test (sandbox only), live (production only)",
4947
- "name": "mode",
4948
- "hasDynamicHelp": false,
4949
- "multiple": false,
4950
- "options": [
4951
- "all",
4952
- "test",
4953
- "live"
4954
- ],
4955
- "type": "option"
4956
5201
  }
4957
5202
  },
4958
5203
  "hasDynamicHelp": false,
4959
5204
  "hiddenAliases": [],
4960
- "id": "webhooks:update",
5205
+ "id": "contacts:lists",
4961
5206
  "pluginAlias": "@sendly/cli",
4962
5207
  "pluginName": "@sendly/cli",
4963
5208
  "pluginType": "core",
@@ -4966,23 +5211,28 @@
4966
5211
  "relativePath": [
4967
5212
  "dist",
4968
5213
  "commands",
4969
- "webhooks",
4970
- "update.js"
5214
+ "contacts",
5215
+ "lists",
5216
+ "index.js"
4971
5217
  ]
4972
5218
  },
4973
- "contacts:lists:add": {
5219
+ "contacts:lists:remove": {
4974
5220
  "aliases": [],
4975
5221
  "args": {
4976
5222
  "listId": {
4977
5223
  "description": "Contact list ID",
4978
5224
  "name": "listId",
4979
5225
  "required": true
5226
+ },
5227
+ "contactId": {
5228
+ "description": "Contact ID to remove",
5229
+ "name": "contactId",
5230
+ "required": true
4980
5231
  }
4981
5232
  },
4982
- "description": "Add contacts to a list",
5233
+ "description": "Remove a contact from a list",
4983
5234
  "examples": [
4984
- "<%= config.bin %> contacts lists add lst_xxx --contacts cnt_abc,cnt_def",
4985
- "<%= config.bin %> contacts lists add lst_xxx --contacts cnt_abc --contacts cnt_def"
5235
+ "<%= config.bin %> contacts lists remove lst_xxx cnt_abc"
4986
5236
  ],
4987
5237
  "flags": {
4988
5238
  "json": {
@@ -4997,20 +5247,11 @@
4997
5247
  "name": "quiet",
4998
5248
  "allowNo": false,
4999
5249
  "type": "boolean"
5000
- },
5001
- "contacts": {
5002
- "char": "c",
5003
- "description": "Contact IDs to add (comma-separated or multiple flags)",
5004
- "name": "contacts",
5005
- "required": true,
5006
- "hasDynamicHelp": false,
5007
- "multiple": true,
5008
- "type": "option"
5009
5250
  }
5010
5251
  },
5011
5252
  "hasDynamicHelp": false,
5012
5253
  "hiddenAliases": [],
5013
- "id": "contacts:lists:add",
5254
+ "id": "contacts:lists:remove",
5014
5255
  "pluginAlias": "@sendly/cli",
5015
5256
  "pluginName": "@sendly/cli",
5016
5257
  "pluginType": "core",
@@ -5021,16 +5262,22 @@
5021
5262
  "commands",
5022
5263
  "contacts",
5023
5264
  "lists",
5024
- "add.js"
5265
+ "remove.js"
5025
5266
  ]
5026
5267
  },
5027
- "contacts:lists:create": {
5268
+ "contacts:lists:update": {
5028
5269
  "aliases": [],
5029
- "args": {},
5030
- "description": "Create a new contact list",
5270
+ "args": {
5271
+ "id": {
5272
+ "description": "Contact list ID",
5273
+ "name": "id",
5274
+ "required": true
5275
+ }
5276
+ },
5277
+ "description": "Update a contact list",
5031
5278
  "examples": [
5032
- "<%= config.bin %> contacts lists create --name \"VIP Customers\"",
5033
- "<%= config.bin %> contacts lists create --name \"Newsletter\" --description \"Weekly newsletter subscribers\""
5279
+ "<%= config.bin %> contacts lists update lst_xxx --name \"VIP Customers\"",
5280
+ "<%= config.bin %> contacts lists update lst_xxx --description \"Updated desc\""
5034
5281
  ],
5035
5282
  "flags": {
5036
5283
  "json": {
@@ -5050,7 +5297,6 @@
5050
5297
  "char": "n",
5051
5298
  "description": "List name",
5052
5299
  "name": "name",
5053
- "required": true,
5054
5300
  "hasDynamicHelp": false,
5055
5301
  "multiple": false,
5056
5302
  "type": "option"
@@ -5066,7 +5312,7 @@
5066
5312
  },
5067
5313
  "hasDynamicHelp": false,
5068
5314
  "hiddenAliases": [],
5069
- "id": "contacts:lists:create",
5315
+ "id": "contacts:lists:update",
5070
5316
  "pluginAlias": "@sendly/cli",
5071
5317
  "pluginName": "@sendly/cli",
5072
5318
  "pluginType": "core",
@@ -5077,22 +5323,17 @@
5077
5323
  "commands",
5078
5324
  "contacts",
5079
5325
  "lists",
5080
- "create.js"
5326
+ "update.js"
5081
5327
  ]
5082
5328
  },
5083
- "contacts:lists:delete": {
5329
+ "enterprise:analytics:credits": {
5084
5330
  "aliases": [],
5085
- "args": {
5086
- "id": {
5087
- "description": "Contact list ID to delete",
5088
- "name": "id",
5089
- "required": true
5090
- }
5091
- },
5092
- "description": "Delete a contact list (does not delete the contacts)",
5331
+ "args": {},
5332
+ "description": "Get credit usage analytics over time",
5093
5333
  "examples": [
5094
- "<%= config.bin %> contacts lists delete lst_xxx",
5095
- "<%= config.bin %> contacts lists delete lst_xxx --yes"
5334
+ "<%= config.bin %> enterprise analytics credits",
5335
+ "<%= config.bin %> enterprise analytics credits --period 30d",
5336
+ "<%= config.bin %> enterprise analytics credits --json"
5096
5337
  ],
5097
5338
  "flags": {
5098
5339
  "json": {
@@ -5108,17 +5349,63 @@
5108
5349
  "allowNo": false,
5109
5350
  "type": "boolean"
5110
5351
  },
5111
- "yes": {
5112
- "char": "y",
5113
- "description": "Skip confirmation prompt",
5114
- "name": "yes",
5352
+ "period": {
5353
+ "char": "p",
5354
+ "description": "Time period (7d, 30d, 90d)",
5355
+ "name": "period",
5356
+ "default": "7d",
5357
+ "hasDynamicHelp": false,
5358
+ "multiple": false,
5359
+ "options": [
5360
+ "7d",
5361
+ "30d",
5362
+ "90d"
5363
+ ],
5364
+ "type": "option"
5365
+ }
5366
+ },
5367
+ "hasDynamicHelp": false,
5368
+ "hiddenAliases": [],
5369
+ "id": "enterprise:analytics:credits",
5370
+ "pluginAlias": "@sendly/cli",
5371
+ "pluginName": "@sendly/cli",
5372
+ "pluginType": "core",
5373
+ "strict": true,
5374
+ "isESM": true,
5375
+ "relativePath": [
5376
+ "dist",
5377
+ "commands",
5378
+ "enterprise",
5379
+ "analytics",
5380
+ "credits.js"
5381
+ ]
5382
+ },
5383
+ "enterprise:analytics:delivery": {
5384
+ "aliases": [],
5385
+ "args": {},
5386
+ "description": "Get delivery rate analytics by workspace",
5387
+ "examples": [
5388
+ "<%= config.bin %> enterprise analytics delivery",
5389
+ "<%= config.bin %> enterprise analytics delivery --json"
5390
+ ],
5391
+ "flags": {
5392
+ "json": {
5393
+ "description": "Output in JSON format",
5394
+ "name": "json",
5395
+ "allowNo": false,
5396
+ "type": "boolean"
5397
+ },
5398
+ "quiet": {
5399
+ "char": "q",
5400
+ "description": "Minimal output",
5401
+ "name": "quiet",
5115
5402
  "allowNo": false,
5116
5403
  "type": "boolean"
5117
5404
  }
5118
5405
  },
5119
5406
  "hasDynamicHelp": false,
5120
5407
  "hiddenAliases": [],
5121
- "id": "contacts:lists:delete",
5408
+ "id": "enterprise:analytics:delivery",
5122
5409
  "pluginAlias": "@sendly/cli",
5123
5410
  "pluginName": "@sendly/cli",
5124
5411
  "pluginType": "core",
@@ -5127,24 +5414,19 @@
5127
5414
  "relativePath": [
5128
5415
  "dist",
5129
5416
  "commands",
5130
- "contacts",
5131
- "lists",
5132
- "delete.js"
5417
+ "enterprise",
5418
+ "analytics",
5419
+ "delivery.js"
5133
5420
  ]
5134
5421
  },
5135
- "contacts:lists:get": {
5422
+ "enterprise:analytics:messages": {
5136
5423
  "aliases": [],
5137
- "args": {
5138
- "id": {
5139
- "description": "Contact list ID",
5140
- "name": "id",
5141
- "required": true
5142
- }
5143
- },
5144
- "description": "Get contact list details",
5424
+ "args": {},
5425
+ "description": "Get message analytics across all workspaces",
5145
5426
  "examples": [
5146
- "<%= config.bin %> contacts lists get lst_xxx",
5147
- "<%= config.bin %> contacts lists get lst_xxx --json"
5427
+ "<%= config.bin %> enterprise analytics messages",
5428
+ "<%= config.bin %> enterprise analytics messages --period 30d",
5429
+ "<%= config.bin %> enterprise analytics messages --period 90d --json"
5148
5430
  ],
5149
5431
  "flags": {
5150
5432
  "json": {
@@ -5159,11 +5441,25 @@
5159
5441
  "name": "quiet",
5160
5442
  "allowNo": false,
5161
5443
  "type": "boolean"
5444
+ },
5445
+ "period": {
5446
+ "char": "p",
5447
+ "description": "Time period (7d, 30d, 90d)",
5448
+ "name": "period",
5449
+ "default": "7d",
5450
+ "hasDynamicHelp": false,
5451
+ "multiple": false,
5452
+ "options": [
5453
+ "7d",
5454
+ "30d",
5455
+ "90d"
5456
+ ],
5457
+ "type": "option"
5162
5458
  }
5163
5459
  },
5164
5460
  "hasDynamicHelp": false,
5165
5461
  "hiddenAliases": [],
5166
- "id": "contacts:lists:get",
5462
+ "id": "enterprise:analytics:messages",
5167
5463
  "pluginAlias": "@sendly/cli",
5168
5464
  "pluginName": "@sendly/cli",
5169
5465
  "pluginType": "core",
@@ -5172,18 +5468,18 @@
5172
5468
  "relativePath": [
5173
5469
  "dist",
5174
5470
  "commands",
5175
- "contacts",
5176
- "lists",
5177
- "get.js"
5471
+ "enterprise",
5472
+ "analytics",
5473
+ "messages.js"
5178
5474
  ]
5179
5475
  },
5180
- "contacts:lists": {
5476
+ "enterprise:analytics:overview": {
5181
5477
  "aliases": [],
5182
5478
  "args": {},
5183
- "description": "List all contact lists",
5479
+ "description": "Get enterprise-wide analytics overview",
5184
5480
  "examples": [
5185
- "<%= config.bin %> contacts lists",
5186
- "<%= config.bin %> contacts lists --json"
5481
+ "<%= config.bin %> enterprise analytics overview",
5482
+ "<%= config.bin %> enterprise analytics overview --json"
5187
5483
  ],
5188
5484
  "flags": {
5189
5485
  "json": {
@@ -5202,7 +5498,7 @@
5202
5498
  },
5203
5499
  "hasDynamicHelp": false,
5204
5500
  "hiddenAliases": [],
5205
- "id": "contacts:lists",
5501
+ "id": "enterprise:analytics:overview",
5206
5502
  "pluginAlias": "@sendly/cli",
5207
5503
  "pluginName": "@sendly/cli",
5208
5504
  "pluginType": "core",
@@ -5211,28 +5507,24 @@
5211
5507
  "relativePath": [
5212
5508
  "dist",
5213
5509
  "commands",
5214
- "contacts",
5215
- "lists",
5216
- "index.js"
5510
+ "enterprise",
5511
+ "analytics",
5512
+ "overview.js"
5217
5513
  ]
5218
5514
  },
5219
- "contacts:lists:remove": {
5515
+ "enterprise:quota:get": {
5220
5516
  "aliases": [],
5221
5517
  "args": {
5222
- "listId": {
5223
- "description": "Contact list ID",
5224
- "name": "listId",
5225
- "required": true
5226
- },
5227
- "contactId": {
5228
- "description": "Contact ID to remove",
5229
- "name": "contactId",
5518
+ "workspaceId": {
5519
+ "description": "Workspace ID",
5520
+ "name": "workspaceId",
5230
5521
  "required": true
5231
5522
  }
5232
5523
  },
5233
- "description": "Remove a contact from a list",
5524
+ "description": "Get message quota for an enterprise workspace",
5234
5525
  "examples": [
5235
- "<%= config.bin %> contacts lists remove lst_xxx cnt_abc"
5526
+ "<%= config.bin %> enterprise quota get org_abc123",
5527
+ "<%= config.bin %> enterprise quota get org_abc123 --json"
5236
5528
  ],
5237
5529
  "flags": {
5238
5530
  "json": {
@@ -5251,7 +5543,7 @@
5251
5543
  },
5252
5544
  "hasDynamicHelp": false,
5253
5545
  "hiddenAliases": [],
5254
- "id": "contacts:lists:remove",
5546
+ "id": "enterprise:quota:get",
5255
5547
  "pluginAlias": "@sendly/cli",
5256
5548
  "pluginName": "@sendly/cli",
5257
5549
  "pluginType": "core",
@@ -5260,24 +5552,26 @@
5260
5552
  "relativePath": [
5261
5553
  "dist",
5262
5554
  "commands",
5263
- "contacts",
5264
- "lists",
5265
- "remove.js"
5555
+ "enterprise",
5556
+ "quota",
5557
+ "get.js"
5266
5558
  ]
5267
5559
  },
5268
- "contacts:lists:update": {
5560
+ "enterprise:quota:set": {
5269
5561
  "aliases": [],
5270
5562
  "args": {
5271
- "id": {
5272
- "description": "Contact list ID",
5273
- "name": "id",
5563
+ "workspaceId": {
5564
+ "description": "Workspace ID",
5565
+ "name": "workspaceId",
5274
5566
  "required": true
5275
5567
  }
5276
5568
  },
5277
- "description": "Update a contact list",
5569
+ "description": "Set message quota for an enterprise workspace",
5278
5570
  "examples": [
5279
- "<%= config.bin %> contacts lists update lst_xxx --name \"VIP Customers\"",
5280
- "<%= config.bin %> contacts lists update lst_xxx --description \"Updated desc\""
5571
+ "<%= config.bin %> enterprise quota set org_abc123 --daily 1000",
5572
+ "<%= config.bin %> enterprise quota set org_abc123 --monthly 25000",
5573
+ "<%= config.bin %> enterprise quota set org_abc123 --daily 1000 --monthly 25000",
5574
+ "<%= config.bin %> enterprise quota set org_abc123 --daily unlimited"
5281
5575
  ],
5282
5576
  "flags": {
5283
5577
  "json": {
@@ -5293,18 +5587,16 @@
5293
5587
  "allowNo": false,
5294
5588
  "type": "boolean"
5295
5589
  },
5296
- "name": {
5297
- "char": "n",
5298
- "description": "List name",
5299
- "name": "name",
5590
+ "daily": {
5591
+ "description": "Daily message limit (number or \"unlimited\")",
5592
+ "name": "daily",
5300
5593
  "hasDynamicHelp": false,
5301
5594
  "multiple": false,
5302
5595
  "type": "option"
5303
5596
  },
5304
- "description": {
5305
- "char": "d",
5306
- "description": "List description",
5307
- "name": "description",
5597
+ "monthly": {
5598
+ "description": "Monthly message limit (number or \"unlimited\")",
5599
+ "name": "monthly",
5308
5600
  "hasDynamicHelp": false,
5309
5601
  "multiple": false,
5310
5602
  "type": "option"
@@ -5312,7 +5604,7 @@
5312
5604
  },
5313
5605
  "hasDynamicHelp": false,
5314
5606
  "hiddenAliases": [],
5315
- "id": "contacts:lists:update",
5607
+ "id": "enterprise:quota:set",
5316
5608
  "pluginAlias": "@sendly/cli",
5317
5609
  "pluginName": "@sendly/cli",
5318
5610
  "pluginType": "core",
@@ -5321,9 +5613,9 @@
5321
5613
  "relativePath": [
5322
5614
  "dist",
5323
5615
  "commands",
5324
- "contacts",
5325
- "lists",
5326
- "update.js"
5616
+ "enterprise",
5617
+ "quota",
5618
+ "set.js"
5327
5619
  ]
5328
5620
  },
5329
5621
  "enterprise:keys:create": {
@@ -5495,120 +5787,13 @@
5495
5787
  "revoke.js"
5496
5788
  ]
5497
5789
  },
5498
- "enterprise:quota:get": {
5499
- "aliases": [],
5500
- "args": {
5501
- "workspaceId": {
5502
- "description": "Workspace ID",
5503
- "name": "workspaceId",
5504
- "required": true
5505
- }
5506
- },
5507
- "description": "Get message quota for an enterprise workspace",
5508
- "examples": [
5509
- "<%= config.bin %> enterprise quota get org_abc123",
5510
- "<%= config.bin %> enterprise quota get org_abc123 --json"
5511
- ],
5512
- "flags": {
5513
- "json": {
5514
- "description": "Output in JSON format",
5515
- "name": "json",
5516
- "allowNo": false,
5517
- "type": "boolean"
5518
- },
5519
- "quiet": {
5520
- "char": "q",
5521
- "description": "Minimal output",
5522
- "name": "quiet",
5523
- "allowNo": false,
5524
- "type": "boolean"
5525
- }
5526
- },
5527
- "hasDynamicHelp": false,
5528
- "hiddenAliases": [],
5529
- "id": "enterprise:quota:get",
5530
- "pluginAlias": "@sendly/cli",
5531
- "pluginName": "@sendly/cli",
5532
- "pluginType": "core",
5533
- "strict": true,
5534
- "isESM": true,
5535
- "relativePath": [
5536
- "dist",
5537
- "commands",
5538
- "enterprise",
5539
- "quota",
5540
- "get.js"
5541
- ]
5542
- },
5543
- "enterprise:quota:set": {
5544
- "aliases": [],
5545
- "args": {
5546
- "workspaceId": {
5547
- "description": "Workspace ID",
5548
- "name": "workspaceId",
5549
- "required": true
5550
- }
5551
- },
5552
- "description": "Set message quota for an enterprise workspace",
5553
- "examples": [
5554
- "<%= config.bin %> enterprise quota set org_abc123 --daily 1000",
5555
- "<%= config.bin %> enterprise quota set org_abc123 --monthly 25000",
5556
- "<%= config.bin %> enterprise quota set org_abc123 --daily 1000 --monthly 25000",
5557
- "<%= config.bin %> enterprise quota set org_abc123 --daily unlimited"
5558
- ],
5559
- "flags": {
5560
- "json": {
5561
- "description": "Output in JSON format",
5562
- "name": "json",
5563
- "allowNo": false,
5564
- "type": "boolean"
5565
- },
5566
- "quiet": {
5567
- "char": "q",
5568
- "description": "Minimal output",
5569
- "name": "quiet",
5570
- "allowNo": false,
5571
- "type": "boolean"
5572
- },
5573
- "daily": {
5574
- "description": "Daily message limit (number or \"unlimited\")",
5575
- "name": "daily",
5576
- "hasDynamicHelp": false,
5577
- "multiple": false,
5578
- "type": "option"
5579
- },
5580
- "monthly": {
5581
- "description": "Monthly message limit (number or \"unlimited\")",
5582
- "name": "monthly",
5583
- "hasDynamicHelp": false,
5584
- "multiple": false,
5585
- "type": "option"
5586
- }
5587
- },
5588
- "hasDynamicHelp": false,
5589
- "hiddenAliases": [],
5590
- "id": "enterprise:quota:set",
5591
- "pluginAlias": "@sendly/cli",
5592
- "pluginName": "@sendly/cli",
5593
- "pluginType": "core",
5594
- "strict": true,
5595
- "isESM": true,
5596
- "relativePath": [
5597
- "dist",
5598
- "commands",
5599
- "enterprise",
5600
- "quota",
5601
- "set.js"
5602
- ]
5603
- },
5604
- "enterprise:analytics:credits": {
5790
+ "enterprise:webhooks:delete": {
5605
5791
  "aliases": [],
5606
5792
  "args": {},
5607
- "description": "Get credit usage analytics over time",
5793
+ "description": "Delete the enterprise webhook",
5608
5794
  "examples": [
5609
- "<%= config.bin %> enterprise analytics credits",
5610
- "<%= config.bin %> enterprise analytics credits --period 30d",
5611
- "<%= config.bin %> enterprise analytics credits --json"
5795
+ "<%= config.bin %> enterprise webhooks delete",
5796
+ "<%= config.bin %> enterprise webhooks delete --yes"
5612
5797
  ],
5613
5798
  "flags": {
5614
5799
  "json": {
@@ -5622,26 +5807,19 @@
5622
5807
  "description": "Minimal output",
5623
5808
  "name": "quiet",
5624
5809
  "allowNo": false,
5625
- "type": "boolean"
5626
- },
5627
- "period": {
5628
- "char": "p",
5629
- "description": "Time period (7d, 30d, 90d)",
5630
- "name": "period",
5631
- "default": "7d",
5632
- "hasDynamicHelp": false,
5633
- "multiple": false,
5634
- "options": [
5635
- "7d",
5636
- "30d",
5637
- "90d"
5638
- ],
5639
- "type": "option"
5810
+ "type": "boolean"
5811
+ },
5812
+ "yes": {
5813
+ "char": "y",
5814
+ "description": "Skip confirmation prompt",
5815
+ "name": "yes",
5816
+ "allowNo": false,
5817
+ "type": "boolean"
5640
5818
  }
5641
5819
  },
5642
5820
  "hasDynamicHelp": false,
5643
5821
  "hiddenAliases": [],
5644
- "id": "enterprise:analytics:credits",
5822
+ "id": "enterprise:webhooks:delete",
5645
5823
  "pluginAlias": "@sendly/cli",
5646
5824
  "pluginName": "@sendly/cli",
5647
5825
  "pluginType": "core",
@@ -5651,17 +5829,17 @@
5651
5829
  "dist",
5652
5830
  "commands",
5653
5831
  "enterprise",
5654
- "analytics",
5655
- "credits.js"
5832
+ "webhooks",
5833
+ "delete.js"
5656
5834
  ]
5657
5835
  },
5658
- "enterprise:analytics:delivery": {
5836
+ "enterprise:webhooks:get": {
5659
5837
  "aliases": [],
5660
5838
  "args": {},
5661
- "description": "Get delivery rate analytics by workspace",
5839
+ "description": "Get the enterprise webhook configuration",
5662
5840
  "examples": [
5663
- "<%= config.bin %> enterprise analytics delivery",
5664
- "<%= config.bin %> enterprise analytics delivery --json"
5841
+ "<%= config.bin %> enterprise webhooks get",
5842
+ "<%= config.bin %> enterprise webhooks get --json"
5665
5843
  ],
5666
5844
  "flags": {
5667
5845
  "json": {
@@ -5680,7 +5858,7 @@
5680
5858
  },
5681
5859
  "hasDynamicHelp": false,
5682
5860
  "hiddenAliases": [],
5683
- "id": "enterprise:analytics:delivery",
5861
+ "id": "enterprise:webhooks:get",
5684
5862
  "pluginAlias": "@sendly/cli",
5685
5863
  "pluginName": "@sendly/cli",
5686
5864
  "pluginType": "core",
@@ -5690,18 +5868,17 @@
5690
5868
  "dist",
5691
5869
  "commands",
5692
5870
  "enterprise",
5693
- "analytics",
5694
- "delivery.js"
5871
+ "webhooks",
5872
+ "get.js"
5695
5873
  ]
5696
5874
  },
5697
- "enterprise:analytics:messages": {
5875
+ "enterprise:webhooks:set": {
5698
5876
  "aliases": [],
5699
5877
  "args": {},
5700
- "description": "Get message analytics across all workspaces",
5878
+ "description": "Create or update the enterprise-level webhook",
5701
5879
  "examples": [
5702
- "<%= config.bin %> enterprise analytics messages",
5703
- "<%= config.bin %> enterprise analytics messages --period 30d",
5704
- "<%= config.bin %> enterprise analytics messages --period 90d --json"
5880
+ "<%= config.bin %> enterprise webhooks set --url https://example.com/webhook",
5881
+ "<%= config.bin %> enterprise webhooks set --url https://example.com/webhook --events \"message.sent,message.delivered\""
5705
5882
  ],
5706
5883
  "flags": {
5707
5884
  "json": {
@@ -5717,24 +5894,25 @@
5717
5894
  "allowNo": false,
5718
5895
  "type": "boolean"
5719
5896
  },
5720
- "period": {
5721
- "char": "p",
5722
- "description": "Time period (7d, 30d, 90d)",
5723
- "name": "period",
5724
- "default": "7d",
5897
+ "url": {
5898
+ "description": "Webhook endpoint URL",
5899
+ "name": "url",
5900
+ "required": true,
5901
+ "hasDynamicHelp": false,
5902
+ "multiple": false,
5903
+ "type": "option"
5904
+ },
5905
+ "events": {
5906
+ "description": "Comma-separated list of event types to subscribe to",
5907
+ "name": "events",
5725
5908
  "hasDynamicHelp": false,
5726
5909
  "multiple": false,
5727
- "options": [
5728
- "7d",
5729
- "30d",
5730
- "90d"
5731
- ],
5732
5910
  "type": "option"
5733
5911
  }
5734
5912
  },
5735
5913
  "hasDynamicHelp": false,
5736
5914
  "hiddenAliases": [],
5737
- "id": "enterprise:analytics:messages",
5915
+ "id": "enterprise:webhooks:set",
5738
5916
  "pluginAlias": "@sendly/cli",
5739
5917
  "pluginName": "@sendly/cli",
5740
5918
  "pluginType": "core",
@@ -5744,17 +5922,17 @@
5744
5922
  "dist",
5745
5923
  "commands",
5746
5924
  "enterprise",
5747
- "analytics",
5748
- "messages.js"
5925
+ "webhooks",
5926
+ "set.js"
5749
5927
  ]
5750
5928
  },
5751
- "enterprise:analytics:overview": {
5929
+ "enterprise:webhooks:test": {
5752
5930
  "aliases": [],
5753
5931
  "args": {},
5754
- "description": "Get enterprise-wide analytics overview",
5932
+ "description": "Send a test event to the enterprise webhook",
5755
5933
  "examples": [
5756
- "<%= config.bin %> enterprise analytics overview",
5757
- "<%= config.bin %> enterprise analytics overview --json"
5934
+ "<%= config.bin %> enterprise webhooks test",
5935
+ "<%= config.bin %> enterprise webhooks test --json"
5758
5936
  ],
5759
5937
  "flags": {
5760
5938
  "json": {
@@ -5773,7 +5951,7 @@
5773
5951
  },
5774
5952
  "hasDynamicHelp": false,
5775
5953
  "hiddenAliases": [],
5776
- "id": "enterprise:analytics:overview",
5954
+ "id": "enterprise:webhooks:test",
5777
5955
  "pluginAlias": "@sendly/cli",
5778
5956
  "pluginName": "@sendly/cli",
5779
5957
  "pluginType": "core",
@@ -5783,8 +5961,8 @@
5783
5961
  "dist",
5784
5962
  "commands",
5785
5963
  "enterprise",
5786
- "analytics",
5787
- "overview.js"
5964
+ "webhooks",
5965
+ "test.js"
5788
5966
  ]
5789
5967
  },
5790
5968
  "enterprise:workspaces:create": {
@@ -6074,185 +6252,7 @@
6074
6252
  "workspaces",
6075
6253
  "suspend.js"
6076
6254
  ]
6077
- },
6078
- "enterprise:webhooks:delete": {
6079
- "aliases": [],
6080
- "args": {},
6081
- "description": "Delete the enterprise webhook",
6082
- "examples": [
6083
- "<%= config.bin %> enterprise webhooks delete",
6084
- "<%= config.bin %> enterprise webhooks delete --yes"
6085
- ],
6086
- "flags": {
6087
- "json": {
6088
- "description": "Output in JSON format",
6089
- "name": "json",
6090
- "allowNo": false,
6091
- "type": "boolean"
6092
- },
6093
- "quiet": {
6094
- "char": "q",
6095
- "description": "Minimal output",
6096
- "name": "quiet",
6097
- "allowNo": false,
6098
- "type": "boolean"
6099
- },
6100
- "yes": {
6101
- "char": "y",
6102
- "description": "Skip confirmation prompt",
6103
- "name": "yes",
6104
- "allowNo": false,
6105
- "type": "boolean"
6106
- }
6107
- },
6108
- "hasDynamicHelp": false,
6109
- "hiddenAliases": [],
6110
- "id": "enterprise:webhooks:delete",
6111
- "pluginAlias": "@sendly/cli",
6112
- "pluginName": "@sendly/cli",
6113
- "pluginType": "core",
6114
- "strict": true,
6115
- "isESM": true,
6116
- "relativePath": [
6117
- "dist",
6118
- "commands",
6119
- "enterprise",
6120
- "webhooks",
6121
- "delete.js"
6122
- ]
6123
- },
6124
- "enterprise:webhooks:get": {
6125
- "aliases": [],
6126
- "args": {},
6127
- "description": "Get the enterprise webhook configuration",
6128
- "examples": [
6129
- "<%= config.bin %> enterprise webhooks get",
6130
- "<%= config.bin %> enterprise webhooks get --json"
6131
- ],
6132
- "flags": {
6133
- "json": {
6134
- "description": "Output in JSON format",
6135
- "name": "json",
6136
- "allowNo": false,
6137
- "type": "boolean"
6138
- },
6139
- "quiet": {
6140
- "char": "q",
6141
- "description": "Minimal output",
6142
- "name": "quiet",
6143
- "allowNo": false,
6144
- "type": "boolean"
6145
- }
6146
- },
6147
- "hasDynamicHelp": false,
6148
- "hiddenAliases": [],
6149
- "id": "enterprise:webhooks:get",
6150
- "pluginAlias": "@sendly/cli",
6151
- "pluginName": "@sendly/cli",
6152
- "pluginType": "core",
6153
- "strict": true,
6154
- "isESM": true,
6155
- "relativePath": [
6156
- "dist",
6157
- "commands",
6158
- "enterprise",
6159
- "webhooks",
6160
- "get.js"
6161
- ]
6162
- },
6163
- "enterprise:webhooks:set": {
6164
- "aliases": [],
6165
- "args": {},
6166
- "description": "Create or update the enterprise-level webhook",
6167
- "examples": [
6168
- "<%= config.bin %> enterprise webhooks set --url https://example.com/webhook",
6169
- "<%= config.bin %> enterprise webhooks set --url https://example.com/webhook --events \"message.sent,message.delivered\""
6170
- ],
6171
- "flags": {
6172
- "json": {
6173
- "description": "Output in JSON format",
6174
- "name": "json",
6175
- "allowNo": false,
6176
- "type": "boolean"
6177
- },
6178
- "quiet": {
6179
- "char": "q",
6180
- "description": "Minimal output",
6181
- "name": "quiet",
6182
- "allowNo": false,
6183
- "type": "boolean"
6184
- },
6185
- "url": {
6186
- "description": "Webhook endpoint URL",
6187
- "name": "url",
6188
- "required": true,
6189
- "hasDynamicHelp": false,
6190
- "multiple": false,
6191
- "type": "option"
6192
- },
6193
- "events": {
6194
- "description": "Comma-separated list of event types to subscribe to",
6195
- "name": "events",
6196
- "hasDynamicHelp": false,
6197
- "multiple": false,
6198
- "type": "option"
6199
- }
6200
- },
6201
- "hasDynamicHelp": false,
6202
- "hiddenAliases": [],
6203
- "id": "enterprise:webhooks:set",
6204
- "pluginAlias": "@sendly/cli",
6205
- "pluginName": "@sendly/cli",
6206
- "pluginType": "core",
6207
- "strict": true,
6208
- "isESM": true,
6209
- "relativePath": [
6210
- "dist",
6211
- "commands",
6212
- "enterprise",
6213
- "webhooks",
6214
- "set.js"
6215
- ]
6216
- },
6217
- "enterprise:webhooks:test": {
6218
- "aliases": [],
6219
- "args": {},
6220
- "description": "Send a test event to the enterprise webhook",
6221
- "examples": [
6222
- "<%= config.bin %> enterprise webhooks test",
6223
- "<%= config.bin %> enterprise webhooks test --json"
6224
- ],
6225
- "flags": {
6226
- "json": {
6227
- "description": "Output in JSON format",
6228
- "name": "json",
6229
- "allowNo": false,
6230
- "type": "boolean"
6231
- },
6232
- "quiet": {
6233
- "char": "q",
6234
- "description": "Minimal output",
6235
- "name": "quiet",
6236
- "allowNo": false,
6237
- "type": "boolean"
6238
- }
6239
- },
6240
- "hasDynamicHelp": false,
6241
- "hiddenAliases": [],
6242
- "id": "enterprise:webhooks:test",
6243
- "pluginAlias": "@sendly/cli",
6244
- "pluginName": "@sendly/cli",
6245
- "pluginType": "core",
6246
- "strict": true,
6247
- "isESM": true,
6248
- "relativePath": [
6249
- "dist",
6250
- "commands",
6251
- "enterprise",
6252
- "webhooks",
6253
- "test.js"
6254
- ]
6255
6255
  }
6256
6256
  },
6257
- "version": "3.23.0"
6257
+ "version": "3.24.0"
6258
6258
  }