@wevion/cli 1.0.3 → 1.0.2368

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/openapi.json CHANGED
@@ -22823,7 +22823,7 @@
22823
22823
  "tags": [
22824
22824
  "auth"
22825
22825
  ],
22826
- "description": "Generates a new inactive TOTP secret and QR code for first-time 2FA setup. Account password is never required inside the app.",
22826
+ "description": "Verifies password (or skips for users without a local password), then generates TOTP secret + QR code.",
22827
22827
  "requestBody": {
22828
22828
  "required": true,
22829
22829
  "content": {
@@ -22831,7 +22831,12 @@
22831
22831
  "schema": {
22832
22832
  "additionalProperties": false,
22833
22833
  "type": "object",
22834
- "properties": {}
22834
+ "properties": {
22835
+ "password": {
22836
+ "maxLength": 128,
22837
+ "type": "string"
22838
+ }
22839
+ }
22835
22840
  }
22836
22841
  }
22837
22842
  }
@@ -23066,32 +23071,6 @@
23066
23071
  }
23067
23072
  }
23068
23073
  }
23069
- },
23070
- "503": {
23071
- "description": "Service unavailable",
23072
- "content": {
23073
- "application/json": {
23074
- "schema": {
23075
- "type": "object",
23076
- "required": [
23077
- "statusCode",
23078
- "error",
23079
- "message"
23080
- ],
23081
- "properties": {
23082
- "statusCode": {
23083
- "type": "number"
23084
- },
23085
- "error": {
23086
- "type": "string"
23087
- },
23088
- "message": {
23089
- "type": "string"
23090
- }
23091
- }
23092
- }
23093
- }
23094
- }
23095
23074
  }
23096
23075
  }
23097
23076
  }
@@ -23099,11 +23078,11 @@
23099
23078
  "/api/v1/auth/2fa/disable": {
23100
23079
  "post": {
23101
23080
  "operationId": "postApiV1Auth2faDisable",
23102
- "summary": "Reset 2FA enrollment",
23081
+ "summary": "Disable 2FA",
23103
23082
  "tags": [
23104
23083
  "auth"
23105
23084
  ],
23106
- "description": "Clears the current TOTP secret and backup codes after a TOTP/backup-code step-up. Used by the reset flow; account password is never accepted.",
23085
+ "description": "Requires TOTP/backup code to disable 2FA. Password is required only for users with a local password; SSO-only users (e.g. Google sign-in with no local password) authenticate via JWT plus the 2FA code alone.",
23107
23086
  "requestBody": {
23108
23087
  "required": true,
23109
23088
  "content": {
@@ -23115,6 +23094,10 @@
23115
23094
  "code"
23116
23095
  ],
23117
23096
  "properties": {
23097
+ "password": {
23098
+ "maxLength": 128,
23099
+ "type": "string"
23100
+ },
23118
23101
  "code": {
23119
23102
  "minLength": 6,
23120
23103
  "maxLength": 8,
@@ -23397,7 +23380,7 @@
23397
23380
  "tags": [
23398
23381
  "auth"
23399
23382
  ],
23400
- "description": "Generates a new set of backup codes. Requires step-up authentication on top of the JWT session: the user must provide a valid current TOTP or one existing backup code. Account password is never accepted.",
23383
+ "description": "Generates a new set of backup codes. Requires step-up authentication on top of the JWT session: users with a local password must provide the password; SSO-only users must provide a valid current TOTP or one of their existing backup codes. The new codes are the recovery factor for the user, so issuing them without a second factor on a session that was itself granted by the codes would be a step-up gap.",
23401
23384
  "requestBody": {
23402
23385
  "required": true,
23403
23386
  "content": {
@@ -23405,10 +23388,11 @@
23405
23388
  "schema": {
23406
23389
  "additionalProperties": false,
23407
23390
  "type": "object",
23408
- "required": [
23409
- "code"
23410
- ],
23411
23391
  "properties": {
23392
+ "password": {
23393
+ "maxLength": 128,
23394
+ "type": "string"
23395
+ },
23412
23396
  "code": {
23413
23397
  "minLength": 6,
23414
23398
  "maxLength": 8,
@@ -24402,10 +24386,7 @@
24402
24386
  "login_method",
24403
24387
  "success",
24404
24388
  "failure_reason",
24405
- "created_at",
24406
- "country",
24407
- "is_new_device",
24408
- "is_new_country"
24389
+ "created_at"
24409
24390
  ],
24410
24391
  "properties": {
24411
24392
  "id": {
@@ -24449,36 +24430,6 @@
24449
24430
  },
24450
24431
  "created_at": {
24451
24432
  "type": "string"
24452
- },
24453
- "country": {
24454
- "anyOf": [
24455
- {
24456
- "type": "string"
24457
- },
24458
- {
24459
- "type": "null"
24460
- }
24461
- ]
24462
- },
24463
- "is_new_device": {
24464
- "anyOf": [
24465
- {
24466
- "type": "boolean"
24467
- },
24468
- {
24469
- "type": "null"
24470
- }
24471
- ]
24472
- },
24473
- "is_new_country": {
24474
- "anyOf": [
24475
- {
24476
- "type": "boolean"
24477
- },
24478
- {
24479
- "type": "null"
24480
- }
24481
- ]
24482
24433
  }
24483
24434
  }
24484
24435
  }
@@ -24559,7 +24510,7 @@
24559
24510
  "tags": [
24560
24511
  "auth"
24561
24512
  ],
24562
- "description": "Returns the REAL non-expired BetterAuth sessions (auth_session rows) for the current user — one per signed-in device. The current device (`is_current`) is identified by the JWT `sid` claim (= auth_session.id, exposed as request.authSessionId); legacy tokens with no `sid` fall back to an IP + user-agent match. Revoking these truly logs out the corresponding device.",
24513
+ "description": "Returns the REAL non-expired BetterAuth sessions (auth_session rows) for the current user — one per signed-in device. Revoking these truly logs out the corresponding device.",
24563
24514
  "security": [
24564
24515
  {
24565
24516
  "bearerAuth": []
@@ -24691,7 +24642,7 @@
24691
24642
  "tags": [
24692
24643
  "auth"
24693
24644
  ],
24694
- "description": "Logs out all devices, including the current one: deletes every BetterAuth session (auth_session row) for the user, denylists every sid in Redis for immediate JWT rejection, and sets token_invalidated_before=now so already-issued short-lived JWTs are rejected at once. Requires a current TOTP or backup code; account password is never accepted.",
24645
+ "description": "Logs out all OTHER devices while keeping the current one signed in (matches the UI copy \"except the current one\"): deletes every BetterAuth session (auth_session row) for the user EXCEPT the one matching the current request (by IP + user-agent), and sets token_invalidated_before=now so already-issued short-lived JWTs are rejected immediately. The current device stays signed in because its session row survives and api.ts transparently re-mints a JWT via GET /token. Requires password for users with a local password; for SSO-only users (e.g. Google sign-in with no local password) the JWT is sufficient.",
24695
24646
  "requestBody": {
24696
24647
  "required": true,
24697
24648
  "content": {
@@ -24699,13 +24650,9 @@
24699
24650
  "schema": {
24700
24651
  "additionalProperties": false,
24701
24652
  "type": "object",
24702
- "required": [
24703
- "code"
24704
- ],
24705
24653
  "properties": {
24706
- "code": {
24707
- "minLength": 6,
24708
- "maxLength": 8,
24654
+ "password": {
24655
+ "maxLength": 128,
24709
24656
  "type": "string"
24710
24657
  }
24711
24658
  }
@@ -24825,7 +24772,7 @@
24825
24772
  "tags": [
24826
24773
  "auth"
24827
24774
  ],
24828
- "description": "Truly revokes a specific device by deleting its BetterAuth session (auth_session row). The :sessionId is an auth_session.id (= the JWT `sid`). The session identified as current (sessionId === the caller’s sid) cannot be revoked here. The revoked sid is denylisted in Redis so the device’s outstanding short-lived JWT is rejected immediately.",
24775
+ "description": "Truly revokes a specific device by deleting its real BetterAuth session (auth_session row). The :sessionId is an auth_session.id. Cannot revoke the current session.",
24829
24776
  "parameters": [
24830
24777
  {
24831
24778
  "schema": {
@@ -24975,7 +24922,7 @@
24975
24922
  "tags": [
24976
24923
  "auth"
24977
24924
  ],
24978
- "description": "Schedules account for deletion after 30-day grace period. Requires typing \"DELETE\". Also requires a current TOTP or backup code; account password is never accepted.",
24925
+ "description": "Schedules account for deletion after 30-day grace period. Requires typing \"DELETE\". Password is required only for users with a local password; SSO-only users authenticate via JWT alone.",
24979
24926
  "requestBody": {
24980
24927
  "required": true,
24981
24928
  "content": {
@@ -24984,20 +24931,18 @@
24984
24931
  "additionalProperties": false,
24985
24932
  "type": "object",
24986
24933
  "required": [
24987
- "confirmation",
24988
- "code"
24934
+ "confirmation"
24989
24935
  ],
24990
24936
  "properties": {
24937
+ "password": {
24938
+ "maxLength": 128,
24939
+ "type": "string"
24940
+ },
24991
24941
  "confirmation": {
24992
24942
  "type": "string",
24993
24943
  "enum": [
24994
24944
  "DELETE"
24995
24945
  ]
24996
- },
24997
- "code": {
24998
- "minLength": 6,
24999
- "maxLength": 8,
25000
- "type": "string"
25001
24946
  }
25002
24947
  }
25003
24948
  }
@@ -25376,289 +25321,6 @@
25376
25321
  }
25377
25322
  }
25378
25323
  },
25379
- "/api/v1/auth/security-nudge": {
25380
- "get": {
25381
- "operationId": "getApiV1AuthSecurityNudge",
25382
- "summary": "Get 2FA nudge state",
25383
- "tags": [
25384
- "auth"
25385
- ],
25386
- "description": "Returns the current user's 2FA-enable nudge banner state (last dismissal time, last shown time, snooze count). Defaults are returned when no state has been persisted yet.",
25387
- "security": [
25388
- {
25389
- "bearerAuth": []
25390
- }
25391
- ],
25392
- "responses": {
25393
- "200": {
25394
- "description": "Successful response",
25395
- "content": {
25396
- "application/json": {
25397
- "schema": {
25398
- "type": "object",
25399
- "required": [
25400
- "dismissed_at",
25401
- "last_shown_at",
25402
- "snooze_count"
25403
- ],
25404
- "properties": {
25405
- "dismissed_at": {
25406
- "anyOf": [
25407
- {
25408
- "type": "string"
25409
- },
25410
- {
25411
- "type": "null"
25412
- }
25413
- ]
25414
- },
25415
- "last_shown_at": {
25416
- "anyOf": [
25417
- {
25418
- "type": "string"
25419
- },
25420
- {
25421
- "type": "null"
25422
- }
25423
- ]
25424
- },
25425
- "snooze_count": {
25426
- "minimum": 0,
25427
- "type": "integer"
25428
- }
25429
- }
25430
- }
25431
- }
25432
- }
25433
- },
25434
- "401": {
25435
- "description": "Unauthorized - missing or invalid bearer token",
25436
- "content": {
25437
- "application/json": {
25438
- "schema": {
25439
- "type": "object",
25440
- "required": [
25441
- "statusCode",
25442
- "error",
25443
- "message"
25444
- ],
25445
- "properties": {
25446
- "statusCode": {
25447
- "type": "number"
25448
- },
25449
- "error": {
25450
- "type": "string"
25451
- },
25452
- "message": {
25453
- "type": "string"
25454
- }
25455
- }
25456
- }
25457
- }
25458
- }
25459
- },
25460
- "500": {
25461
- "description": "Internal server error",
25462
- "content": {
25463
- "application/json": {
25464
- "schema": {
25465
- "type": "object",
25466
- "required": [
25467
- "statusCode",
25468
- "error",
25469
- "message"
25470
- ],
25471
- "properties": {
25472
- "statusCode": {
25473
- "type": "number"
25474
- },
25475
- "error": {
25476
- "type": "string"
25477
- },
25478
- "message": {
25479
- "type": "string"
25480
- }
25481
- }
25482
- }
25483
- }
25484
- }
25485
- }
25486
- }
25487
- },
25488
- "put": {
25489
- "operationId": "putApiV1AuthSecurityNudge",
25490
- "summary": "Update 2FA nudge state",
25491
- "tags": [
25492
- "auth"
25493
- ],
25494
- "description": "Merges the provided fields into the current user's 2FA-enable nudge banner state and persists it. Used when the user snoozes (\"Più tardi\") or when the banner records that it was shown. Opt-in only; this never enforces 2FA.",
25495
- "requestBody": {
25496
- "required": true,
25497
- "content": {
25498
- "application/json": {
25499
- "schema": {
25500
- "additionalProperties": false,
25501
- "type": "object",
25502
- "properties": {
25503
- "dismissed_at": {
25504
- "anyOf": [
25505
- {
25506
- "format": "date-time",
25507
- "type": "string"
25508
- },
25509
- {
25510
- "type": "null"
25511
- }
25512
- ]
25513
- },
25514
- "last_shown_at": {
25515
- "anyOf": [
25516
- {
25517
- "format": "date-time",
25518
- "type": "string"
25519
- },
25520
- {
25521
- "type": "null"
25522
- }
25523
- ]
25524
- },
25525
- "snooze_count": {
25526
- "minimum": 0,
25527
- "type": "integer"
25528
- }
25529
- }
25530
- }
25531
- }
25532
- }
25533
- },
25534
- "security": [
25535
- {
25536
- "bearerAuth": []
25537
- }
25538
- ],
25539
- "responses": {
25540
- "200": {
25541
- "description": "Successful response",
25542
- "content": {
25543
- "application/json": {
25544
- "schema": {
25545
- "type": "object",
25546
- "required": [
25547
- "dismissed_at",
25548
- "last_shown_at",
25549
- "snooze_count"
25550
- ],
25551
- "properties": {
25552
- "dismissed_at": {
25553
- "anyOf": [
25554
- {
25555
- "type": "string"
25556
- },
25557
- {
25558
- "type": "null"
25559
- }
25560
- ]
25561
- },
25562
- "last_shown_at": {
25563
- "anyOf": [
25564
- {
25565
- "type": "string"
25566
- },
25567
- {
25568
- "type": "null"
25569
- }
25570
- ]
25571
- },
25572
- "snooze_count": {
25573
- "minimum": 0,
25574
- "type": "integer"
25575
- }
25576
- }
25577
- }
25578
- }
25579
- }
25580
- },
25581
- "400": {
25582
- "description": "Invalid request - schema validation failed",
25583
- "content": {
25584
- "application/json": {
25585
- "schema": {
25586
- "type": "object",
25587
- "required": [
25588
- "statusCode",
25589
- "error",
25590
- "message"
25591
- ],
25592
- "properties": {
25593
- "statusCode": {
25594
- "type": "number"
25595
- },
25596
- "error": {
25597
- "type": "string"
25598
- },
25599
- "message": {
25600
- "type": "string"
25601
- }
25602
- }
25603
- }
25604
- }
25605
- }
25606
- },
25607
- "401": {
25608
- "description": "Unauthorized - missing or invalid bearer token",
25609
- "content": {
25610
- "application/json": {
25611
- "schema": {
25612
- "type": "object",
25613
- "required": [
25614
- "statusCode",
25615
- "error",
25616
- "message"
25617
- ],
25618
- "properties": {
25619
- "statusCode": {
25620
- "type": "number"
25621
- },
25622
- "error": {
25623
- "type": "string"
25624
- },
25625
- "message": {
25626
- "type": "string"
25627
- }
25628
- }
25629
- }
25630
- }
25631
- }
25632
- },
25633
- "500": {
25634
- "description": "Internal server error",
25635
- "content": {
25636
- "application/json": {
25637
- "schema": {
25638
- "type": "object",
25639
- "required": [
25640
- "statusCode",
25641
- "error",
25642
- "message"
25643
- ],
25644
- "properties": {
25645
- "statusCode": {
25646
- "type": "number"
25647
- },
25648
- "error": {
25649
- "type": "string"
25650
- },
25651
- "message": {
25652
- "type": "string"
25653
- }
25654
- }
25655
- }
25656
- }
25657
- }
25658
- }
25659
- }
25660
- }
25661
- },
25662
25324
  "/api/v1/auth/me": {
25663
25325
  "get": {
25664
25326
  "operationId": "getApiV1AuthMe",
@@ -25836,12 +25498,6 @@
25836
25498
  "two_factor_required": {
25837
25499
  "type": "boolean"
25838
25500
  },
25839
- "two_factor_setup_required": {
25840
- "type": "boolean"
25841
- },
25842
- "two_factor_mandatory": {
25843
- "type": "boolean"
25844
- },
25845
25501
  "has_password": {
25846
25502
  "type": "boolean"
25847
25503
  },
@@ -26522,12 +26178,6 @@
26522
26178
  "two_factor_required": {
26523
26179
  "type": "boolean"
26524
26180
  },
26525
- "two_factor_setup_required": {
26526
- "type": "boolean"
26527
- },
26528
- "two_factor_mandatory": {
26529
- "type": "boolean"
26530
- },
26531
26181
  "has_password": {
26532
26182
  "type": "boolean"
26533
26183
  },
@@ -26964,12 +26614,6 @@
26964
26614
  "two_factor_required": {
26965
26615
  "type": "boolean"
26966
26616
  },
26967
- "two_factor_setup_required": {
26968
- "type": "boolean"
26969
- },
26970
- "two_factor_mandatory": {
26971
- "type": "boolean"
26972
- },
26973
26617
  "has_password": {
26974
26618
  "type": "boolean"
26975
26619
  },
@@ -97633,8 +97277,7 @@
97633
97277
  "computed_at",
97634
97278
  "alerted_at",
97635
97279
  "creative_thumbnail_url",
97636
- "creative_thumbnail_proxy",
97637
- "creative_thumbnail_proxy_large"
97280
+ "creative_thumbnail_proxy"
97638
97281
  ],
97639
97282
  "properties": {
97640
97283
  "ad_id": {
@@ -97816,9 +97459,6 @@
97816
97459
  },
97817
97460
  "creative_thumbnail_proxy": {
97818
97461
  "type": "string"
97819
- },
97820
- "creative_thumbnail_proxy_large": {
97821
- "type": "string"
97822
97462
  }
97823
97463
  }
97824
97464
  }
@@ -141579,7 +141219,7 @@
141579
141219
  "properties": {
141580
141220
  "preferences": {
141581
141221
  "minItems": 1,
141582
- "maxItems": 29,
141222
+ "maxItems": 24,
141583
141223
  "type": "array",
141584
141224
  "items": {
141585
141225
  "additionalProperties": false,
@@ -217059,8 +216699,7 @@
217059
216699
  "type": "string"
217060
216700
  },
217061
216701
  "daily_budget": {
217062
- "minimum": 1,
217063
- "description": "Daily budget in cents (must be > 0 for CBO and ABO)",
216702
+ "description": "Daily budget in cents",
217064
216703
  "type": "number"
217065
216704
  },
217066
216705
  "adset_names": {
@@ -217139,14 +216778,10 @@
217139
216778
  "type": "string"
217140
216779
  },
217141
216780
  "min_age": {
217142
- "minimum": 13,
217143
- "maximum": 65,
217144
216781
  "description": "Minimum age targeting",
217145
216782
  "type": "number"
217146
216783
  },
217147
216784
  "max_age": {
217148
- "minimum": 13,
217149
- "maximum": 65,
217150
216785
  "description": "Maximum age targeting",
217151
216786
  "type": "number"
217152
216787
  },
@@ -225684,62 +225319,6 @@
225684
225319
  }
225685
225320
  }
225686
225321
  },
225687
- "/meta/extension.zip": {
225688
- "get": {
225689
- "operationId": "getMetaExtensionZip",
225690
- "summary": "Download the auto-connect Chrome extension",
225691
- "tags": [
225692
- "meta"
225693
- ],
225694
- "description": "Returns a .zip of the \"Wevion Connect\" Chrome extension, pre-configured with this workspace OAuth link. Install it in Chrome or on any Chromium antidetect browser (AdsPower, Multilogin, GoLogin, Dolphin, ...) and open the profiles: the Facebook accounts connect to this workspace automatically.",
225695
- "security": [
225696
- {
225697
- "bearerAuth": []
225698
- }
225699
- ],
225700
- "responses": {
225701
- "200": {
225702
- "description": "ZIP archive of the pre-configured \"Wevion Connect\" Chrome extension (application/zip).",
225703
- "content": {
225704
- "application/json": {
225705
- "schema": {
225706
- "format": "binary",
225707
- "description": "ZIP archive of the pre-configured \"Wevion Connect\" Chrome extension (application/zip).",
225708
- "type": "string"
225709
- }
225710
- }
225711
- }
225712
- },
225713
- "401": {
225714
- "description": "Unauthorized — a valid session is required.",
225715
- "content": {
225716
- "application/json": {
225717
- "schema": {
225718
- "description": "Unauthorized — a valid session is required.",
225719
- "type": "object",
225720
- "required": [
225721
- "statusCode",
225722
- "error",
225723
- "message"
225724
- ],
225725
- "properties": {
225726
- "statusCode": {
225727
- "type": "number"
225728
- },
225729
- "error": {
225730
- "type": "string"
225731
- },
225732
- "message": {
225733
- "type": "string"
225734
- }
225735
- }
225736
- }
225737
- }
225738
- }
225739
- }
225740
- }
225741
- }
225742
- },
225743
225322
  "/meta/login-callback": {
225744
225323
  "get": {
225745
225324
  "operationId": "getMetaLoginCallback",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wevion/cli",
3
- "version": "1.0.3",
3
+ "version": "1.0.2368",
4
4
  "description": "Wevion API command-line interface — generated from the public OpenAPI spec",
5
5
  "type": "module",
6
6
  "bin": {