@isnap/sdk 1.1.0-next.55 → 1.1.0-next.57
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.
|
@@ -862,152 +862,6 @@ export interface paths {
|
|
|
862
862
|
patch?: never;
|
|
863
863
|
trace?: never;
|
|
864
864
|
};
|
|
865
|
-
"/demo/start": {
|
|
866
|
-
parameters: {
|
|
867
|
-
query?: never;
|
|
868
|
-
header?: never;
|
|
869
|
-
path?: never;
|
|
870
|
-
cookie?: never;
|
|
871
|
-
};
|
|
872
|
-
get?: never;
|
|
873
|
-
put?: never;
|
|
874
|
-
post: {
|
|
875
|
-
parameters: {
|
|
876
|
-
query?: never;
|
|
877
|
-
header?: never;
|
|
878
|
-
path?: never;
|
|
879
|
-
cookie?: never;
|
|
880
|
-
};
|
|
881
|
-
requestBody?: never;
|
|
882
|
-
responses: {
|
|
883
|
-
/** @description Demo session started */
|
|
884
|
-
200: {
|
|
885
|
-
headers: {
|
|
886
|
-
[name: string]: unknown;
|
|
887
|
-
};
|
|
888
|
-
content: {
|
|
889
|
-
"application/json": components["schemas"]["DemoStart"];
|
|
890
|
-
};
|
|
891
|
-
};
|
|
892
|
-
};
|
|
893
|
-
};
|
|
894
|
-
delete?: never;
|
|
895
|
-
options?: never;
|
|
896
|
-
head?: never;
|
|
897
|
-
patch?: never;
|
|
898
|
-
trace?: never;
|
|
899
|
-
};
|
|
900
|
-
"/demo/send-test": {
|
|
901
|
-
parameters: {
|
|
902
|
-
query?: never;
|
|
903
|
-
header?: never;
|
|
904
|
-
path?: never;
|
|
905
|
-
cookie?: never;
|
|
906
|
-
};
|
|
907
|
-
get?: never;
|
|
908
|
-
put?: never;
|
|
909
|
-
post: {
|
|
910
|
-
parameters: {
|
|
911
|
-
query?: never;
|
|
912
|
-
header?: never;
|
|
913
|
-
path?: never;
|
|
914
|
-
cookie?: never;
|
|
915
|
-
};
|
|
916
|
-
requestBody?: {
|
|
917
|
-
content: {
|
|
918
|
-
"application/json": {
|
|
919
|
-
to_number: string;
|
|
920
|
-
};
|
|
921
|
-
};
|
|
922
|
-
};
|
|
923
|
-
responses: {
|
|
924
|
-
/** @description Test message sent */
|
|
925
|
-
200: {
|
|
926
|
-
headers: {
|
|
927
|
-
[name: string]: unknown;
|
|
928
|
-
};
|
|
929
|
-
content: {
|
|
930
|
-
"application/json": components["schemas"]["DemoSendTest"];
|
|
931
|
-
};
|
|
932
|
-
};
|
|
933
|
-
};
|
|
934
|
-
};
|
|
935
|
-
delete?: never;
|
|
936
|
-
options?: never;
|
|
937
|
-
head?: never;
|
|
938
|
-
patch?: never;
|
|
939
|
-
trace?: never;
|
|
940
|
-
};
|
|
941
|
-
"/demo/session": {
|
|
942
|
-
parameters: {
|
|
943
|
-
query?: never;
|
|
944
|
-
header?: never;
|
|
945
|
-
path?: never;
|
|
946
|
-
cookie?: never;
|
|
947
|
-
};
|
|
948
|
-
get: {
|
|
949
|
-
parameters: {
|
|
950
|
-
query?: never;
|
|
951
|
-
header?: never;
|
|
952
|
-
path?: never;
|
|
953
|
-
cookie?: never;
|
|
954
|
-
};
|
|
955
|
-
requestBody?: never;
|
|
956
|
-
responses: {
|
|
957
|
-
/** @description Current demo session */
|
|
958
|
-
200: {
|
|
959
|
-
headers: {
|
|
960
|
-
[name: string]: unknown;
|
|
961
|
-
};
|
|
962
|
-
content: {
|
|
963
|
-
"application/json": components["schemas"]["DemoSession"];
|
|
964
|
-
};
|
|
965
|
-
};
|
|
966
|
-
};
|
|
967
|
-
};
|
|
968
|
-
put?: never;
|
|
969
|
-
post?: never;
|
|
970
|
-
delete?: never;
|
|
971
|
-
options?: never;
|
|
972
|
-
head?: never;
|
|
973
|
-
patch?: never;
|
|
974
|
-
trace?: never;
|
|
975
|
-
};
|
|
976
|
-
"/demo/api-key": {
|
|
977
|
-
parameters: {
|
|
978
|
-
query?: never;
|
|
979
|
-
header?: never;
|
|
980
|
-
path?: never;
|
|
981
|
-
cookie?: never;
|
|
982
|
-
};
|
|
983
|
-
get?: never;
|
|
984
|
-
put?: never;
|
|
985
|
-
post: {
|
|
986
|
-
parameters: {
|
|
987
|
-
query?: never;
|
|
988
|
-
header?: never;
|
|
989
|
-
path?: never;
|
|
990
|
-
cookie?: never;
|
|
991
|
-
};
|
|
992
|
-
requestBody?: never;
|
|
993
|
-
responses: {
|
|
994
|
-
/** @description Demo API key generated */
|
|
995
|
-
200: {
|
|
996
|
-
headers: {
|
|
997
|
-
[name: string]: unknown;
|
|
998
|
-
};
|
|
999
|
-
content: {
|
|
1000
|
-
"application/json": components["schemas"]["DemoApiKey"];
|
|
1001
|
-
};
|
|
1002
|
-
};
|
|
1003
|
-
};
|
|
1004
|
-
};
|
|
1005
|
-
delete?: never;
|
|
1006
|
-
options?: never;
|
|
1007
|
-
head?: never;
|
|
1008
|
-
patch?: never;
|
|
1009
|
-
trace?: never;
|
|
1010
|
-
};
|
|
1011
865
|
"/analytics/message-volume": {
|
|
1012
866
|
parameters: {
|
|
1013
867
|
query?: never;
|
|
@@ -2692,7 +2546,7 @@ export interface paths {
|
|
|
2692
2546
|
content: {
|
|
2693
2547
|
"application/json": {
|
|
2694
2548
|
/** @enum {string} */
|
|
2695
|
-
status: "available" | "ordered" | "
|
|
2549
|
+
status: "available" | "ordered" | "received" | "setup_in_progress" | "ready" | "deployed" | "offline" | "decommissioned";
|
|
2696
2550
|
};
|
|
2697
2551
|
};
|
|
2698
2552
|
};
|
|
@@ -2761,7 +2615,7 @@ export interface paths {
|
|
|
2761
2615
|
get: {
|
|
2762
2616
|
parameters: {
|
|
2763
2617
|
query?: {
|
|
2764
|
-
billing_tier?: "rental_iphone" | "rental_android" | "byod_imessage" | "byod_android" | "shared_pool";
|
|
2618
|
+
billing_tier?: "rental_iphone" | "rental_android" | "byod_imessage" | "byod_android" | "shared_pool" | "shared_imessage";
|
|
2765
2619
|
status?: string;
|
|
2766
2620
|
assigned?: boolean | null;
|
|
2767
2621
|
fulfillment?: "pending" | "fulfilled";
|
|
@@ -2803,7 +2657,7 @@ export interface paths {
|
|
|
2803
2657
|
query?: {
|
|
2804
2658
|
page?: number;
|
|
2805
2659
|
limit?: number;
|
|
2806
|
-
billing_tier?: "rental_iphone" | "rental_android" | "byod_imessage" | "byod_android" | "shared_pool";
|
|
2660
|
+
billing_tier?: "rental_iphone" | "rental_android" | "byod_imessage" | "byod_android" | "shared_pool" | "shared_imessage";
|
|
2807
2661
|
};
|
|
2808
2662
|
header?: never;
|
|
2809
2663
|
path?: never;
|
|
@@ -2924,14 +2778,16 @@ export interface paths {
|
|
|
2924
2778
|
};
|
|
2925
2779
|
get: {
|
|
2926
2780
|
parameters: {
|
|
2927
|
-
query?:
|
|
2781
|
+
query?: {
|
|
2782
|
+
purpose?: "trial" | "shared";
|
|
2783
|
+
};
|
|
2928
2784
|
header?: never;
|
|
2929
2785
|
path?: never;
|
|
2930
2786
|
cookie?: never;
|
|
2931
2787
|
};
|
|
2932
2788
|
requestBody?: never;
|
|
2933
2789
|
responses: {
|
|
2934
|
-
/** @description Pool fleet summary + per-line trial/
|
|
2790
|
+
/** @description Pool fleet summary + per-line trial/binding/quota metrics + per-scope virtual/physical overcommit */
|
|
2935
2791
|
200: {
|
|
2936
2792
|
headers: {
|
|
2937
2793
|
[name: string]: unknown;
|
|
@@ -2973,6 +2829,82 @@ export interface paths {
|
|
|
2973
2829
|
patch?: never;
|
|
2974
2830
|
trace?: never;
|
|
2975
2831
|
};
|
|
2832
|
+
"/admin/lines/shared": {
|
|
2833
|
+
parameters: {
|
|
2834
|
+
query?: never;
|
|
2835
|
+
header?: never;
|
|
2836
|
+
path?: never;
|
|
2837
|
+
cookie?: never;
|
|
2838
|
+
};
|
|
2839
|
+
get?: never;
|
|
2840
|
+
put?: never;
|
|
2841
|
+
post: {
|
|
2842
|
+
parameters: {
|
|
2843
|
+
query?: never;
|
|
2844
|
+
header?: never;
|
|
2845
|
+
path?: never;
|
|
2846
|
+
cookie?: never;
|
|
2847
|
+
};
|
|
2848
|
+
requestBody?: {
|
|
2849
|
+
content: {
|
|
2850
|
+
"application/json": components["schemas"]["AdminMintSharedLineBody"];
|
|
2851
|
+
};
|
|
2852
|
+
};
|
|
2853
|
+
responses: {
|
|
2854
|
+
/** @description Virtual shared line minted for the target customer */
|
|
2855
|
+
201: {
|
|
2856
|
+
headers: {
|
|
2857
|
+
[name: string]: unknown;
|
|
2858
|
+
};
|
|
2859
|
+
content: {
|
|
2860
|
+
"application/json": components["schemas"]["Line"];
|
|
2861
|
+
};
|
|
2862
|
+
};
|
|
2863
|
+
};
|
|
2864
|
+
};
|
|
2865
|
+
delete?: never;
|
|
2866
|
+
options?: never;
|
|
2867
|
+
head?: never;
|
|
2868
|
+
patch?: never;
|
|
2869
|
+
trace?: never;
|
|
2870
|
+
};
|
|
2871
|
+
"/admin/pool-lines/{id}/demote": {
|
|
2872
|
+
parameters: {
|
|
2873
|
+
query?: never;
|
|
2874
|
+
header?: never;
|
|
2875
|
+
path?: never;
|
|
2876
|
+
cookie?: never;
|
|
2877
|
+
};
|
|
2878
|
+
get?: never;
|
|
2879
|
+
put?: never;
|
|
2880
|
+
post: {
|
|
2881
|
+
parameters: {
|
|
2882
|
+
query?: never;
|
|
2883
|
+
header?: never;
|
|
2884
|
+
path: {
|
|
2885
|
+
id: string;
|
|
2886
|
+
};
|
|
2887
|
+
cookie?: never;
|
|
2888
|
+
};
|
|
2889
|
+
requestBody?: never;
|
|
2890
|
+
responses: {
|
|
2891
|
+
/** @description Pool line demoted to a rental line (blocked while live trials or active bindings exist) */
|
|
2892
|
+
200: {
|
|
2893
|
+
headers: {
|
|
2894
|
+
[name: string]: unknown;
|
|
2895
|
+
};
|
|
2896
|
+
content: {
|
|
2897
|
+
"application/json": components["schemas"]["DemotePoolLine"];
|
|
2898
|
+
};
|
|
2899
|
+
};
|
|
2900
|
+
};
|
|
2901
|
+
};
|
|
2902
|
+
delete?: never;
|
|
2903
|
+
options?: never;
|
|
2904
|
+
head?: never;
|
|
2905
|
+
patch?: never;
|
|
2906
|
+
trace?: never;
|
|
2907
|
+
};
|
|
2976
2908
|
"/admin/activation-codes/{code}/status": {
|
|
2977
2909
|
parameters: {
|
|
2978
2910
|
query?: never;
|
|
@@ -3490,7 +3422,7 @@ export interface paths {
|
|
|
3490
3422
|
patch?: never;
|
|
3491
3423
|
trace?: never;
|
|
3492
3424
|
};
|
|
3493
|
-
"/va/
|
|
3425
|
+
"/va/performance": {
|
|
3494
3426
|
parameters: {
|
|
3495
3427
|
query?: never;
|
|
3496
3428
|
header?: never;
|
|
@@ -3499,71 +3431,68 @@ export interface paths {
|
|
|
3499
3431
|
};
|
|
3500
3432
|
get: {
|
|
3501
3433
|
parameters: {
|
|
3502
|
-
query?:
|
|
3503
|
-
page?: number;
|
|
3504
|
-
limit?: number;
|
|
3505
|
-
type?: "iphone" | "android";
|
|
3506
|
-
status?: string;
|
|
3507
|
-
availableForEsim?: boolean | null;
|
|
3508
|
-
};
|
|
3434
|
+
query?: never;
|
|
3509
3435
|
header?: never;
|
|
3510
3436
|
path?: never;
|
|
3511
3437
|
cookie?: never;
|
|
3512
3438
|
};
|
|
3513
3439
|
requestBody?: never;
|
|
3514
3440
|
responses: {
|
|
3515
|
-
/** @description
|
|
3441
|
+
/** @description VA performance KPIs */
|
|
3516
3442
|
200: {
|
|
3517
3443
|
headers: {
|
|
3518
3444
|
[name: string]: unknown;
|
|
3519
3445
|
};
|
|
3520
3446
|
content: {
|
|
3521
|
-
"application/json": components["schemas"]["
|
|
3447
|
+
"application/json": components["schemas"]["VAPerformance"];
|
|
3522
3448
|
};
|
|
3523
3449
|
};
|
|
3524
3450
|
};
|
|
3525
3451
|
};
|
|
3526
3452
|
put?: never;
|
|
3527
|
-
post
|
|
3453
|
+
post?: never;
|
|
3454
|
+
delete?: never;
|
|
3455
|
+
options?: never;
|
|
3456
|
+
head?: never;
|
|
3457
|
+
patch?: never;
|
|
3458
|
+
trace?: never;
|
|
3459
|
+
};
|
|
3460
|
+
"/va/mac-minis": {
|
|
3461
|
+
parameters: {
|
|
3462
|
+
query?: never;
|
|
3463
|
+
header?: never;
|
|
3464
|
+
path?: never;
|
|
3465
|
+
cookie?: never;
|
|
3466
|
+
};
|
|
3467
|
+
get: {
|
|
3528
3468
|
parameters: {
|
|
3529
3469
|
query?: never;
|
|
3530
3470
|
header?: never;
|
|
3531
3471
|
path?: never;
|
|
3532
3472
|
cookie?: never;
|
|
3533
3473
|
};
|
|
3534
|
-
requestBody?:
|
|
3535
|
-
content: {
|
|
3536
|
-
"application/json": {
|
|
3537
|
-
model: string;
|
|
3538
|
-
/** @enum {string} */
|
|
3539
|
-
type: "iphone" | "android";
|
|
3540
|
-
imei?: string;
|
|
3541
|
-
purchaseDate?: string;
|
|
3542
|
-
/** Format: uuid */
|
|
3543
|
-
farmId: string;
|
|
3544
|
-
notes?: string;
|
|
3545
|
-
};
|
|
3546
|
-
};
|
|
3547
|
-
};
|
|
3474
|
+
requestBody?: never;
|
|
3548
3475
|
responses: {
|
|
3549
|
-
/** @description
|
|
3476
|
+
/** @description Fleet Mac Minis with session counts */
|
|
3550
3477
|
200: {
|
|
3551
3478
|
headers: {
|
|
3552
3479
|
[name: string]: unknown;
|
|
3553
3480
|
};
|
|
3554
3481
|
content: {
|
|
3555
|
-
"application/json": components["schemas"]["
|
|
3482
|
+
"application/json": components["schemas"]["VAMacMinis"];
|
|
3556
3483
|
};
|
|
3557
3484
|
};
|
|
3558
3485
|
};
|
|
3559
3486
|
};
|
|
3487
|
+
put?: never;
|
|
3488
|
+
post?: never;
|
|
3560
3489
|
delete?: never;
|
|
3561
3490
|
options?: never;
|
|
3562
3491
|
head?: never;
|
|
3563
3492
|
patch?: never;
|
|
3564
3493
|
trace?: never;
|
|
3565
3494
|
};
|
|
3566
|
-
"/va/
|
|
3495
|
+
"/va/mac-minis/next": {
|
|
3567
3496
|
parameters: {
|
|
3568
3497
|
query?: never;
|
|
3569
3498
|
header?: never;
|
|
@@ -3572,11 +3501,249 @@ export interface paths {
|
|
|
3572
3501
|
};
|
|
3573
3502
|
get: {
|
|
3574
3503
|
parameters: {
|
|
3575
|
-
query?:
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
|
|
3579
|
-
|
|
3504
|
+
query?: never;
|
|
3505
|
+
header?: never;
|
|
3506
|
+
path?: never;
|
|
3507
|
+
cookie?: never;
|
|
3508
|
+
};
|
|
3509
|
+
requestBody?: never;
|
|
3510
|
+
responses: {
|
|
3511
|
+
/** @description Preview the least-loaded Mac Mini (no commit) */
|
|
3512
|
+
200: {
|
|
3513
|
+
headers: {
|
|
3514
|
+
[name: string]: unknown;
|
|
3515
|
+
};
|
|
3516
|
+
content: {
|
|
3517
|
+
"application/json": components["schemas"]["VANextMacMini"];
|
|
3518
|
+
};
|
|
3519
|
+
};
|
|
3520
|
+
};
|
|
3521
|
+
};
|
|
3522
|
+
put?: never;
|
|
3523
|
+
post?: never;
|
|
3524
|
+
delete?: never;
|
|
3525
|
+
options?: never;
|
|
3526
|
+
head?: never;
|
|
3527
|
+
patch?: never;
|
|
3528
|
+
trace?: never;
|
|
3529
|
+
};
|
|
3530
|
+
"/va/macos-sessions": {
|
|
3531
|
+
parameters: {
|
|
3532
|
+
query?: never;
|
|
3533
|
+
header?: never;
|
|
3534
|
+
path?: never;
|
|
3535
|
+
cookie?: never;
|
|
3536
|
+
};
|
|
3537
|
+
get?: never;
|
|
3538
|
+
put?: never;
|
|
3539
|
+
post: {
|
|
3540
|
+
parameters: {
|
|
3541
|
+
query?: never;
|
|
3542
|
+
header?: never;
|
|
3543
|
+
path?: never;
|
|
3544
|
+
cookie?: never;
|
|
3545
|
+
};
|
|
3546
|
+
requestBody?: {
|
|
3547
|
+
content: {
|
|
3548
|
+
"application/json": {
|
|
3549
|
+
/** Format: uuid */
|
|
3550
|
+
appleAccountId: string;
|
|
3551
|
+
login: string;
|
|
3552
|
+
password: string;
|
|
3553
|
+
};
|
|
3554
|
+
};
|
|
3555
|
+
};
|
|
3556
|
+
responses: {
|
|
3557
|
+
/** @description macOS session created (or pending_provisioning) */
|
|
3558
|
+
200: {
|
|
3559
|
+
headers: {
|
|
3560
|
+
[name: string]: unknown;
|
|
3561
|
+
};
|
|
3562
|
+
content: {
|
|
3563
|
+
"application/json": components["schemas"]["VAMacosSession"];
|
|
3564
|
+
};
|
|
3565
|
+
};
|
|
3566
|
+
};
|
|
3567
|
+
};
|
|
3568
|
+
delete?: never;
|
|
3569
|
+
options?: never;
|
|
3570
|
+
head?: never;
|
|
3571
|
+
patch?: never;
|
|
3572
|
+
trace?: never;
|
|
3573
|
+
};
|
|
3574
|
+
"/va/devices": {
|
|
3575
|
+
parameters: {
|
|
3576
|
+
query?: never;
|
|
3577
|
+
header?: never;
|
|
3578
|
+
path?: never;
|
|
3579
|
+
cookie?: never;
|
|
3580
|
+
};
|
|
3581
|
+
get: {
|
|
3582
|
+
parameters: {
|
|
3583
|
+
query?: {
|
|
3584
|
+
page?: number;
|
|
3585
|
+
limit?: number;
|
|
3586
|
+
type?: "iphone" | "android";
|
|
3587
|
+
status?: string;
|
|
3588
|
+
availableForEsim?: boolean | null;
|
|
3589
|
+
};
|
|
3590
|
+
header?: never;
|
|
3591
|
+
path?: never;
|
|
3592
|
+
cookie?: never;
|
|
3593
|
+
};
|
|
3594
|
+
requestBody?: never;
|
|
3595
|
+
responses: {
|
|
3596
|
+
/** @description Device inventory */
|
|
3597
|
+
200: {
|
|
3598
|
+
headers: {
|
|
3599
|
+
[name: string]: unknown;
|
|
3600
|
+
};
|
|
3601
|
+
content: {
|
|
3602
|
+
"application/json": components["schemas"]["VADeviceInventory"];
|
|
3603
|
+
};
|
|
3604
|
+
};
|
|
3605
|
+
};
|
|
3606
|
+
};
|
|
3607
|
+
put?: never;
|
|
3608
|
+
post: {
|
|
3609
|
+
parameters: {
|
|
3610
|
+
query?: never;
|
|
3611
|
+
header?: never;
|
|
3612
|
+
path?: never;
|
|
3613
|
+
cookie?: never;
|
|
3614
|
+
};
|
|
3615
|
+
requestBody?: {
|
|
3616
|
+
content: {
|
|
3617
|
+
"application/json": {
|
|
3618
|
+
model: string;
|
|
3619
|
+
/** @enum {string} */
|
|
3620
|
+
type: "iphone" | "android";
|
|
3621
|
+
imei?: string;
|
|
3622
|
+
purchaseDate?: string;
|
|
3623
|
+
/** Format: uuid */
|
|
3624
|
+
farmId: string;
|
|
3625
|
+
notes?: string;
|
|
3626
|
+
unitCostCents?: number;
|
|
3627
|
+
};
|
|
3628
|
+
};
|
|
3629
|
+
};
|
|
3630
|
+
responses: {
|
|
3631
|
+
/** @description Device created */
|
|
3632
|
+
200: {
|
|
3633
|
+
headers: {
|
|
3634
|
+
[name: string]: unknown;
|
|
3635
|
+
};
|
|
3636
|
+
content: {
|
|
3637
|
+
"application/json": components["schemas"]["VADevice"];
|
|
3638
|
+
};
|
|
3639
|
+
};
|
|
3640
|
+
};
|
|
3641
|
+
};
|
|
3642
|
+
delete?: never;
|
|
3643
|
+
options?: never;
|
|
3644
|
+
head?: never;
|
|
3645
|
+
patch?: never;
|
|
3646
|
+
trace?: never;
|
|
3647
|
+
};
|
|
3648
|
+
"/va/devices/{id}": {
|
|
3649
|
+
parameters: {
|
|
3650
|
+
query?: never;
|
|
3651
|
+
header?: never;
|
|
3652
|
+
path?: never;
|
|
3653
|
+
cookie?: never;
|
|
3654
|
+
};
|
|
3655
|
+
get?: never;
|
|
3656
|
+
put?: never;
|
|
3657
|
+
post?: never;
|
|
3658
|
+
delete?: never;
|
|
3659
|
+
options?: never;
|
|
3660
|
+
head?: never;
|
|
3661
|
+
patch: {
|
|
3662
|
+
parameters: {
|
|
3663
|
+
query?: never;
|
|
3664
|
+
header?: never;
|
|
3665
|
+
path: {
|
|
3666
|
+
id: string;
|
|
3667
|
+
};
|
|
3668
|
+
cookie?: never;
|
|
3669
|
+
};
|
|
3670
|
+
requestBody?: {
|
|
3671
|
+
content: {
|
|
3672
|
+
"application/json": {
|
|
3673
|
+
model?: string;
|
|
3674
|
+
imei?: string | null;
|
|
3675
|
+
notes?: string;
|
|
3676
|
+
unitCostCents?: number | null;
|
|
3677
|
+
/** Format: uuid */
|
|
3678
|
+
farmId?: string;
|
|
3679
|
+
};
|
|
3680
|
+
};
|
|
3681
|
+
};
|
|
3682
|
+
responses: {
|
|
3683
|
+
/** @description Device updated */
|
|
3684
|
+
200: {
|
|
3685
|
+
headers: {
|
|
3686
|
+
[name: string]: unknown;
|
|
3687
|
+
};
|
|
3688
|
+
content: {
|
|
3689
|
+
"application/json": components["schemas"]["VADevice"];
|
|
3690
|
+
};
|
|
3691
|
+
};
|
|
3692
|
+
};
|
|
3693
|
+
};
|
|
3694
|
+
trace?: never;
|
|
3695
|
+
};
|
|
3696
|
+
"/va/device-models": {
|
|
3697
|
+
parameters: {
|
|
3698
|
+
query?: never;
|
|
3699
|
+
header?: never;
|
|
3700
|
+
path?: never;
|
|
3701
|
+
cookie?: never;
|
|
3702
|
+
};
|
|
3703
|
+
get: {
|
|
3704
|
+
parameters: {
|
|
3705
|
+
query?: {
|
|
3706
|
+
platform?: "iphone" | "android";
|
|
3707
|
+
};
|
|
3708
|
+
header?: never;
|
|
3709
|
+
path?: never;
|
|
3710
|
+
cookie?: never;
|
|
3711
|
+
};
|
|
3712
|
+
requestBody?: never;
|
|
3713
|
+
responses: {
|
|
3714
|
+
/** @description VA-readable device-model catalogue */
|
|
3715
|
+
200: {
|
|
3716
|
+
headers: {
|
|
3717
|
+
[name: string]: unknown;
|
|
3718
|
+
};
|
|
3719
|
+
content: {
|
|
3720
|
+
"application/json": components["schemas"]["VADeviceModels"];
|
|
3721
|
+
};
|
|
3722
|
+
};
|
|
3723
|
+
};
|
|
3724
|
+
};
|
|
3725
|
+
put?: never;
|
|
3726
|
+
post?: never;
|
|
3727
|
+
delete?: never;
|
|
3728
|
+
options?: never;
|
|
3729
|
+
head?: never;
|
|
3730
|
+
patch?: never;
|
|
3731
|
+
trace?: never;
|
|
3732
|
+
};
|
|
3733
|
+
"/va/esims": {
|
|
3734
|
+
parameters: {
|
|
3735
|
+
query?: never;
|
|
3736
|
+
header?: never;
|
|
3737
|
+
path?: never;
|
|
3738
|
+
cookie?: never;
|
|
3739
|
+
};
|
|
3740
|
+
get: {
|
|
3741
|
+
parameters: {
|
|
3742
|
+
query?: {
|
|
3743
|
+
page?: number;
|
|
3744
|
+
limit?: number;
|
|
3745
|
+
areaCode?: string;
|
|
3746
|
+
status?: string;
|
|
3580
3747
|
};
|
|
3581
3748
|
header?: never;
|
|
3582
3749
|
path?: never;
|
|
@@ -3723,7 +3890,7 @@ export interface paths {
|
|
|
3723
3890
|
query?: {
|
|
3724
3891
|
page?: number;
|
|
3725
3892
|
limit?: number;
|
|
3726
|
-
type?: "buy_device" | "buy_esim" | "create_apple_account" | "assemble_line"
|
|
3893
|
+
type?: "buy_device" | "buy_esim" | "create_apple_account" | "assemble_line";
|
|
3727
3894
|
status?: string;
|
|
3728
3895
|
};
|
|
3729
3896
|
header?: never;
|
|
@@ -3755,7 +3922,7 @@ export interface paths {
|
|
|
3755
3922
|
content: {
|
|
3756
3923
|
"application/json": {
|
|
3757
3924
|
/** @enum {string} */
|
|
3758
|
-
type: "buy_device" | "buy_esim" | "create_apple_account" | "assemble_line"
|
|
3925
|
+
type: "buy_device" | "buy_esim" | "create_apple_account" | "assemble_line";
|
|
3759
3926
|
/** @default 3 */
|
|
3760
3927
|
priority?: number;
|
|
3761
3928
|
dueAt?: string;
|
|
@@ -3877,54 +4044,42 @@ export interface paths {
|
|
|
3877
4044
|
patch?: never;
|
|
3878
4045
|
trace?: never;
|
|
3879
4046
|
};
|
|
3880
|
-
"/va/
|
|
4047
|
+
"/va/farms": {
|
|
3881
4048
|
parameters: {
|
|
3882
4049
|
query?: never;
|
|
3883
4050
|
header?: never;
|
|
3884
4051
|
path?: never;
|
|
3885
4052
|
cookie?: never;
|
|
3886
4053
|
};
|
|
3887
|
-
get
|
|
3888
|
-
put?: never;
|
|
3889
|
-
post: {
|
|
4054
|
+
get: {
|
|
3890
4055
|
parameters: {
|
|
3891
4056
|
query?: never;
|
|
3892
4057
|
header?: never;
|
|
3893
|
-
path
|
|
3894
|
-
id: string;
|
|
3895
|
-
};
|
|
4058
|
+
path?: never;
|
|
3896
4059
|
cookie?: never;
|
|
3897
4060
|
};
|
|
3898
|
-
requestBody?:
|
|
3899
|
-
content: {
|
|
3900
|
-
"application/json": {
|
|
3901
|
-
trackingNumber?: string;
|
|
3902
|
-
carrier?: string;
|
|
3903
|
-
trackingUrl?: string;
|
|
3904
|
-
expectedArrivalDate?: string;
|
|
3905
|
-
notes?: string;
|
|
3906
|
-
};
|
|
3907
|
-
};
|
|
3908
|
-
};
|
|
4061
|
+
requestBody?: never;
|
|
3909
4062
|
responses: {
|
|
3910
|
-
/** @description
|
|
4063
|
+
/** @description Farms list */
|
|
3911
4064
|
200: {
|
|
3912
4065
|
headers: {
|
|
3913
4066
|
[name: string]: unknown;
|
|
3914
4067
|
};
|
|
3915
4068
|
content: {
|
|
3916
|
-
"application/json": components["schemas"]["
|
|
4069
|
+
"application/json": components["schemas"]["FarmsList"];
|
|
3917
4070
|
};
|
|
3918
4071
|
};
|
|
3919
4072
|
};
|
|
3920
4073
|
};
|
|
4074
|
+
put?: never;
|
|
4075
|
+
post?: never;
|
|
3921
4076
|
delete?: never;
|
|
3922
4077
|
options?: never;
|
|
3923
4078
|
head?: never;
|
|
3924
4079
|
patch?: never;
|
|
3925
4080
|
trace?: never;
|
|
3926
4081
|
};
|
|
3927
|
-
"/va/
|
|
4082
|
+
"/va/carriers": {
|
|
3928
4083
|
parameters: {
|
|
3929
4084
|
query?: never;
|
|
3930
4085
|
header?: never;
|
|
@@ -3940,13 +4095,13 @@ export interface paths {
|
|
|
3940
4095
|
};
|
|
3941
4096
|
requestBody?: never;
|
|
3942
4097
|
responses: {
|
|
3943
|
-
/** @description
|
|
4098
|
+
/** @description Carriers */
|
|
3944
4099
|
200: {
|
|
3945
4100
|
headers: {
|
|
3946
4101
|
[name: string]: unknown;
|
|
3947
4102
|
};
|
|
3948
4103
|
content: {
|
|
3949
|
-
"application/json": components["schemas"]["
|
|
4104
|
+
"application/json": components["schemas"]["Carriers"];
|
|
3950
4105
|
};
|
|
3951
4106
|
};
|
|
3952
4107
|
};
|
|
@@ -3959,7 +4114,7 @@ export interface paths {
|
|
|
3959
4114
|
patch?: never;
|
|
3960
4115
|
trace?: never;
|
|
3961
4116
|
};
|
|
3962
|
-
"/va/
|
|
4117
|
+
"/va/carrier-plans/{carrierName}": {
|
|
3963
4118
|
parameters: {
|
|
3964
4119
|
query?: never;
|
|
3965
4120
|
header?: never;
|
|
@@ -3970,18 +4125,20 @@ export interface paths {
|
|
|
3970
4125
|
parameters: {
|
|
3971
4126
|
query?: never;
|
|
3972
4127
|
header?: never;
|
|
3973
|
-
path
|
|
4128
|
+
path: {
|
|
4129
|
+
carrierName: string;
|
|
4130
|
+
};
|
|
3974
4131
|
cookie?: never;
|
|
3975
4132
|
};
|
|
3976
4133
|
requestBody?: never;
|
|
3977
4134
|
responses: {
|
|
3978
|
-
/** @description
|
|
4135
|
+
/** @description Carrier plans */
|
|
3979
4136
|
200: {
|
|
3980
4137
|
headers: {
|
|
3981
4138
|
[name: string]: unknown;
|
|
3982
4139
|
};
|
|
3983
4140
|
content: {
|
|
3984
|
-
"application/json": components["schemas"]["
|
|
4141
|
+
"application/json": components["schemas"]["CarrierPlans"];
|
|
3985
4142
|
};
|
|
3986
4143
|
};
|
|
3987
4144
|
};
|
|
@@ -3994,44 +4151,42 @@ export interface paths {
|
|
|
3994
4151
|
patch?: never;
|
|
3995
4152
|
trace?: never;
|
|
3996
4153
|
};
|
|
3997
|
-
"/va/
|
|
4154
|
+
"/va/generate-email": {
|
|
3998
4155
|
parameters: {
|
|
3999
4156
|
query?: never;
|
|
4000
4157
|
header?: never;
|
|
4001
4158
|
path?: never;
|
|
4002
4159
|
cookie?: never;
|
|
4003
4160
|
};
|
|
4004
|
-
get
|
|
4161
|
+
get?: never;
|
|
4162
|
+
put?: never;
|
|
4163
|
+
post: {
|
|
4005
4164
|
parameters: {
|
|
4006
4165
|
query?: never;
|
|
4007
4166
|
header?: never;
|
|
4008
|
-
path
|
|
4009
|
-
carrierName: string;
|
|
4010
|
-
};
|
|
4167
|
+
path?: never;
|
|
4011
4168
|
cookie?: never;
|
|
4012
4169
|
};
|
|
4013
4170
|
requestBody?: never;
|
|
4014
4171
|
responses: {
|
|
4015
|
-
/** @description
|
|
4172
|
+
/** @description Stalwart email generated */
|
|
4016
4173
|
200: {
|
|
4017
4174
|
headers: {
|
|
4018
4175
|
[name: string]: unknown;
|
|
4019
4176
|
};
|
|
4020
4177
|
content: {
|
|
4021
|
-
"application/json": components["schemas"]["
|
|
4178
|
+
"application/json": components["schemas"]["StalwartEmail"];
|
|
4022
4179
|
};
|
|
4023
4180
|
};
|
|
4024
4181
|
};
|
|
4025
4182
|
};
|
|
4026
|
-
put?: never;
|
|
4027
|
-
post?: never;
|
|
4028
4183
|
delete?: never;
|
|
4029
4184
|
options?: never;
|
|
4030
4185
|
head?: never;
|
|
4031
4186
|
patch?: never;
|
|
4032
4187
|
trace?: never;
|
|
4033
4188
|
};
|
|
4034
|
-
"/va/
|
|
4189
|
+
"/va/fetch-activation-code": {
|
|
4035
4190
|
parameters: {
|
|
4036
4191
|
query?: never;
|
|
4037
4192
|
header?: never;
|
|
@@ -4047,34 +4202,142 @@ export interface paths {
|
|
|
4047
4202
|
path?: never;
|
|
4048
4203
|
cookie?: never;
|
|
4049
4204
|
};
|
|
4205
|
+
requestBody?: {
|
|
4206
|
+
content: {
|
|
4207
|
+
"application/json": {
|
|
4208
|
+
/** Format: email */
|
|
4209
|
+
email: string;
|
|
4210
|
+
password: string;
|
|
4211
|
+
};
|
|
4212
|
+
};
|
|
4213
|
+
};
|
|
4214
|
+
responses: {
|
|
4215
|
+
/** @description eSIM activation code */
|
|
4216
|
+
200: {
|
|
4217
|
+
headers: {
|
|
4218
|
+
[name: string]: unknown;
|
|
4219
|
+
};
|
|
4220
|
+
content: {
|
|
4221
|
+
"application/json": components["schemas"]["EsimActivationCode"];
|
|
4222
|
+
};
|
|
4223
|
+
};
|
|
4224
|
+
};
|
|
4225
|
+
};
|
|
4226
|
+
delete?: never;
|
|
4227
|
+
options?: never;
|
|
4228
|
+
head?: never;
|
|
4229
|
+
patch?: never;
|
|
4230
|
+
trace?: never;
|
|
4231
|
+
};
|
|
4232
|
+
"/va/esim-email/{preOrderId}": {
|
|
4233
|
+
parameters: {
|
|
4234
|
+
query?: never;
|
|
4235
|
+
header?: never;
|
|
4236
|
+
path?: never;
|
|
4237
|
+
cookie?: never;
|
|
4238
|
+
};
|
|
4239
|
+
get: {
|
|
4240
|
+
parameters: {
|
|
4241
|
+
query?: never;
|
|
4242
|
+
header?: never;
|
|
4243
|
+
path: {
|
|
4244
|
+
preOrderId: string;
|
|
4245
|
+
};
|
|
4246
|
+
cookie?: never;
|
|
4247
|
+
};
|
|
4050
4248
|
requestBody?: never;
|
|
4051
4249
|
responses: {
|
|
4052
|
-
/** @description
|
|
4250
|
+
/** @description eSIM email for pre-order */
|
|
4053
4251
|
200: {
|
|
4054
4252
|
headers: {
|
|
4055
4253
|
[name: string]: unknown;
|
|
4056
4254
|
};
|
|
4057
4255
|
content: {
|
|
4058
|
-
"application/json": components["schemas"]["
|
|
4256
|
+
"application/json": components["schemas"]["EsimEmail"];
|
|
4059
4257
|
};
|
|
4060
4258
|
};
|
|
4061
4259
|
};
|
|
4062
4260
|
};
|
|
4261
|
+
put?: never;
|
|
4262
|
+
post?: never;
|
|
4063
4263
|
delete?: never;
|
|
4064
4264
|
options?: never;
|
|
4065
4265
|
head?: never;
|
|
4066
4266
|
patch?: never;
|
|
4067
4267
|
trace?: never;
|
|
4068
4268
|
};
|
|
4069
|
-
"/
|
|
4269
|
+
"/v1/api-keys": {
|
|
4070
4270
|
parameters: {
|
|
4071
4271
|
query?: never;
|
|
4072
4272
|
header?: never;
|
|
4073
4273
|
path?: never;
|
|
4074
4274
|
cookie?: never;
|
|
4075
4275
|
};
|
|
4076
|
-
|
|
4276
|
+
/**
|
|
4277
|
+
* List API keys
|
|
4278
|
+
* @description Return every non-revoked API key for the authenticated user. Includes the key prefix, scope, line allowlist, and last-used timestamp — never the plaintext (which is only emitted once at create time).
|
|
4279
|
+
*/
|
|
4280
|
+
get: {
|
|
4281
|
+
parameters: {
|
|
4282
|
+
query?: never;
|
|
4283
|
+
header?: never;
|
|
4284
|
+
path?: never;
|
|
4285
|
+
cookie?: never;
|
|
4286
|
+
};
|
|
4287
|
+
requestBody?: never;
|
|
4288
|
+
responses: {
|
|
4289
|
+
/** @description API key list */
|
|
4290
|
+
200: {
|
|
4291
|
+
headers: {
|
|
4292
|
+
[name: string]: unknown;
|
|
4293
|
+
};
|
|
4294
|
+
content: {
|
|
4295
|
+
"application/json": components["schemas"]["ApiKeyList"];
|
|
4296
|
+
};
|
|
4297
|
+
};
|
|
4298
|
+
/** @description Bad request — validation failed */
|
|
4299
|
+
400: {
|
|
4300
|
+
headers: {
|
|
4301
|
+
[name: string]: unknown;
|
|
4302
|
+
};
|
|
4303
|
+
content: {
|
|
4304
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4305
|
+
};
|
|
4306
|
+
};
|
|
4307
|
+
/** @description Unauthenticated — missing or invalid bearer token */
|
|
4308
|
+
401: {
|
|
4309
|
+
headers: {
|
|
4310
|
+
[name: string]: unknown;
|
|
4311
|
+
};
|
|
4312
|
+
content: {
|
|
4313
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4314
|
+
};
|
|
4315
|
+
};
|
|
4316
|
+
/** @description Too many requests — rate limit exceeded */
|
|
4317
|
+
429: {
|
|
4318
|
+
headers: {
|
|
4319
|
+
[name: string]: unknown;
|
|
4320
|
+
};
|
|
4321
|
+
content: {
|
|
4322
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4323
|
+
};
|
|
4324
|
+
};
|
|
4325
|
+
/** @description Internal server error */
|
|
4326
|
+
500: {
|
|
4327
|
+
headers: {
|
|
4328
|
+
[name: string]: unknown;
|
|
4329
|
+
};
|
|
4330
|
+
content: {
|
|
4331
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4332
|
+
};
|
|
4333
|
+
};
|
|
4334
|
+
};
|
|
4335
|
+
};
|
|
4077
4336
|
put?: never;
|
|
4337
|
+
/**
|
|
4338
|
+
* Create an API key
|
|
4339
|
+
* @description Mint a new API key for the authenticated user. The plaintext key is returned ONCE in this response — store it; the server only keeps a hash. Optional `line_ids` array scopes the key to specific lines; omit or pass `[]` for account-wide access.
|
|
4340
|
+
*/
|
|
4078
4341
|
post: {
|
|
4079
4342
|
parameters: {
|
|
4080
4343
|
query?: never;
|
|
@@ -4085,20 +4348,60 @@ export interface paths {
|
|
|
4085
4348
|
requestBody?: {
|
|
4086
4349
|
content: {
|
|
4087
4350
|
"application/json": {
|
|
4088
|
-
|
|
4089
|
-
|
|
4090
|
-
|
|
4351
|
+
name?: string;
|
|
4352
|
+
/**
|
|
4353
|
+
* @default live
|
|
4354
|
+
* @enum {string}
|
|
4355
|
+
*/
|
|
4356
|
+
scope?: "test" | "live";
|
|
4357
|
+
line_ids?: string[];
|
|
4091
4358
|
};
|
|
4092
4359
|
};
|
|
4093
4360
|
};
|
|
4094
4361
|
responses: {
|
|
4095
|
-
/** @description
|
|
4096
|
-
|
|
4362
|
+
/** @description API key created */
|
|
4363
|
+
201: {
|
|
4097
4364
|
headers: {
|
|
4098
4365
|
[name: string]: unknown;
|
|
4099
4366
|
};
|
|
4100
4367
|
content: {
|
|
4101
|
-
"application/json": components["schemas"]["
|
|
4368
|
+
"application/json": components["schemas"]["ApiKeyCreate"];
|
|
4369
|
+
};
|
|
4370
|
+
};
|
|
4371
|
+
/** @description Bad request — validation failed */
|
|
4372
|
+
400: {
|
|
4373
|
+
headers: {
|
|
4374
|
+
[name: string]: unknown;
|
|
4375
|
+
};
|
|
4376
|
+
content: {
|
|
4377
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4378
|
+
};
|
|
4379
|
+
};
|
|
4380
|
+
/** @description Unauthenticated — missing or invalid bearer token */
|
|
4381
|
+
401: {
|
|
4382
|
+
headers: {
|
|
4383
|
+
[name: string]: unknown;
|
|
4384
|
+
};
|
|
4385
|
+
content: {
|
|
4386
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4387
|
+
};
|
|
4388
|
+
};
|
|
4389
|
+
/** @description Too many requests — rate limit exceeded */
|
|
4390
|
+
429: {
|
|
4391
|
+
headers: {
|
|
4392
|
+
[name: string]: unknown;
|
|
4393
|
+
};
|
|
4394
|
+
content: {
|
|
4395
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4396
|
+
};
|
|
4397
|
+
};
|
|
4398
|
+
/** @description Internal server error */
|
|
4399
|
+
500: {
|
|
4400
|
+
headers: {
|
|
4401
|
+
[name: string]: unknown;
|
|
4402
|
+
};
|
|
4403
|
+
content: {
|
|
4404
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4102
4405
|
};
|
|
4103
4406
|
};
|
|
4104
4407
|
};
|
|
@@ -4109,31 +4412,172 @@ export interface paths {
|
|
|
4109
4412
|
patch?: never;
|
|
4110
4413
|
trace?: never;
|
|
4111
4414
|
};
|
|
4112
|
-
"/
|
|
4415
|
+
"/v1/api-keys/{id}": {
|
|
4113
4416
|
parameters: {
|
|
4114
4417
|
query?: never;
|
|
4115
4418
|
header?: never;
|
|
4116
4419
|
path?: never;
|
|
4117
4420
|
cookie?: never;
|
|
4118
4421
|
};
|
|
4119
|
-
get
|
|
4422
|
+
get?: never;
|
|
4423
|
+
put?: never;
|
|
4424
|
+
post?: never;
|
|
4425
|
+
/**
|
|
4426
|
+
* Revoke an API key
|
|
4427
|
+
* @description Mark the API key as revoked. Subsequent requests presenting this key receive 401. Revocation is irreversible — issue a fresh key via `POST /v1/api-keys` to regain access.
|
|
4428
|
+
*/
|
|
4429
|
+
delete: {
|
|
4120
4430
|
parameters: {
|
|
4121
4431
|
query?: never;
|
|
4122
4432
|
header?: never;
|
|
4123
4433
|
path: {
|
|
4124
|
-
|
|
4434
|
+
id: string;
|
|
4125
4435
|
};
|
|
4126
4436
|
cookie?: never;
|
|
4127
4437
|
};
|
|
4128
4438
|
requestBody?: never;
|
|
4129
4439
|
responses: {
|
|
4130
|
-
/** @description
|
|
4440
|
+
/** @description API key revoked */
|
|
4131
4441
|
200: {
|
|
4132
4442
|
headers: {
|
|
4133
4443
|
[name: string]: unknown;
|
|
4134
4444
|
};
|
|
4135
4445
|
content: {
|
|
4136
|
-
"application/json": components["schemas"]["
|
|
4446
|
+
"application/json": components["schemas"]["ApiKeyRevoke"];
|
|
4447
|
+
};
|
|
4448
|
+
};
|
|
4449
|
+
/** @description Bad request — validation failed */
|
|
4450
|
+
400: {
|
|
4451
|
+
headers: {
|
|
4452
|
+
[name: string]: unknown;
|
|
4453
|
+
};
|
|
4454
|
+
content: {
|
|
4455
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4456
|
+
};
|
|
4457
|
+
};
|
|
4458
|
+
/** @description Unauthenticated — missing or invalid bearer token */
|
|
4459
|
+
401: {
|
|
4460
|
+
headers: {
|
|
4461
|
+
[name: string]: unknown;
|
|
4462
|
+
};
|
|
4463
|
+
content: {
|
|
4464
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4465
|
+
};
|
|
4466
|
+
};
|
|
4467
|
+
/** @description Forbidden — caller authenticated but not allowed */
|
|
4468
|
+
403: {
|
|
4469
|
+
headers: {
|
|
4470
|
+
[name: string]: unknown;
|
|
4471
|
+
};
|
|
4472
|
+
content: {
|
|
4473
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4474
|
+
};
|
|
4475
|
+
};
|
|
4476
|
+
/** @description Not found */
|
|
4477
|
+
404: {
|
|
4478
|
+
headers: {
|
|
4479
|
+
[name: string]: unknown;
|
|
4480
|
+
};
|
|
4481
|
+
content: {
|
|
4482
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4483
|
+
};
|
|
4484
|
+
};
|
|
4485
|
+
/** @description Too many requests — rate limit exceeded */
|
|
4486
|
+
429: {
|
|
4487
|
+
headers: {
|
|
4488
|
+
[name: string]: unknown;
|
|
4489
|
+
};
|
|
4490
|
+
content: {
|
|
4491
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4492
|
+
};
|
|
4493
|
+
};
|
|
4494
|
+
/** @description Internal server error */
|
|
4495
|
+
500: {
|
|
4496
|
+
headers: {
|
|
4497
|
+
[name: string]: unknown;
|
|
4498
|
+
};
|
|
4499
|
+
content: {
|
|
4500
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4501
|
+
};
|
|
4502
|
+
};
|
|
4503
|
+
};
|
|
4504
|
+
};
|
|
4505
|
+
options?: never;
|
|
4506
|
+
head?: never;
|
|
4507
|
+
patch?: never;
|
|
4508
|
+
trace?: never;
|
|
4509
|
+
};
|
|
4510
|
+
"/v1/lines": {
|
|
4511
|
+
parameters: {
|
|
4512
|
+
query?: never;
|
|
4513
|
+
header?: never;
|
|
4514
|
+
path?: never;
|
|
4515
|
+
cookie?: never;
|
|
4516
|
+
};
|
|
4517
|
+
/**
|
|
4518
|
+
* List available lines (public marketplace)
|
|
4519
|
+
* @description Browse the marketplace inventory of unassigned lines. Filter by billing tier, area code, country code, status. Returns only `status: available` and never the iSnap-internal `shared_pool` tier. Unauthenticated — partners use this in prospecting / quote flows.
|
|
4520
|
+
*/
|
|
4521
|
+
get: {
|
|
4522
|
+
parameters: {
|
|
4523
|
+
query?: {
|
|
4524
|
+
billing_tier?: "rental_iphone" | "rental_android" | "byod_imessage" | "byod_android" | "shared_pool" | "shared_imessage";
|
|
4525
|
+
area_code?: string;
|
|
4526
|
+
country_code?: string;
|
|
4527
|
+
/** @description US state filter — 2-letter code or full name. */
|
|
4528
|
+
state?: string;
|
|
4529
|
+
/** @description Country filter — ISO alpha-2 code or country name. */
|
|
4530
|
+
country?: string;
|
|
4531
|
+
status?: string;
|
|
4532
|
+
page?: number;
|
|
4533
|
+
limit?: number;
|
|
4534
|
+
};
|
|
4535
|
+
header?: never;
|
|
4536
|
+
path?: never;
|
|
4537
|
+
cookie?: never;
|
|
4538
|
+
};
|
|
4539
|
+
requestBody?: never;
|
|
4540
|
+
responses: {
|
|
4541
|
+
/** @description Available lines */
|
|
4542
|
+
200: {
|
|
4543
|
+
headers: {
|
|
4544
|
+
[name: string]: unknown;
|
|
4545
|
+
};
|
|
4546
|
+
content: {
|
|
4547
|
+
"application/json": {
|
|
4548
|
+
/** @enum {boolean} */
|
|
4549
|
+
success: true;
|
|
4550
|
+
data: components["schemas"]["LineList"];
|
|
4551
|
+
trace_id: string;
|
|
4552
|
+
request_id: string;
|
|
4553
|
+
};
|
|
4554
|
+
};
|
|
4555
|
+
};
|
|
4556
|
+
/** @description Bad request — validation failed */
|
|
4557
|
+
400: {
|
|
4558
|
+
headers: {
|
|
4559
|
+
[name: string]: unknown;
|
|
4560
|
+
};
|
|
4561
|
+
content: {
|
|
4562
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4563
|
+
};
|
|
4564
|
+
};
|
|
4565
|
+
/** @description Too many requests — rate limit exceeded */
|
|
4566
|
+
429: {
|
|
4567
|
+
headers: {
|
|
4568
|
+
[name: string]: unknown;
|
|
4569
|
+
};
|
|
4570
|
+
content: {
|
|
4571
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4572
|
+
};
|
|
4573
|
+
};
|
|
4574
|
+
/** @description Internal server error */
|
|
4575
|
+
500: {
|
|
4576
|
+
headers: {
|
|
4577
|
+
[name: string]: unknown;
|
|
4578
|
+
};
|
|
4579
|
+
content: {
|
|
4580
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4137
4581
|
};
|
|
4138
4582
|
};
|
|
4139
4583
|
};
|
|
@@ -4146,7 +4590,7 @@ export interface paths {
|
|
|
4146
4590
|
patch?: never;
|
|
4147
4591
|
trace?: never;
|
|
4148
4592
|
};
|
|
4149
|
-
"/v1/
|
|
4593
|
+
"/v1/lines/my": {
|
|
4150
4594
|
parameters: {
|
|
4151
4595
|
query?: never;
|
|
4152
4596
|
header?: never;
|
|
@@ -4154,8 +4598,8 @@ export interface paths {
|
|
|
4154
4598
|
cookie?: never;
|
|
4155
4599
|
};
|
|
4156
4600
|
/**
|
|
4157
|
-
* List
|
|
4158
|
-
* @description Return every
|
|
4601
|
+
* List the caller's own lines
|
|
4602
|
+
* @description Return every line owned by the authenticated user that's in `active` or `reserved` status. Includes a `fulfillment_status` hint for lines whose hardware is still being procured. Accepts an API key (`isnap_*`) or a dashboard JWT.
|
|
4159
4603
|
*/
|
|
4160
4604
|
get: {
|
|
4161
4605
|
parameters: {
|
|
@@ -4166,13 +4610,19 @@ export interface paths {
|
|
|
4166
4610
|
};
|
|
4167
4611
|
requestBody?: never;
|
|
4168
4612
|
responses: {
|
|
4169
|
-
/** @description
|
|
4613
|
+
/** @description User lines */
|
|
4170
4614
|
200: {
|
|
4171
4615
|
headers: {
|
|
4172
4616
|
[name: string]: unknown;
|
|
4173
4617
|
};
|
|
4174
4618
|
content: {
|
|
4175
|
-
"application/json":
|
|
4619
|
+
"application/json": {
|
|
4620
|
+
/** @enum {boolean} */
|
|
4621
|
+
success: true;
|
|
4622
|
+
data: components["schemas"]["MyLines"];
|
|
4623
|
+
trace_id: string;
|
|
4624
|
+
request_id: string;
|
|
4625
|
+
};
|
|
4176
4626
|
};
|
|
4177
4627
|
};
|
|
4178
4628
|
/** @description Bad request — validation failed */
|
|
@@ -4214,38 +4664,48 @@ export interface paths {
|
|
|
4214
4664
|
};
|
|
4215
4665
|
};
|
|
4216
4666
|
put?: never;
|
|
4667
|
+
post?: never;
|
|
4668
|
+
delete?: never;
|
|
4669
|
+
options?: never;
|
|
4670
|
+
head?: never;
|
|
4671
|
+
patch?: never;
|
|
4672
|
+
trace?: never;
|
|
4673
|
+
};
|
|
4674
|
+
"/v1/lines/{id}": {
|
|
4675
|
+
parameters: {
|
|
4676
|
+
query?: never;
|
|
4677
|
+
header?: never;
|
|
4678
|
+
path?: never;
|
|
4679
|
+
cookie?: never;
|
|
4680
|
+
};
|
|
4217
4681
|
/**
|
|
4218
|
-
*
|
|
4219
|
-
* @description
|
|
4682
|
+
* Get line details (public marketplace)
|
|
4683
|
+
* @description Fetch a single line by its `line_<base62>` id. Available unauthenticated for the marketplace browsing flow; partner-private metadata still requires API key access via `GET /v1/lines/my`.
|
|
4220
4684
|
*/
|
|
4221
|
-
|
|
4685
|
+
get: {
|
|
4222
4686
|
parameters: {
|
|
4223
4687
|
query?: never;
|
|
4224
4688
|
header?: never;
|
|
4225
|
-
path
|
|
4226
|
-
|
|
4227
|
-
};
|
|
4228
|
-
requestBody?: {
|
|
4229
|
-
content: {
|
|
4230
|
-
"application/json": {
|
|
4231
|
-
name?: string;
|
|
4232
|
-
/**
|
|
4233
|
-
* @default live
|
|
4234
|
-
* @enum {string}
|
|
4235
|
-
*/
|
|
4236
|
-
scope?: "test" | "live";
|
|
4237
|
-
line_ids?: string[];
|
|
4238
|
-
};
|
|
4689
|
+
path: {
|
|
4690
|
+
id: string;
|
|
4239
4691
|
};
|
|
4692
|
+
cookie?: never;
|
|
4240
4693
|
};
|
|
4694
|
+
requestBody?: never;
|
|
4241
4695
|
responses: {
|
|
4242
|
-
/** @description
|
|
4243
|
-
|
|
4696
|
+
/** @description Line */
|
|
4697
|
+
200: {
|
|
4244
4698
|
headers: {
|
|
4245
4699
|
[name: string]: unknown;
|
|
4246
4700
|
};
|
|
4247
4701
|
content: {
|
|
4248
|
-
"application/json":
|
|
4702
|
+
"application/json": {
|
|
4703
|
+
/** @enum {boolean} */
|
|
4704
|
+
success: true;
|
|
4705
|
+
data: components["schemas"]["Line"];
|
|
4706
|
+
trace_id: string;
|
|
4707
|
+
request_id: string;
|
|
4708
|
+
};
|
|
4249
4709
|
};
|
|
4250
4710
|
};
|
|
4251
4711
|
/** @description Bad request — validation failed */
|
|
@@ -4257,8 +4717,8 @@ export interface paths {
|
|
|
4257
4717
|
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4258
4718
|
};
|
|
4259
4719
|
};
|
|
4260
|
-
/** @description
|
|
4261
|
-
|
|
4720
|
+
/** @description Not found */
|
|
4721
|
+
404: {
|
|
4262
4722
|
headers: {
|
|
4263
4723
|
[name: string]: unknown;
|
|
4264
4724
|
};
|
|
@@ -4286,27 +4746,16 @@ export interface paths {
|
|
|
4286
4746
|
};
|
|
4287
4747
|
};
|
|
4288
4748
|
};
|
|
4749
|
+
put?: never;
|
|
4750
|
+
post?: never;
|
|
4289
4751
|
delete?: never;
|
|
4290
4752
|
options?: never;
|
|
4291
4753
|
head?: never;
|
|
4292
|
-
patch?: never;
|
|
4293
|
-
trace?: never;
|
|
4294
|
-
};
|
|
4295
|
-
"/v1/api-keys/{id}": {
|
|
4296
|
-
parameters: {
|
|
4297
|
-
query?: never;
|
|
4298
|
-
header?: never;
|
|
4299
|
-
path?: never;
|
|
4300
|
-
cookie?: never;
|
|
4301
|
-
};
|
|
4302
|
-
get?: never;
|
|
4303
|
-
put?: never;
|
|
4304
|
-
post?: never;
|
|
4305
4754
|
/**
|
|
4306
|
-
*
|
|
4307
|
-
* @description
|
|
4755
|
+
* Update line metadata
|
|
4756
|
+
* @description Merge-patch the line's free-form `metadata` tag object. Pass `null` for a key to delete it; pass a new value to overwrite. Metadata is echoed on every `line.*` webhook so partners can attribute events back to their own customer IDs.
|
|
4308
4757
|
*/
|
|
4309
|
-
|
|
4758
|
+
patch: {
|
|
4310
4759
|
parameters: {
|
|
4311
4760
|
query?: never;
|
|
4312
4761
|
header?: never;
|
|
@@ -4315,15 +4764,25 @@ export interface paths {
|
|
|
4315
4764
|
};
|
|
4316
4765
|
cookie?: never;
|
|
4317
4766
|
};
|
|
4318
|
-
requestBody?:
|
|
4767
|
+
requestBody?: {
|
|
4768
|
+
content: {
|
|
4769
|
+
"application/json": components["schemas"]["PatchLine"];
|
|
4770
|
+
};
|
|
4771
|
+
};
|
|
4319
4772
|
responses: {
|
|
4320
|
-
/** @description
|
|
4773
|
+
/** @description Line with merged metadata */
|
|
4321
4774
|
200: {
|
|
4322
4775
|
headers: {
|
|
4323
4776
|
[name: string]: unknown;
|
|
4324
4777
|
};
|
|
4325
4778
|
content: {
|
|
4326
|
-
"application/json":
|
|
4779
|
+
"application/json": {
|
|
4780
|
+
/** @enum {boolean} */
|
|
4781
|
+
success: true;
|
|
4782
|
+
data: components["schemas"]["Line"];
|
|
4783
|
+
trace_id: string;
|
|
4784
|
+
request_id: string;
|
|
4785
|
+
};
|
|
4327
4786
|
};
|
|
4328
4787
|
};
|
|
4329
4788
|
/** @description Bad request — validation failed */
|
|
@@ -4382,43 +4841,35 @@ export interface paths {
|
|
|
4382
4841
|
};
|
|
4383
4842
|
};
|
|
4384
4843
|
};
|
|
4385
|
-
options?: never;
|
|
4386
|
-
head?: never;
|
|
4387
|
-
patch?: never;
|
|
4388
4844
|
trace?: never;
|
|
4389
4845
|
};
|
|
4390
|
-
"/v1/lines": {
|
|
4846
|
+
"/v1/lines/assign": {
|
|
4391
4847
|
parameters: {
|
|
4392
4848
|
query?: never;
|
|
4393
4849
|
header?: never;
|
|
4394
4850
|
path?: never;
|
|
4395
4851
|
cookie?: never;
|
|
4396
4852
|
};
|
|
4853
|
+
get?: never;
|
|
4854
|
+
put?: never;
|
|
4397
4855
|
/**
|
|
4398
|
-
*
|
|
4399
|
-
* @description
|
|
4856
|
+
* Atomically reserve + activate a line
|
|
4857
|
+
* @description Find an available line matching `billing_tier` (and optional `area_code`), reserve it, and activate it in a single round-trip. Useful when the partner doesn't care which specific number they get — saves the reserve→checkout→activate dance. Scoped API keys are rejected (cannot assign lines outside their allowlist).
|
|
4400
4858
|
*/
|
|
4401
|
-
|
|
4859
|
+
post: {
|
|
4402
4860
|
parameters: {
|
|
4403
|
-
query?:
|
|
4404
|
-
billing_tier?: "rental_iphone" | "rental_android" | "byod_imessage" | "byod_android" | "shared_pool";
|
|
4405
|
-
area_code?: string;
|
|
4406
|
-
country_code?: string;
|
|
4407
|
-
/** @description US state filter — 2-letter code or full name. */
|
|
4408
|
-
state?: string;
|
|
4409
|
-
/** @description Country filter — ISO alpha-2 code or country name. */
|
|
4410
|
-
country?: string;
|
|
4411
|
-
status?: string;
|
|
4412
|
-
page?: number;
|
|
4413
|
-
limit?: number;
|
|
4414
|
-
};
|
|
4861
|
+
query?: never;
|
|
4415
4862
|
header?: never;
|
|
4416
4863
|
path?: never;
|
|
4417
4864
|
cookie?: never;
|
|
4418
4865
|
};
|
|
4419
|
-
requestBody?:
|
|
4866
|
+
requestBody?: {
|
|
4867
|
+
content: {
|
|
4868
|
+
"application/json": components["schemas"]["AssignLine"];
|
|
4869
|
+
};
|
|
4870
|
+
};
|
|
4420
4871
|
responses: {
|
|
4421
|
-
/** @description
|
|
4872
|
+
/** @description Line assigned and activated */
|
|
4422
4873
|
200: {
|
|
4423
4874
|
headers: {
|
|
4424
4875
|
[name: string]: unknown;
|
|
@@ -4427,7 +4878,7 @@ export interface paths {
|
|
|
4427
4878
|
"application/json": {
|
|
4428
4879
|
/** @enum {boolean} */
|
|
4429
4880
|
success: true;
|
|
4430
|
-
data: components["schemas"]["
|
|
4881
|
+
data: components["schemas"]["Line"];
|
|
4431
4882
|
trace_id: string;
|
|
4432
4883
|
request_id: string;
|
|
4433
4884
|
};
|
|
@@ -4442,8 +4893,8 @@ export interface paths {
|
|
|
4442
4893
|
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4443
4894
|
};
|
|
4444
4895
|
};
|
|
4445
|
-
/** @description
|
|
4446
|
-
|
|
4896
|
+
/** @description Unauthenticated — missing or invalid bearer token */
|
|
4897
|
+
401: {
|
|
4447
4898
|
headers: {
|
|
4448
4899
|
[name: string]: unknown;
|
|
4449
4900
|
};
|
|
@@ -4451,8 +4902,8 @@ export interface paths {
|
|
|
4451
4902
|
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4452
4903
|
};
|
|
4453
4904
|
};
|
|
4454
|
-
/** @description
|
|
4455
|
-
|
|
4905
|
+
/** @description Forbidden — caller authenticated but not allowed */
|
|
4906
|
+
403: {
|
|
4456
4907
|
headers: {
|
|
4457
4908
|
[name: string]: unknown;
|
|
4458
4909
|
};
|
|
@@ -4460,53 +4911,8 @@ export interface paths {
|
|
|
4460
4911
|
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4461
4912
|
};
|
|
4462
4913
|
};
|
|
4463
|
-
|
|
4464
|
-
|
|
4465
|
-
put?: never;
|
|
4466
|
-
post?: never;
|
|
4467
|
-
delete?: never;
|
|
4468
|
-
options?: never;
|
|
4469
|
-
head?: never;
|
|
4470
|
-
patch?: never;
|
|
4471
|
-
trace?: never;
|
|
4472
|
-
};
|
|
4473
|
-
"/v1/lines/my": {
|
|
4474
|
-
parameters: {
|
|
4475
|
-
query?: never;
|
|
4476
|
-
header?: never;
|
|
4477
|
-
path?: never;
|
|
4478
|
-
cookie?: never;
|
|
4479
|
-
};
|
|
4480
|
-
/**
|
|
4481
|
-
* List the caller's own lines
|
|
4482
|
-
* @description Return every line owned by the authenticated user that's in `active` or `reserved` status. Includes a `fulfillment_status` hint for lines whose hardware is still being procured. Accepts an API key (`isnap_*`) or a dashboard JWT.
|
|
4483
|
-
*/
|
|
4484
|
-
get: {
|
|
4485
|
-
parameters: {
|
|
4486
|
-
query?: never;
|
|
4487
|
-
header?: never;
|
|
4488
|
-
path?: never;
|
|
4489
|
-
cookie?: never;
|
|
4490
|
-
};
|
|
4491
|
-
requestBody?: never;
|
|
4492
|
-
responses: {
|
|
4493
|
-
/** @description User lines */
|
|
4494
|
-
200: {
|
|
4495
|
-
headers: {
|
|
4496
|
-
[name: string]: unknown;
|
|
4497
|
-
};
|
|
4498
|
-
content: {
|
|
4499
|
-
"application/json": {
|
|
4500
|
-
/** @enum {boolean} */
|
|
4501
|
-
success: true;
|
|
4502
|
-
data: components["schemas"]["MyLines"];
|
|
4503
|
-
trace_id: string;
|
|
4504
|
-
request_id: string;
|
|
4505
|
-
};
|
|
4506
|
-
};
|
|
4507
|
-
};
|
|
4508
|
-
/** @description Bad request — validation failed */
|
|
4509
|
-
400: {
|
|
4914
|
+
/** @description Not found */
|
|
4915
|
+
404: {
|
|
4510
4916
|
headers: {
|
|
4511
4917
|
[name: string]: unknown;
|
|
4512
4918
|
};
|
|
@@ -4514,8 +4920,8 @@ export interface paths {
|
|
|
4514
4920
|
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4515
4921
|
};
|
|
4516
4922
|
};
|
|
4517
|
-
/** @description
|
|
4518
|
-
|
|
4923
|
+
/** @description Conflict — concurrent or terminal state */
|
|
4924
|
+
409: {
|
|
4519
4925
|
headers: {
|
|
4520
4926
|
[name: string]: unknown;
|
|
4521
4927
|
};
|
|
@@ -4543,38 +4949,40 @@ export interface paths {
|
|
|
4543
4949
|
};
|
|
4544
4950
|
};
|
|
4545
4951
|
};
|
|
4546
|
-
put?: never;
|
|
4547
|
-
post?: never;
|
|
4548
4952
|
delete?: never;
|
|
4549
4953
|
options?: never;
|
|
4550
4954
|
head?: never;
|
|
4551
4955
|
patch?: never;
|
|
4552
4956
|
trace?: never;
|
|
4553
4957
|
};
|
|
4554
|
-
"/v1/lines/
|
|
4958
|
+
"/v1/lines/shared": {
|
|
4555
4959
|
parameters: {
|
|
4556
4960
|
query?: never;
|
|
4557
4961
|
header?: never;
|
|
4558
4962
|
path?: never;
|
|
4559
4963
|
cookie?: never;
|
|
4560
4964
|
};
|
|
4965
|
+
get?: never;
|
|
4966
|
+
put?: never;
|
|
4561
4967
|
/**
|
|
4562
|
-
*
|
|
4563
|
-
* @description
|
|
4968
|
+
* Mint a virtual shared-outbound line
|
|
4969
|
+
* @description Mint a customer-owned VIRTUAL line on the shared-outbound plan (billing_tier `shared_imessage`): no dedicated hardware, no phone number of its own — sends are proxied onto the shared physical iMessage fleet, with a per-contact physical number resolved at send time. Minted directly `active` with no per-line Stripe subscription (wholesale is metered end-of-month on the active virtual-line count). Wholesale-partner only in v1; direct-customer callers get 402 until self-serve checkout ships (an admin can provision one for them in the meantime). Optional `metadata` is persisted and echoed on `line.*` webhooks. Supports `Idempotency-Key` — every mint creates a fresh billable line, so retries MUST carry the same key to avoid double-minting.
|
|
4564
4970
|
*/
|
|
4565
|
-
|
|
4971
|
+
post: {
|
|
4566
4972
|
parameters: {
|
|
4567
4973
|
query?: never;
|
|
4568
4974
|
header?: never;
|
|
4569
|
-
path
|
|
4570
|
-
id: string;
|
|
4571
|
-
};
|
|
4975
|
+
path?: never;
|
|
4572
4976
|
cookie?: never;
|
|
4573
4977
|
};
|
|
4574
|
-
requestBody?:
|
|
4978
|
+
requestBody?: {
|
|
4979
|
+
content: {
|
|
4980
|
+
"application/json": components["schemas"]["MintSharedLine"];
|
|
4981
|
+
};
|
|
4982
|
+
};
|
|
4575
4983
|
responses: {
|
|
4576
|
-
/** @description
|
|
4577
|
-
|
|
4984
|
+
/** @description Virtual shared line minted */
|
|
4985
|
+
201: {
|
|
4578
4986
|
headers: {
|
|
4579
4987
|
[name: string]: unknown;
|
|
4580
4988
|
};
|
|
@@ -4597,8 +5005,35 @@ export interface paths {
|
|
|
4597
5005
|
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4598
5006
|
};
|
|
4599
5007
|
};
|
|
4600
|
-
/** @description
|
|
4601
|
-
|
|
5008
|
+
/** @description Unauthenticated — missing or invalid bearer token */
|
|
5009
|
+
401: {
|
|
5010
|
+
headers: {
|
|
5011
|
+
[name: string]: unknown;
|
|
5012
|
+
};
|
|
5013
|
+
content: {
|
|
5014
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
5015
|
+
};
|
|
5016
|
+
};
|
|
5017
|
+
/** @description Payment required — no billing relationship entitles this call */
|
|
5018
|
+
402: {
|
|
5019
|
+
headers: {
|
|
5020
|
+
[name: string]: unknown;
|
|
5021
|
+
};
|
|
5022
|
+
content: {
|
|
5023
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
5024
|
+
};
|
|
5025
|
+
};
|
|
5026
|
+
/** @description Forbidden — caller authenticated but not allowed */
|
|
5027
|
+
403: {
|
|
5028
|
+
headers: {
|
|
5029
|
+
[name: string]: unknown;
|
|
5030
|
+
};
|
|
5031
|
+
content: {
|
|
5032
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
5033
|
+
};
|
|
5034
|
+
};
|
|
5035
|
+
/** @description Conflict — concurrent or terminal state */
|
|
5036
|
+
409: {
|
|
4602
5037
|
headers: {
|
|
4603
5038
|
[name: string]: unknown;
|
|
4604
5039
|
};
|
|
@@ -4626,16 +5061,26 @@ export interface paths {
|
|
|
4626
5061
|
};
|
|
4627
5062
|
};
|
|
4628
5063
|
};
|
|
4629
|
-
put?: never;
|
|
4630
|
-
post?: never;
|
|
4631
5064
|
delete?: never;
|
|
4632
5065
|
options?: never;
|
|
4633
5066
|
head?: never;
|
|
5067
|
+
patch?: never;
|
|
5068
|
+
trace?: never;
|
|
5069
|
+
};
|
|
5070
|
+
"/v1/lines/{id}/reserve": {
|
|
5071
|
+
parameters: {
|
|
5072
|
+
query?: never;
|
|
5073
|
+
header?: never;
|
|
5074
|
+
path?: never;
|
|
5075
|
+
cookie?: never;
|
|
5076
|
+
};
|
|
5077
|
+
get?: never;
|
|
5078
|
+
put?: never;
|
|
4634
5079
|
/**
|
|
4635
|
-
*
|
|
4636
|
-
* @description
|
|
5080
|
+
* Reserve an available line
|
|
5081
|
+
* @description Move a specific line from `available` to `reserved` for 15 minutes. After that window a background worker auto-releases the reservation. Call `POST /v1/billing/checkout` next to convert the reservation into an active subscription.
|
|
4637
5082
|
*/
|
|
4638
|
-
|
|
5083
|
+
post: {
|
|
4639
5084
|
parameters: {
|
|
4640
5085
|
query?: never;
|
|
4641
5086
|
header?: never;
|
|
@@ -4644,13 +5089,9 @@ export interface paths {
|
|
|
4644
5089
|
};
|
|
4645
5090
|
cookie?: never;
|
|
4646
5091
|
};
|
|
4647
|
-
requestBody?:
|
|
4648
|
-
content: {
|
|
4649
|
-
"application/json": components["schemas"]["PatchLine"];
|
|
4650
|
-
};
|
|
4651
|
-
};
|
|
5092
|
+
requestBody?: never;
|
|
4652
5093
|
responses: {
|
|
4653
|
-
/** @description Line
|
|
5094
|
+
/** @description Line reserved */
|
|
4654
5095
|
200: {
|
|
4655
5096
|
headers: {
|
|
4656
5097
|
[name: string]: unknown;
|
|
@@ -4701,6 +5142,15 @@ export interface paths {
|
|
|
4701
5142
|
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
4702
5143
|
};
|
|
4703
5144
|
};
|
|
5145
|
+
/** @description Conflict — concurrent or terminal state */
|
|
5146
|
+
409: {
|
|
5147
|
+
headers: {
|
|
5148
|
+
[name: string]: unknown;
|
|
5149
|
+
};
|
|
5150
|
+
content: {
|
|
5151
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
5152
|
+
};
|
|
5153
|
+
};
|
|
4704
5154
|
/** @description Too many requests — rate limit exceeded */
|
|
4705
5155
|
429: {
|
|
4706
5156
|
headers: {
|
|
@@ -4721,9 +5171,13 @@ export interface paths {
|
|
|
4721
5171
|
};
|
|
4722
5172
|
};
|
|
4723
5173
|
};
|
|
5174
|
+
delete?: never;
|
|
5175
|
+
options?: never;
|
|
5176
|
+
head?: never;
|
|
5177
|
+
patch?: never;
|
|
4724
5178
|
trace?: never;
|
|
4725
5179
|
};
|
|
4726
|
-
"/v1/lines/
|
|
5180
|
+
"/v1/lines/{id}/activate": {
|
|
4727
5181
|
parameters: {
|
|
4728
5182
|
query?: never;
|
|
4729
5183
|
header?: never;
|
|
@@ -4733,23 +5187,25 @@ export interface paths {
|
|
|
4733
5187
|
get?: never;
|
|
4734
5188
|
put?: never;
|
|
4735
5189
|
/**
|
|
4736
|
-
*
|
|
4737
|
-
* @description
|
|
5190
|
+
* Activate a reserved line
|
|
5191
|
+
* @description Commit a `reserved` line to `active`. Wholesale partners (no Stripe checkout surface) use this as the second phase of reserve→activate — they reserve, bill their own end-user, then activate within the 15-minute window with no per-line Stripe sub (EOM-metered), and may pick the inbound-only rental variant via `inbound_only`. Direct callers get the test/dev mock-sub shortcut (production direct activation happens via the Stripe webhook on `checkout.session.completed`); `inbound_only` is ignored for them (theirs comes from the checkout price).
|
|
4738
5192
|
*/
|
|
4739
5193
|
post: {
|
|
4740
5194
|
parameters: {
|
|
4741
5195
|
query?: never;
|
|
4742
5196
|
header?: never;
|
|
4743
|
-
path
|
|
5197
|
+
path: {
|
|
5198
|
+
id: string;
|
|
5199
|
+
};
|
|
4744
5200
|
cookie?: never;
|
|
4745
5201
|
};
|
|
4746
5202
|
requestBody?: {
|
|
4747
5203
|
content: {
|
|
4748
|
-
"application/json": components["schemas"]["
|
|
5204
|
+
"application/json": components["schemas"]["ActivateLine"];
|
|
4749
5205
|
};
|
|
4750
5206
|
};
|
|
4751
5207
|
responses: {
|
|
4752
|
-
/** @description Line
|
|
5208
|
+
/** @description Line activated */
|
|
4753
5209
|
200: {
|
|
4754
5210
|
headers: {
|
|
4755
5211
|
[name: string]: unknown;
|
|
@@ -4835,7 +5291,7 @@ export interface paths {
|
|
|
4835
5291
|
patch?: never;
|
|
4836
5292
|
trace?: never;
|
|
4837
5293
|
};
|
|
4838
|
-
"/v1/lines/{id}/
|
|
5294
|
+
"/v1/lines/{id}/transfer-ownership": {
|
|
4839
5295
|
parameters: {
|
|
4840
5296
|
query?: never;
|
|
4841
5297
|
header?: never;
|
|
@@ -4845,8 +5301,8 @@ export interface paths {
|
|
|
4845
5301
|
get?: never;
|
|
4846
5302
|
put?: never;
|
|
4847
5303
|
/**
|
|
4848
|
-
*
|
|
4849
|
-
* @description Move a
|
|
5304
|
+
* Transfer a line to another iSnap user
|
|
5305
|
+
* @description Move ownership of a line to a different iSnap user. By default the paired device session stays attached so messaging continues uninterrupted; pass `preserve_device_session: false` to force the new owner to re-pair. See `/concepts/billing` for how the cutover handles the in-flight Stripe subscription.
|
|
4850
5306
|
*/
|
|
4851
5307
|
post: {
|
|
4852
5308
|
parameters: {
|
|
@@ -4857,9 +5313,13 @@ export interface paths {
|
|
|
4857
5313
|
};
|
|
4858
5314
|
cookie?: never;
|
|
4859
5315
|
};
|
|
4860
|
-
requestBody?:
|
|
5316
|
+
requestBody?: {
|
|
5317
|
+
content: {
|
|
5318
|
+
"application/json": components["schemas"]["TransferOwnership"];
|
|
5319
|
+
};
|
|
5320
|
+
};
|
|
4861
5321
|
responses: {
|
|
4862
|
-
/** @description
|
|
5322
|
+
/** @description Ownership transferred */
|
|
4863
5323
|
200: {
|
|
4864
5324
|
headers: {
|
|
4865
5325
|
[name: string]: unknown;
|
|
@@ -4945,7 +5405,7 @@ export interface paths {
|
|
|
4945
5405
|
patch?: never;
|
|
4946
5406
|
trace?: never;
|
|
4947
5407
|
};
|
|
4948
|
-
"/v1/lines/{id}/
|
|
5408
|
+
"/v1/lines/{id}/convert-to-test": {
|
|
4949
5409
|
parameters: {
|
|
4950
5410
|
query?: never;
|
|
4951
5411
|
header?: never;
|
|
@@ -4955,8 +5415,8 @@ export interface paths {
|
|
|
4955
5415
|
get?: never;
|
|
4956
5416
|
put?: never;
|
|
4957
5417
|
/**
|
|
4958
|
-
*
|
|
4959
|
-
* @description
|
|
5418
|
+
* Convert an owned rental line into a test line
|
|
5419
|
+
* @description Flip a rental line you own into an owned test line that backs trials in your own pool (ownership → pool; the monthly price stays the rental-equivalent, not the $0 global-pool rate). Rejected on byod lines, lines you do not own, and lines carrying an active subscription.
|
|
4960
5420
|
*/
|
|
4961
5421
|
post: {
|
|
4962
5422
|
parameters: {
|
|
@@ -4967,13 +5427,9 @@ export interface paths {
|
|
|
4967
5427
|
};
|
|
4968
5428
|
cookie?: never;
|
|
4969
5429
|
};
|
|
4970
|
-
requestBody?:
|
|
4971
|
-
content: {
|
|
4972
|
-
"application/json": components["schemas"]["ActivateLine"];
|
|
4973
|
-
};
|
|
4974
|
-
};
|
|
5430
|
+
requestBody?: never;
|
|
4975
5431
|
responses: {
|
|
4976
|
-
/** @description Line
|
|
5432
|
+
/** @description Line converted to a test line */
|
|
4977
5433
|
200: {
|
|
4978
5434
|
headers: {
|
|
4979
5435
|
[name: string]: unknown;
|
|
@@ -5059,7 +5515,7 @@ export interface paths {
|
|
|
5059
5515
|
patch?: never;
|
|
5060
5516
|
trace?: never;
|
|
5061
5517
|
};
|
|
5062
|
-
"/v1/lines/{id}/
|
|
5518
|
+
"/v1/lines/{id}/convert-from-test": {
|
|
5063
5519
|
parameters: {
|
|
5064
5520
|
query?: never;
|
|
5065
5521
|
header?: never;
|
|
@@ -5069,8 +5525,8 @@ export interface paths {
|
|
|
5069
5525
|
get?: never;
|
|
5070
5526
|
put?: never;
|
|
5071
5527
|
/**
|
|
5072
|
-
*
|
|
5073
|
-
* @description
|
|
5528
|
+
* Revert an owned test line back to a rental line
|
|
5529
|
+
* @description Symmetric to convert-to-test: flip an owned test line back to a rental line (ownership → rental, rental price re-stamped). Rejected while the test line still hosts live trials, since reverting would strand them.
|
|
5074
5530
|
*/
|
|
5075
5531
|
post: {
|
|
5076
5532
|
parameters: {
|
|
@@ -5081,13 +5537,9 @@ export interface paths {
|
|
|
5081
5537
|
};
|
|
5082
5538
|
cookie?: never;
|
|
5083
5539
|
};
|
|
5084
|
-
requestBody?:
|
|
5085
|
-
content: {
|
|
5086
|
-
"application/json": components["schemas"]["TransferOwnership"];
|
|
5087
|
-
};
|
|
5088
|
-
};
|
|
5540
|
+
requestBody?: never;
|
|
5089
5541
|
responses: {
|
|
5090
|
-
/** @description
|
|
5542
|
+
/** @description Line reverted to a rental line */
|
|
5091
5543
|
200: {
|
|
5092
5544
|
headers: {
|
|
5093
5545
|
[name: string]: unknown;
|
|
@@ -8321,28 +8773,194 @@ export interface paths {
|
|
|
8321
8773
|
*/
|
|
8322
8774
|
get: {
|
|
8323
8775
|
parameters: {
|
|
8324
|
-
query?: never;
|
|
8325
|
-
header?: never;
|
|
8326
|
-
path: {
|
|
8327
|
-
id: string;
|
|
8776
|
+
query?: never;
|
|
8777
|
+
header?: never;
|
|
8778
|
+
path: {
|
|
8779
|
+
id: string;
|
|
8780
|
+
};
|
|
8781
|
+
cookie?: never;
|
|
8782
|
+
};
|
|
8783
|
+
requestBody?: never;
|
|
8784
|
+
responses: {
|
|
8785
|
+
/** @description Attachment record + fresh signed download URL */
|
|
8786
|
+
200: {
|
|
8787
|
+
headers: {
|
|
8788
|
+
[name: string]: unknown;
|
|
8789
|
+
};
|
|
8790
|
+
content: {
|
|
8791
|
+
"application/json": {
|
|
8792
|
+
/** @enum {boolean} */
|
|
8793
|
+
success: true;
|
|
8794
|
+
data: components["schemas"]["Attachment"];
|
|
8795
|
+
trace_id: string;
|
|
8796
|
+
request_id: string;
|
|
8797
|
+
};
|
|
8798
|
+
};
|
|
8799
|
+
};
|
|
8800
|
+
/** @description Bad request — validation failed */
|
|
8801
|
+
400: {
|
|
8802
|
+
headers: {
|
|
8803
|
+
[name: string]: unknown;
|
|
8804
|
+
};
|
|
8805
|
+
content: {
|
|
8806
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
8807
|
+
};
|
|
8808
|
+
};
|
|
8809
|
+
/** @description Unauthenticated — missing or invalid bearer token */
|
|
8810
|
+
401: {
|
|
8811
|
+
headers: {
|
|
8812
|
+
[name: string]: unknown;
|
|
8813
|
+
};
|
|
8814
|
+
content: {
|
|
8815
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
8816
|
+
};
|
|
8817
|
+
};
|
|
8818
|
+
/** @description Not found */
|
|
8819
|
+
404: {
|
|
8820
|
+
headers: {
|
|
8821
|
+
[name: string]: unknown;
|
|
8822
|
+
};
|
|
8823
|
+
content: {
|
|
8824
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
8825
|
+
};
|
|
8826
|
+
};
|
|
8827
|
+
/** @description Too many requests — rate limit exceeded */
|
|
8828
|
+
429: {
|
|
8829
|
+
headers: {
|
|
8830
|
+
[name: string]: unknown;
|
|
8831
|
+
};
|
|
8832
|
+
content: {
|
|
8833
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
8834
|
+
};
|
|
8835
|
+
};
|
|
8836
|
+
/** @description Internal server error */
|
|
8837
|
+
500: {
|
|
8838
|
+
headers: {
|
|
8839
|
+
[name: string]: unknown;
|
|
8840
|
+
};
|
|
8841
|
+
content: {
|
|
8842
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
8843
|
+
};
|
|
8844
|
+
};
|
|
8845
|
+
};
|
|
8846
|
+
};
|
|
8847
|
+
put?: never;
|
|
8848
|
+
post?: never;
|
|
8849
|
+
delete?: never;
|
|
8850
|
+
options?: never;
|
|
8851
|
+
head?: never;
|
|
8852
|
+
patch?: never;
|
|
8853
|
+
trace?: never;
|
|
8854
|
+
};
|
|
8855
|
+
"/v1/lookup": {
|
|
8856
|
+
parameters: {
|
|
8857
|
+
query?: never;
|
|
8858
|
+
header?: never;
|
|
8859
|
+
path?: never;
|
|
8860
|
+
cookie?: never;
|
|
8861
|
+
};
|
|
8862
|
+
get?: never;
|
|
8863
|
+
put?: never;
|
|
8864
|
+
/**
|
|
8865
|
+
* Look up a recipient capability
|
|
8866
|
+
* @description Check whether a phone number or email is iMessage-capable. Returns `imessage: true | false | null`; `null` means we have no cached probe result yet and the caller should fall back to SMS-safe behaviour. Rate-limited per line and per account.
|
|
8867
|
+
*/
|
|
8868
|
+
post: {
|
|
8869
|
+
parameters: {
|
|
8870
|
+
query?: never;
|
|
8871
|
+
header?: never;
|
|
8872
|
+
path?: never;
|
|
8873
|
+
cookie?: never;
|
|
8874
|
+
};
|
|
8875
|
+
requestBody?: {
|
|
8876
|
+
content: {
|
|
8877
|
+
"application/json": components["schemas"]["LookupRequest"];
|
|
8878
|
+
};
|
|
8879
|
+
};
|
|
8880
|
+
responses: {
|
|
8881
|
+
/** @description Lookup result */
|
|
8882
|
+
200: {
|
|
8883
|
+
headers: {
|
|
8884
|
+
[name: string]: unknown;
|
|
8885
|
+
};
|
|
8886
|
+
content: {
|
|
8887
|
+
"application/json": components["schemas"]["LookupEnvelope"];
|
|
8888
|
+
};
|
|
8889
|
+
};
|
|
8890
|
+
/** @description Bad request — validation failed */
|
|
8891
|
+
400: {
|
|
8892
|
+
headers: {
|
|
8893
|
+
[name: string]: unknown;
|
|
8894
|
+
};
|
|
8895
|
+
content: {
|
|
8896
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
8897
|
+
};
|
|
8898
|
+
};
|
|
8899
|
+
/** @description Unauthenticated — missing or invalid bearer token */
|
|
8900
|
+
401: {
|
|
8901
|
+
headers: {
|
|
8902
|
+
[name: string]: unknown;
|
|
8903
|
+
};
|
|
8904
|
+
content: {
|
|
8905
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
8906
|
+
};
|
|
8907
|
+
};
|
|
8908
|
+
/** @description Too many requests — rate limit exceeded */
|
|
8909
|
+
429: {
|
|
8910
|
+
headers: {
|
|
8911
|
+
[name: string]: unknown;
|
|
8912
|
+
};
|
|
8913
|
+
content: {
|
|
8914
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
8915
|
+
};
|
|
8916
|
+
};
|
|
8917
|
+
/** @description Internal server error */
|
|
8918
|
+
500: {
|
|
8919
|
+
headers: {
|
|
8920
|
+
[name: string]: unknown;
|
|
8921
|
+
};
|
|
8922
|
+
content: {
|
|
8923
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
8924
|
+
};
|
|
8925
|
+
};
|
|
8926
|
+
};
|
|
8927
|
+
};
|
|
8928
|
+
delete?: never;
|
|
8929
|
+
options?: never;
|
|
8930
|
+
head?: never;
|
|
8931
|
+
patch?: never;
|
|
8932
|
+
trace?: never;
|
|
8933
|
+
};
|
|
8934
|
+
"/v1/area-codes": {
|
|
8935
|
+
parameters: {
|
|
8936
|
+
query?: never;
|
|
8937
|
+
header?: never;
|
|
8938
|
+
path?: never;
|
|
8939
|
+
cookie?: never;
|
|
8940
|
+
};
|
|
8941
|
+
/**
|
|
8942
|
+
* List selectable area codes (public)
|
|
8943
|
+
* @description Enumerate the area codes a customer can request as `preferred_area_codes` on `POST /v1/pre-orders`, for rendering a pre-order area-code picker. Optional `?country=US` filters the list. Also returns the selectable countries so the same response can drive a country dropdown. Unauthenticated — mirrors `GET /v1/lines` and `GET /pricing`. The list is the *selectable* set (a curated subset of NANP), not a guarantee of immediate inventory: pre-orders are precisely for tiers with no in-stock line.
|
|
8944
|
+
*/
|
|
8945
|
+
get: {
|
|
8946
|
+
parameters: {
|
|
8947
|
+
query?: {
|
|
8948
|
+
/** @description ISO 3166-1 alpha-2 country filter (case-insensitive). Omit for all countries. */
|
|
8949
|
+
country?: string;
|
|
8328
8950
|
};
|
|
8951
|
+
header?: never;
|
|
8952
|
+
path?: never;
|
|
8329
8953
|
cookie?: never;
|
|
8330
8954
|
};
|
|
8331
8955
|
requestBody?: never;
|
|
8332
8956
|
responses: {
|
|
8333
|
-
/** @description
|
|
8957
|
+
/** @description Selectable area codes + countries */
|
|
8334
8958
|
200: {
|
|
8335
8959
|
headers: {
|
|
8336
8960
|
[name: string]: unknown;
|
|
8337
8961
|
};
|
|
8338
8962
|
content: {
|
|
8339
|
-
"application/json":
|
|
8340
|
-
/** @enum {boolean} */
|
|
8341
|
-
success: true;
|
|
8342
|
-
data: components["schemas"]["Attachment"];
|
|
8343
|
-
trace_id: string;
|
|
8344
|
-
request_id: string;
|
|
8345
|
-
};
|
|
8963
|
+
"application/json": components["schemas"]["AreaCodesEnvelope"];
|
|
8346
8964
|
};
|
|
8347
8965
|
};
|
|
8348
8966
|
/** @description Bad request — validation failed */
|
|
@@ -8354,24 +8972,6 @@ export interface paths {
|
|
|
8354
8972
|
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
8355
8973
|
};
|
|
8356
8974
|
};
|
|
8357
|
-
/** @description Unauthenticated — missing or invalid bearer token */
|
|
8358
|
-
401: {
|
|
8359
|
-
headers: {
|
|
8360
|
-
[name: string]: unknown;
|
|
8361
|
-
};
|
|
8362
|
-
content: {
|
|
8363
|
-
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
8364
|
-
};
|
|
8365
|
-
};
|
|
8366
|
-
/** @description Not found */
|
|
8367
|
-
404: {
|
|
8368
|
-
headers: {
|
|
8369
|
-
[name: string]: unknown;
|
|
8370
|
-
};
|
|
8371
|
-
content: {
|
|
8372
|
-
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
8373
|
-
};
|
|
8374
|
-
};
|
|
8375
8975
|
/** @description Too many requests — rate limit exceeded */
|
|
8376
8976
|
429: {
|
|
8377
8977
|
headers: {
|
|
@@ -8400,39 +9000,39 @@ export interface paths {
|
|
|
8400
9000
|
patch?: never;
|
|
8401
9001
|
trace?: never;
|
|
8402
9002
|
};
|
|
8403
|
-
"/v1/
|
|
9003
|
+
"/v1/chats": {
|
|
8404
9004
|
parameters: {
|
|
8405
9005
|
query?: never;
|
|
8406
9006
|
header?: never;
|
|
8407
9007
|
path?: never;
|
|
8408
9008
|
cookie?: never;
|
|
8409
9009
|
};
|
|
8410
|
-
get?: never;
|
|
8411
|
-
put?: never;
|
|
8412
9010
|
/**
|
|
8413
|
-
*
|
|
8414
|
-
* @description
|
|
9011
|
+
* List chats
|
|
9012
|
+
* @description Cursor-paginated list of the caller's conversations, newest activity first. Filter by `line_id`. On shared-plan (virtual) lines each chat carries `outbound_number` — the physical number currently serving that contact (null once the binding is released; the next outbound is assigned a fresh number). Non-shared lines always carry `outbound_number: null`. Accepts an API key (`isnap_*`) or a dashboard JWT; line-scoped API keys only see chats of the lines in their allowlist.
|
|
8415
9013
|
*/
|
|
8416
|
-
|
|
9014
|
+
get: {
|
|
8417
9015
|
parameters: {
|
|
8418
|
-
query?:
|
|
9016
|
+
query?: {
|
|
9017
|
+
line_id?: string;
|
|
9018
|
+
limit?: number;
|
|
9019
|
+
cursor?: string;
|
|
9020
|
+
since?: string;
|
|
9021
|
+
until?: string;
|
|
9022
|
+
};
|
|
8419
9023
|
header?: never;
|
|
8420
9024
|
path?: never;
|
|
8421
9025
|
cookie?: never;
|
|
8422
9026
|
};
|
|
8423
|
-
requestBody?:
|
|
8424
|
-
content: {
|
|
8425
|
-
"application/json": components["schemas"]["LookupRequest"];
|
|
8426
|
-
};
|
|
8427
|
-
};
|
|
9027
|
+
requestBody?: never;
|
|
8428
9028
|
responses: {
|
|
8429
|
-
/** @description
|
|
9029
|
+
/** @description Chat list */
|
|
8430
9030
|
200: {
|
|
8431
9031
|
headers: {
|
|
8432
9032
|
[name: string]: unknown;
|
|
8433
9033
|
};
|
|
8434
9034
|
content: {
|
|
8435
|
-
"application/json": components["schemas"]["
|
|
9035
|
+
"application/json": components["schemas"]["ChatListEnvelope"];
|
|
8436
9036
|
};
|
|
8437
9037
|
};
|
|
8438
9038
|
/** @description Bad request — validation failed */
|
|
@@ -8473,13 +9073,15 @@ export interface paths {
|
|
|
8473
9073
|
};
|
|
8474
9074
|
};
|
|
8475
9075
|
};
|
|
9076
|
+
put?: never;
|
|
9077
|
+
post?: never;
|
|
8476
9078
|
delete?: never;
|
|
8477
9079
|
options?: never;
|
|
8478
9080
|
head?: never;
|
|
8479
9081
|
patch?: never;
|
|
8480
9082
|
trace?: never;
|
|
8481
9083
|
};
|
|
8482
|
-
"/v1/
|
|
9084
|
+
"/v1/chats/{chat_id}": {
|
|
8483
9085
|
parameters: {
|
|
8484
9086
|
query?: never;
|
|
8485
9087
|
header?: never;
|
|
@@ -8487,28 +9089,27 @@ export interface paths {
|
|
|
8487
9089
|
cookie?: never;
|
|
8488
9090
|
};
|
|
8489
9091
|
/**
|
|
8490
|
-
*
|
|
8491
|
-
* @description
|
|
9092
|
+
* Get a chat
|
|
9093
|
+
* @description Fetch a single conversation by its `chat_<base62>` id. Same shape as the list items, including `outbound_number` for shared-plan lines. Cross-account and out-of-scope ids resolve 404 (no existence leak).
|
|
8492
9094
|
*/
|
|
8493
9095
|
get: {
|
|
8494
9096
|
parameters: {
|
|
8495
|
-
query?:
|
|
8496
|
-
/** @description ISO 3166-1 alpha-2 country filter (case-insensitive). Omit for all countries. */
|
|
8497
|
-
country?: string;
|
|
8498
|
-
};
|
|
9097
|
+
query?: never;
|
|
8499
9098
|
header?: never;
|
|
8500
|
-
path
|
|
9099
|
+
path: {
|
|
9100
|
+
chat_id: string;
|
|
9101
|
+
};
|
|
8501
9102
|
cookie?: never;
|
|
8502
9103
|
};
|
|
8503
9104
|
requestBody?: never;
|
|
8504
9105
|
responses: {
|
|
8505
|
-
/** @description
|
|
9106
|
+
/** @description Chat */
|
|
8506
9107
|
200: {
|
|
8507
9108
|
headers: {
|
|
8508
9109
|
[name: string]: unknown;
|
|
8509
9110
|
};
|
|
8510
9111
|
content: {
|
|
8511
|
-
"application/json": components["schemas"]["
|
|
9112
|
+
"application/json": components["schemas"]["ChatEnvelope"];
|
|
8512
9113
|
};
|
|
8513
9114
|
};
|
|
8514
9115
|
/** @description Bad request — validation failed */
|
|
@@ -8520,6 +9121,24 @@ export interface paths {
|
|
|
8520
9121
|
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
8521
9122
|
};
|
|
8522
9123
|
};
|
|
9124
|
+
/** @description Unauthenticated — missing or invalid bearer token */
|
|
9125
|
+
401: {
|
|
9126
|
+
headers: {
|
|
9127
|
+
[name: string]: unknown;
|
|
9128
|
+
};
|
|
9129
|
+
content: {
|
|
9130
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
9131
|
+
};
|
|
9132
|
+
};
|
|
9133
|
+
/** @description Not found */
|
|
9134
|
+
404: {
|
|
9135
|
+
headers: {
|
|
9136
|
+
[name: string]: unknown;
|
|
9137
|
+
};
|
|
9138
|
+
content: {
|
|
9139
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
9140
|
+
};
|
|
9141
|
+
};
|
|
8523
9142
|
/** @description Too many requests — rate limit exceeded */
|
|
8524
9143
|
429: {
|
|
8525
9144
|
headers: {
|
|
@@ -8946,7 +9565,7 @@ export interface paths {
|
|
|
8946
9565
|
put?: never;
|
|
8947
9566
|
/**
|
|
8948
9567
|
* Start a trial session
|
|
8949
|
-
* @description Create a pairing-pending trial session
|
|
9568
|
+
* @description Create a pairing-pending trial session owned by the caller (dashboard JWT for direct self-serve, or an API key for wholesale/SDK). Returns a one-time pairing token the partner embeds in their onboarding UI; the recipient claims it by sending an inbound message that links them to a pool line. Direct accounts may hold only one live trial at a time.
|
|
8950
9569
|
*/
|
|
8951
9570
|
post: {
|
|
8952
9571
|
parameters: {
|
|
@@ -8988,6 +9607,15 @@ export interface paths {
|
|
|
8988
9607
|
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
8989
9608
|
};
|
|
8990
9609
|
};
|
|
9610
|
+
/** @description Conflict — concurrent or terminal state */
|
|
9611
|
+
409: {
|
|
9612
|
+
headers: {
|
|
9613
|
+
[name: string]: unknown;
|
|
9614
|
+
};
|
|
9615
|
+
content: {
|
|
9616
|
+
"application/json": components["schemas"]["ErrorEnvelope"];
|
|
9617
|
+
};
|
|
9618
|
+
};
|
|
8991
9619
|
/** @description Too many requests — rate limit exceeded */
|
|
8992
9620
|
429: {
|
|
8993
9621
|
headers: {
|
|
@@ -10197,45 +10825,6 @@ export interface components {
|
|
|
10197
10825
|
LineWatchList: {
|
|
10198
10826
|
watches: components["schemas"]["LineWatch"][];
|
|
10199
10827
|
};
|
|
10200
|
-
DemoStart: {
|
|
10201
|
-
/** Format: uuid */
|
|
10202
|
-
session_id: string;
|
|
10203
|
-
line: {
|
|
10204
|
-
/** Format: uuid */
|
|
10205
|
-
id: string;
|
|
10206
|
-
phone_number: string;
|
|
10207
|
-
billing_tier: string;
|
|
10208
|
-
};
|
|
10209
|
-
api_key: string | null;
|
|
10210
|
-
};
|
|
10211
|
-
DemoSendTest: {
|
|
10212
|
-
success: boolean;
|
|
10213
|
-
/** Format: uuid */
|
|
10214
|
-
message_id: string;
|
|
10215
|
-
};
|
|
10216
|
-
DemoSession: {
|
|
10217
|
-
/** Format: uuid */
|
|
10218
|
-
session_id: string;
|
|
10219
|
-
line: {
|
|
10220
|
-
/** Format: uuid */
|
|
10221
|
-
id: string;
|
|
10222
|
-
phone_number: string;
|
|
10223
|
-
billing_tier: string;
|
|
10224
|
-
};
|
|
10225
|
-
messages_sent: number;
|
|
10226
|
-
daily_limit: number;
|
|
10227
|
-
test_number: string | null;
|
|
10228
|
-
completed: boolean;
|
|
10229
|
-
expires_at: string | null;
|
|
10230
|
-
created_at: string;
|
|
10231
|
-
has_api_key: boolean;
|
|
10232
|
-
};
|
|
10233
|
-
DemoApiKey: {
|
|
10234
|
-
key: string;
|
|
10235
|
-
/** Format: uuid */
|
|
10236
|
-
id: string;
|
|
10237
|
-
prefix: string;
|
|
10238
|
-
};
|
|
10239
10828
|
MessageVolume: {
|
|
10240
10829
|
dates: string[];
|
|
10241
10830
|
counts: number[];
|
|
@@ -10676,6 +11265,10 @@ export interface components {
|
|
|
10676
11265
|
/** @enum {string} */
|
|
10677
11266
|
ownership: "pool";
|
|
10678
11267
|
/** @enum {string} */
|
|
11268
|
+
pool_purpose: "trial" | "shared";
|
|
11269
|
+
/** Format: uuid */
|
|
11270
|
+
owner_user_id: string | null;
|
|
11271
|
+
/** @enum {string} */
|
|
10679
11272
|
platform: "imessage";
|
|
10680
11273
|
status: string;
|
|
10681
11274
|
monthly_price: number;
|
|
@@ -10688,10 +11281,53 @@ export interface components {
|
|
|
10688
11281
|
CreatePoolLineBody: {
|
|
10689
11282
|
/** Format: uuid */
|
|
10690
11283
|
line_id?: string;
|
|
11284
|
+
/**
|
|
11285
|
+
* @default trial
|
|
11286
|
+
* @enum {string}
|
|
11287
|
+
*/
|
|
11288
|
+
purpose: "trial" | "shared";
|
|
11289
|
+
/** Format: uuid */
|
|
11290
|
+
owner_user_id?: string;
|
|
10691
11291
|
phone_number?: string;
|
|
10692
11292
|
area_code?: string;
|
|
10693
11293
|
country_code?: string;
|
|
10694
11294
|
};
|
|
11295
|
+
Line: {
|
|
11296
|
+
id: string;
|
|
11297
|
+
phone_number: string;
|
|
11298
|
+
area_code: string | null;
|
|
11299
|
+
country_code: string | null;
|
|
11300
|
+
state: string | null;
|
|
11301
|
+
state_name: string | null;
|
|
11302
|
+
/** @enum {string} */
|
|
11303
|
+
billing_tier: "rental_iphone" | "rental_android" | "byod_imessage" | "byod_android" | "shared_pool" | "shared_imessage";
|
|
11304
|
+
/** @description True when the customer owns the underlying hardware (BYOD billing tiers). BYOD lines expose the full line-health surface (offline/degraded events, GET /v1/lines/{id}/health). Rental lines (false) only emit durable, actionable events to keep customers out of transient infrastructure noise they cannot act on. */
|
|
11305
|
+
byod: boolean;
|
|
11306
|
+
/** @description True when the line is inbound-only: it may only message a handle that has messaged it first (a recipient who has never contacted the line is rejected with 403 outbound_first_forbidden). Inbound-only is a cheaper rental-tier variant (Bloo parity); always false on BYOD/pool lines. */
|
|
11307
|
+
inbound_only: boolean;
|
|
11308
|
+
capabilities?: unknown;
|
|
11309
|
+
status: string;
|
|
11310
|
+
monthly_price: number;
|
|
11311
|
+
stripe_subscription_id: string | null;
|
|
11312
|
+
activated_at: string | null;
|
|
11313
|
+
expires_at: string | null;
|
|
11314
|
+
created_at: string;
|
|
11315
|
+
metadata: {
|
|
11316
|
+
[key: string]: unknown;
|
|
11317
|
+
} | null;
|
|
11318
|
+
/** @description True when the line is an owner-provisioned test line (ownership=pool with a set owner) that backs the owner's own trial pool. Its monthly_price is the rental-equivalent, not the $0 global pool rate. */
|
|
11319
|
+
test_line: boolean;
|
|
11320
|
+
/** @description True when the line is a virtual shared-plan line (billing_tier shared_imessage): customer-owned, no dedicated hardware, phone_number empty — sends are proxied onto the shared physical iMessage fleet. Line-scoped API keys, webhooks and per-line quota apply to it like any other line. */
|
|
11321
|
+
shared: boolean;
|
|
11322
|
+
fulfillment_status?: string | null;
|
|
11323
|
+
};
|
|
11324
|
+
AdminMintSharedLineBody: {
|
|
11325
|
+
metadata?: {
|
|
11326
|
+
[key: string]: unknown;
|
|
11327
|
+
};
|
|
11328
|
+
/** Format: uuid */
|
|
11329
|
+
user_id: string;
|
|
11330
|
+
};
|
|
10695
11331
|
PoolLinesMonitor: {
|
|
10696
11332
|
summary: {
|
|
10697
11333
|
total_lines: number;
|
|
@@ -10700,14 +11336,20 @@ export interface components {
|
|
|
10700
11336
|
active_trials: number;
|
|
10701
11337
|
dormant_trials: number;
|
|
10702
11338
|
pairing_pending_trials: number;
|
|
11339
|
+
active_bindings: number;
|
|
10703
11340
|
};
|
|
10704
11341
|
lines: components["schemas"]["PoolLineMonitorItem"][];
|
|
11342
|
+
overcommit: components["schemas"]["PoolOvercommitScope"][];
|
|
10705
11343
|
};
|
|
10706
11344
|
PoolLineMonitorItem: {
|
|
10707
11345
|
/** Format: uuid */
|
|
10708
11346
|
id: string;
|
|
10709
11347
|
public_id: string;
|
|
10710
11348
|
phone_number: string | null;
|
|
11349
|
+
/** @enum {string} */
|
|
11350
|
+
purpose: "trial" | "shared";
|
|
11351
|
+
/** Format: uuid */
|
|
11352
|
+
owner_user_id: string | null;
|
|
10711
11353
|
status: string;
|
|
10712
11354
|
health_state: string;
|
|
10713
11355
|
/** Format: uuid */
|
|
@@ -10716,9 +11358,36 @@ export interface components {
|
|
|
10716
11358
|
active_trials: number;
|
|
10717
11359
|
dormant_trials: number;
|
|
10718
11360
|
pairing_pending_trials: number;
|
|
11361
|
+
active_bindings: number;
|
|
11362
|
+
daily_new_used: number;
|
|
11363
|
+
daily_new_limit: number;
|
|
11364
|
+
daily_new_headroom: number;
|
|
11365
|
+
last_activity_at: string | null;
|
|
10719
11366
|
messages_24h: number;
|
|
10720
11367
|
created_at: string;
|
|
10721
11368
|
};
|
|
11369
|
+
PoolOvercommitScope: {
|
|
11370
|
+
/** @enum {string} */
|
|
11371
|
+
scope: "global" | "partner";
|
|
11372
|
+
/** Format: uuid */
|
|
11373
|
+
owner_user_id: string | null;
|
|
11374
|
+
active_virtual_lines: number;
|
|
11375
|
+
physical_lines: number;
|
|
11376
|
+
ratio: number | null;
|
|
11377
|
+
};
|
|
11378
|
+
DemotePoolLine: {
|
|
11379
|
+
/** Format: uuid */
|
|
11380
|
+
id: string;
|
|
11381
|
+
public_id: string;
|
|
11382
|
+
/** @enum {string} */
|
|
11383
|
+
ownership: "rental";
|
|
11384
|
+
pool_purpose: unknown;
|
|
11385
|
+
status: string;
|
|
11386
|
+
monthly_price: number;
|
|
11387
|
+
/** Format: uuid */
|
|
11388
|
+
owner_user_id: string | null;
|
|
11389
|
+
updated_at: string;
|
|
11390
|
+
};
|
|
10722
11391
|
ActivationCodeStatus: {
|
|
10723
11392
|
consumed: boolean;
|
|
10724
11393
|
consumedAt: string | null;
|
|
@@ -10867,9 +11536,6 @@ export interface components {
|
|
|
10867
11536
|
devices: {
|
|
10868
11537
|
available: number;
|
|
10869
11538
|
ordered: number;
|
|
10870
|
-
shipped: number;
|
|
10871
|
-
received: number;
|
|
10872
|
-
ready: number;
|
|
10873
11539
|
total: number;
|
|
10874
11540
|
};
|
|
10875
11541
|
esims: {
|
|
@@ -10886,6 +11552,51 @@ export interface components {
|
|
|
10886
11552
|
pendingAssembly: number;
|
|
10887
11553
|
pendingTasks: number;
|
|
10888
11554
|
};
|
|
11555
|
+
VAPerformance: {
|
|
11556
|
+
throughput: {
|
|
11557
|
+
today: number;
|
|
11558
|
+
week: number;
|
|
11559
|
+
total: number;
|
|
11560
|
+
};
|
|
11561
|
+
speed: {
|
|
11562
|
+
avgCompletionMins: number;
|
|
11563
|
+
onTimeRate: number;
|
|
11564
|
+
};
|
|
11565
|
+
backlog: {
|
|
11566
|
+
open: number;
|
|
11567
|
+
overdue: number;
|
|
11568
|
+
};
|
|
11569
|
+
};
|
|
11570
|
+
VAMacMinis: {
|
|
11571
|
+
macMinis: components["schemas"]["VAMacMini"][];
|
|
11572
|
+
};
|
|
11573
|
+
VAMacMini: {
|
|
11574
|
+
/** Format: uuid */
|
|
11575
|
+
id: string;
|
|
11576
|
+
name: string;
|
|
11577
|
+
hostname: string | null;
|
|
11578
|
+
status: string;
|
|
11579
|
+
capacity: number;
|
|
11580
|
+
sessionCount: number;
|
|
11581
|
+
};
|
|
11582
|
+
VANextMacMini: {
|
|
11583
|
+
/** Format: uuid */
|
|
11584
|
+
macMiniId: string | null;
|
|
11585
|
+
hostname: string | null;
|
|
11586
|
+
/** @enum {string} */
|
|
11587
|
+
status: "available" | "pending_provisioning";
|
|
11588
|
+
};
|
|
11589
|
+
VAMacosSession: {
|
|
11590
|
+
/** Format: uuid */
|
|
11591
|
+
sessionId: string;
|
|
11592
|
+
/** Format: uuid */
|
|
11593
|
+
macMiniId: string;
|
|
11594
|
+
macMiniName: string;
|
|
11595
|
+
macMiniHostname: string | null;
|
|
11596
|
+
/** @enum {string} */
|
|
11597
|
+
status: "created" | "pending_provisioning";
|
|
11598
|
+
ordered: boolean;
|
|
11599
|
+
};
|
|
10889
11600
|
VADevice: {
|
|
10890
11601
|
/** Format: uuid */
|
|
10891
11602
|
id: string;
|
|
@@ -10896,6 +11607,8 @@ export interface components {
|
|
|
10896
11607
|
/** Format: uuid */
|
|
10897
11608
|
farmId: string | null;
|
|
10898
11609
|
farmName: string | null;
|
|
11610
|
+
unitCostCents?: number | null;
|
|
11611
|
+
invoiceUrl?: string | null;
|
|
10899
11612
|
createdAt: string;
|
|
10900
11613
|
taskCompleted?: boolean;
|
|
10901
11614
|
};
|
|
@@ -10903,6 +11616,15 @@ export interface components {
|
|
|
10903
11616
|
devices: components["schemas"]["VADevice"][];
|
|
10904
11617
|
total: number;
|
|
10905
11618
|
};
|
|
11619
|
+
VADeviceModels: {
|
|
11620
|
+
models: {
|
|
11621
|
+
/** Format: uuid */
|
|
11622
|
+
id: string;
|
|
11623
|
+
name: string;
|
|
11624
|
+
/** @enum {string} */
|
|
11625
|
+
platform: "iphone" | "android";
|
|
11626
|
+
}[];
|
|
11627
|
+
};
|
|
10906
11628
|
VAEsim: {
|
|
10907
11629
|
/** Format: uuid */
|
|
10908
11630
|
id: string;
|
|
@@ -10943,6 +11665,8 @@ export interface components {
|
|
|
10943
11665
|
/** Format: uuid */
|
|
10944
11666
|
assigneeId: string | null;
|
|
10945
11667
|
/** Format: uuid */
|
|
11668
|
+
completedBy: string | null;
|
|
11669
|
+
/** Format: uuid */
|
|
10946
11670
|
deviceId: string | null;
|
|
10947
11671
|
/** Format: uuid */
|
|
10948
11672
|
esimId: string | null;
|
|
@@ -11038,31 +11762,6 @@ export interface components {
|
|
|
11038
11762
|
page: number;
|
|
11039
11763
|
limit: number;
|
|
11040
11764
|
};
|
|
11041
|
-
Line: {
|
|
11042
|
-
id: string;
|
|
11043
|
-
phone_number: string;
|
|
11044
|
-
area_code: string | null;
|
|
11045
|
-
country_code: string | null;
|
|
11046
|
-
state: string | null;
|
|
11047
|
-
state_name: string | null;
|
|
11048
|
-
/** @enum {string} */
|
|
11049
|
-
billing_tier: "rental_iphone" | "rental_android" | "byod_imessage" | "byod_android" | "shared_pool";
|
|
11050
|
-
/** @description True when the customer owns the underlying hardware (BYOD billing tiers). BYOD lines expose the full line-health surface (offline/degraded events, GET /v1/lines/{id}/health). Rental lines (false) only emit durable, actionable events to keep customers out of transient infrastructure noise they cannot act on. */
|
|
11051
|
-
byod: boolean;
|
|
11052
|
-
/** @description True when the line is inbound-only: it may only message a handle that has messaged it first (a recipient who has never contacted the line is rejected with 403 outbound_first_forbidden). Inbound-only is a cheaper rental-tier variant (Bloo parity); always false on BYOD/pool lines. */
|
|
11053
|
-
inbound_only: boolean;
|
|
11054
|
-
capabilities?: unknown;
|
|
11055
|
-
status: string;
|
|
11056
|
-
monthly_price: number;
|
|
11057
|
-
stripe_subscription_id: string | null;
|
|
11058
|
-
activated_at: string | null;
|
|
11059
|
-
expires_at: string | null;
|
|
11060
|
-
created_at: string;
|
|
11061
|
-
metadata: {
|
|
11062
|
-
[key: string]: unknown;
|
|
11063
|
-
} | null;
|
|
11064
|
-
fulfillment_status?: string | null;
|
|
11065
|
-
};
|
|
11066
11765
|
MyLines: {
|
|
11067
11766
|
lines: components["schemas"]["Line"][];
|
|
11068
11767
|
};
|
|
@@ -11071,6 +11770,12 @@ export interface components {
|
|
|
11071
11770
|
billing_tier: "rental_iphone" | "rental_android" | "byod_imessage" | "byod_android";
|
|
11072
11771
|
area_code?: string;
|
|
11073
11772
|
inbound_only?: boolean;
|
|
11773
|
+
as_test_line?: boolean;
|
|
11774
|
+
metadata?: {
|
|
11775
|
+
[key: string]: unknown;
|
|
11776
|
+
};
|
|
11777
|
+
};
|
|
11778
|
+
MintSharedLine: {
|
|
11074
11779
|
metadata?: {
|
|
11075
11780
|
[key: string]: unknown;
|
|
11076
11781
|
};
|
|
@@ -11489,7 +12194,7 @@ export interface components {
|
|
|
11489
12194
|
* @description A concrete event type (e.g. `message.received`), a family wildcard (`line.*`), or the catch-all `*`.
|
|
11490
12195
|
* @enum {string}
|
|
11491
12196
|
*/
|
|
11492
|
-
WebhookEventName: "message.queued" | "message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.received" | "message.scheduled" | "message.cancelled" | "message.fallback_triggered" | "reaction.added" | "reaction.received" | "reaction.removed" | "line.connected" | "line.disconnected" | "line.offline" | "line.degraded" | "line.apple_id_flagged" | "line.quota_warning" | "line.quota_exceeded" | "line.capability_changed" | "typing_indicator.started" | "typing_indicator.stopped" | "trial.linked" | "trial.dormant" | "trial.reactivated" | "pre_order.fulfilled" | "pre_order.cancelled" | "pre_order.refunded" | "webhook.test" | "*" | "message.*" | "reaction.*" | "line.*" | "typing_indicator.*" | "trial.*" | "webhook.*";
|
|
12197
|
+
WebhookEventName: "message.queued" | "message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.received" | "message.scheduled" | "message.cancelled" | "message.fallback_triggered" | "reaction.added" | "reaction.received" | "reaction.removed" | "line.connected" | "line.disconnected" | "line.offline" | "line.degraded" | "line.apple_id_flagged" | "line.quota_warning" | "line.quota_exceeded" | "line.capability_changed" | "typing_indicator.started" | "typing_indicator.stopped" | "trial.linked" | "trial.dormant" | "trial.reactivated" | "trial.bind_conflict" | "binding.released" | "pre_order.fulfilled" | "pre_order.cancelled" | "pre_order.refunded" | "webhook.test" | "*" | "message.*" | "reaction.*" | "line.*" | "typing_indicator.*" | "trial.*" | "binding.*" | "webhook.*";
|
|
11493
12198
|
WebhookList: {
|
|
11494
12199
|
webhooks: components["schemas"]["Webhook"][];
|
|
11495
12200
|
};
|
|
@@ -11662,6 +12367,38 @@ export interface components {
|
|
|
11662
12367
|
/** @example 1 */
|
|
11663
12368
|
calling_code: string;
|
|
11664
12369
|
};
|
|
12370
|
+
ChatListEnvelope: {
|
|
12371
|
+
/** @enum {boolean} */
|
|
12372
|
+
success: true;
|
|
12373
|
+
data: components["schemas"]["ChatList"];
|
|
12374
|
+
trace_id: string;
|
|
12375
|
+
request_id: string;
|
|
12376
|
+
};
|
|
12377
|
+
ChatList: {
|
|
12378
|
+
items: components["schemas"]["Chat"][];
|
|
12379
|
+
has_more: boolean;
|
|
12380
|
+
next_cursor: string | null;
|
|
12381
|
+
};
|
|
12382
|
+
Chat: {
|
|
12383
|
+
/** @example chat_5h7FqK2mNpQ8rT3vW9xY1zA4b */
|
|
12384
|
+
id: string;
|
|
12385
|
+
line_id: string;
|
|
12386
|
+
contact_handle: string;
|
|
12387
|
+
/** @description Shared-plan lines only: the physical number currently serving this contact (the active binding). Null when no binding is active — e.g. after inactivity release, in which case the next outbound is assigned a fresh number — and always null on non-shared lines. */
|
|
12388
|
+
outbound_number: string | null;
|
|
12389
|
+
last_message_at: string;
|
|
12390
|
+
message_count: number;
|
|
12391
|
+
unread_count: number;
|
|
12392
|
+
created_at: string;
|
|
12393
|
+
updated_at: string;
|
|
12394
|
+
};
|
|
12395
|
+
ChatEnvelope: {
|
|
12396
|
+
/** @enum {boolean} */
|
|
12397
|
+
success: true;
|
|
12398
|
+
data: components["schemas"]["Chat"];
|
|
12399
|
+
trace_id: string;
|
|
12400
|
+
request_id: string;
|
|
12401
|
+
};
|
|
11665
12402
|
ShareContactCardEnvelope: {
|
|
11666
12403
|
/** @enum {boolean} */
|
|
11667
12404
|
success: true;
|