@wevion/cli 1.0.2 → 1.0.2366

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/openapi.json +360 -600
  2. package/package.json +1 -1
package/openapi.json CHANGED
@@ -4940,23 +4940,6 @@
4940
4940
  }
4941
4941
  }
4942
4942
  },
4943
- "206": {
4944
- "description": "Streamed ad video (typically video/mp4) with HTTP Range support. Partial content response for HTTP Range requests.",
4945
- "content": {
4946
- "video/mp4": {
4947
- "schema": {
4948
- "type": "string",
4949
- "format": "binary"
4950
- }
4951
- },
4952
- "video/webm": {
4953
- "schema": {
4954
- "type": "string",
4955
- "format": "binary"
4956
- }
4957
- }
4958
- }
4959
- },
4960
4943
  "401": {
4961
4944
  "description": "Unauthorized - missing or invalid bearer token",
4962
4945
  "content": {
@@ -4966,60 +4949,6 @@
4966
4949
  }
4967
4950
  }
4968
4951
  }
4969
- },
4970
- "403": {
4971
- "description": "Forbidden - caller lacks the required role/permission",
4972
- "content": {
4973
- "application/json": {
4974
- "schema": {
4975
- "type": "object",
4976
- "required": [
4977
- "error"
4978
- ],
4979
- "properties": {
4980
- "error": {
4981
- "type": "string"
4982
- }
4983
- }
4984
- }
4985
- }
4986
- }
4987
- },
4988
- "404": {
4989
- "description": "Resource not found",
4990
- "content": {
4991
- "application/json": {
4992
- "schema": {
4993
- "type": "object",
4994
- "required": [
4995
- "error"
4996
- ],
4997
- "properties": {
4998
- "error": {
4999
- "type": "string"
5000
- }
5001
- }
5002
- }
5003
- }
5004
- }
5005
- },
5006
- "500": {
5007
- "description": "Internal server error",
5008
- "content": {
5009
- "application/json": {
5010
- "schema": {
5011
- "type": "object",
5012
- "required": [
5013
- "error"
5014
- ],
5015
- "properties": {
5016
- "error": {
5017
- "type": "string"
5018
- }
5019
- }
5020
- }
5021
- }
5022
- }
5023
4952
  }
5024
4953
  }
5025
4954
  }
@@ -22894,7 +22823,7 @@
22894
22823
  "tags": [
22895
22824
  "auth"
22896
22825
  ],
22897
- "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.",
22898
22827
  "requestBody": {
22899
22828
  "required": true,
22900
22829
  "content": {
@@ -22902,7 +22831,12 @@
22902
22831
  "schema": {
22903
22832
  "additionalProperties": false,
22904
22833
  "type": "object",
22905
- "properties": {}
22834
+ "properties": {
22835
+ "password": {
22836
+ "maxLength": 128,
22837
+ "type": "string"
22838
+ }
22839
+ }
22906
22840
  }
22907
22841
  }
22908
22842
  }
@@ -23137,32 +23071,6 @@
23137
23071
  }
23138
23072
  }
23139
23073
  }
23140
- },
23141
- "503": {
23142
- "description": "Service unavailable",
23143
- "content": {
23144
- "application/json": {
23145
- "schema": {
23146
- "type": "object",
23147
- "required": [
23148
- "statusCode",
23149
- "error",
23150
- "message"
23151
- ],
23152
- "properties": {
23153
- "statusCode": {
23154
- "type": "number"
23155
- },
23156
- "error": {
23157
- "type": "string"
23158
- },
23159
- "message": {
23160
- "type": "string"
23161
- }
23162
- }
23163
- }
23164
- }
23165
- }
23166
23074
  }
23167
23075
  }
23168
23076
  }
@@ -23170,11 +23078,11 @@
23170
23078
  "/api/v1/auth/2fa/disable": {
23171
23079
  "post": {
23172
23080
  "operationId": "postApiV1Auth2faDisable",
23173
- "summary": "Reset 2FA enrollment",
23081
+ "summary": "Disable 2FA",
23174
23082
  "tags": [
23175
23083
  "auth"
23176
23084
  ],
23177
- "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.",
23178
23086
  "requestBody": {
23179
23087
  "required": true,
23180
23088
  "content": {
@@ -23186,6 +23094,10 @@
23186
23094
  "code"
23187
23095
  ],
23188
23096
  "properties": {
23097
+ "password": {
23098
+ "maxLength": 128,
23099
+ "type": "string"
23100
+ },
23189
23101
  "code": {
23190
23102
  "minLength": 6,
23191
23103
  "maxLength": 8,
@@ -23468,7 +23380,7 @@
23468
23380
  "tags": [
23469
23381
  "auth"
23470
23382
  ],
23471
- "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.",
23472
23384
  "requestBody": {
23473
23385
  "required": true,
23474
23386
  "content": {
@@ -23476,10 +23388,11 @@
23476
23388
  "schema": {
23477
23389
  "additionalProperties": false,
23478
23390
  "type": "object",
23479
- "required": [
23480
- "code"
23481
- ],
23482
23391
  "properties": {
23392
+ "password": {
23393
+ "maxLength": 128,
23394
+ "type": "string"
23395
+ },
23483
23396
  "code": {
23484
23397
  "minLength": 6,
23485
23398
  "maxLength": 8,
@@ -24473,10 +24386,7 @@
24473
24386
  "login_method",
24474
24387
  "success",
24475
24388
  "failure_reason",
24476
- "created_at",
24477
- "country",
24478
- "is_new_device",
24479
- "is_new_country"
24389
+ "created_at"
24480
24390
  ],
24481
24391
  "properties": {
24482
24392
  "id": {
@@ -24520,8 +24430,120 @@
24520
24430
  },
24521
24431
  "created_at": {
24522
24432
  "type": "string"
24433
+ }
24434
+ }
24435
+ }
24436
+ },
24437
+ "total": {
24438
+ "type": "integer"
24439
+ },
24440
+ "page": {
24441
+ "type": "integer"
24442
+ },
24443
+ "limit": {
24444
+ "type": "integer"
24445
+ }
24446
+ }
24447
+ }
24448
+ }
24449
+ }
24450
+ },
24451
+ "401": {
24452
+ "description": "Unauthorized - missing or invalid bearer token",
24453
+ "content": {
24454
+ "application/json": {
24455
+ "schema": {
24456
+ "type": "object",
24457
+ "required": [
24458
+ "statusCode",
24459
+ "error",
24460
+ "message"
24461
+ ],
24462
+ "properties": {
24463
+ "statusCode": {
24464
+ "type": "number"
24465
+ },
24466
+ "error": {
24467
+ "type": "string"
24468
+ },
24469
+ "message": {
24470
+ "type": "string"
24471
+ }
24472
+ }
24473
+ }
24474
+ }
24475
+ }
24476
+ },
24477
+ "500": {
24478
+ "description": "Internal server error",
24479
+ "content": {
24480
+ "application/json": {
24481
+ "schema": {
24482
+ "type": "object",
24483
+ "required": [
24484
+ "statusCode",
24485
+ "error",
24486
+ "message"
24487
+ ],
24488
+ "properties": {
24489
+ "statusCode": {
24490
+ "type": "number"
24491
+ },
24492
+ "error": {
24493
+ "type": "string"
24494
+ },
24495
+ "message": {
24496
+ "type": "string"
24497
+ }
24498
+ }
24499
+ }
24500
+ }
24501
+ }
24502
+ }
24503
+ }
24504
+ }
24505
+ },
24506
+ "/api/v1/auth/active-sessions": {
24507
+ "get": {
24508
+ "operationId": "getApiV1AuthActiveSessions",
24509
+ "summary": "Get active sessions",
24510
+ "tags": [
24511
+ "auth"
24512
+ ],
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.",
24514
+ "security": [
24515
+ {
24516
+ "bearerAuth": []
24517
+ }
24518
+ ],
24519
+ "responses": {
24520
+ "200": {
24521
+ "description": "Successful response",
24522
+ "content": {
24523
+ "application/json": {
24524
+ "schema": {
24525
+ "type": "object",
24526
+ "required": [
24527
+ "items"
24528
+ ],
24529
+ "properties": {
24530
+ "items": {
24531
+ "type": "array",
24532
+ "items": {
24533
+ "type": "object",
24534
+ "required": [
24535
+ "id",
24536
+ "ip_address",
24537
+ "user_agent",
24538
+ "login_method",
24539
+ "last_seen",
24540
+ "is_current"
24541
+ ],
24542
+ "properties": {
24543
+ "id": {
24544
+ "type": "string"
24523
24545
  },
24524
- "country": {
24546
+ "ip_address": {
24525
24547
  "anyOf": [
24526
24548
  {
24527
24549
  "type": "string"
@@ -24531,166 +24553,24 @@
24531
24553
  }
24532
24554
  ]
24533
24555
  },
24534
- "is_new_device": {
24556
+ "user_agent": {
24535
24557
  "anyOf": [
24536
24558
  {
24537
- "type": "boolean"
24559
+ "type": "string"
24538
24560
  },
24539
24561
  {
24540
24562
  "type": "null"
24541
24563
  }
24542
24564
  ]
24543
24565
  },
24544
- "is_new_country": {
24545
- "anyOf": [
24546
- {
24547
- "type": "boolean"
24548
- },
24549
- {
24550
- "type": "null"
24551
- }
24552
- ]
24553
- }
24554
- }
24555
- }
24556
- },
24557
- "total": {
24558
- "type": "integer"
24559
- },
24560
- "page": {
24561
- "type": "integer"
24562
- },
24563
- "limit": {
24564
- "type": "integer"
24565
- }
24566
- }
24567
- }
24568
- }
24569
- }
24570
- },
24571
- "401": {
24572
- "description": "Unauthorized - missing or invalid bearer token",
24573
- "content": {
24574
- "application/json": {
24575
- "schema": {
24576
- "type": "object",
24577
- "required": [
24578
- "statusCode",
24579
- "error",
24580
- "message"
24581
- ],
24582
- "properties": {
24583
- "statusCode": {
24584
- "type": "number"
24585
- },
24586
- "error": {
24587
- "type": "string"
24588
- },
24589
- "message": {
24590
- "type": "string"
24591
- }
24592
- }
24593
- }
24594
- }
24595
- }
24596
- },
24597
- "500": {
24598
- "description": "Internal server error",
24599
- "content": {
24600
- "application/json": {
24601
- "schema": {
24602
- "type": "object",
24603
- "required": [
24604
- "statusCode",
24605
- "error",
24606
- "message"
24607
- ],
24608
- "properties": {
24609
- "statusCode": {
24610
- "type": "number"
24611
- },
24612
- "error": {
24613
- "type": "string"
24614
- },
24615
- "message": {
24616
- "type": "string"
24617
- }
24618
- }
24619
- }
24620
- }
24621
- }
24622
- }
24623
- }
24624
- }
24625
- },
24626
- "/api/v1/auth/active-sessions": {
24627
- "get": {
24628
- "operationId": "getApiV1AuthActiveSessions",
24629
- "summary": "Get active sessions",
24630
- "tags": [
24631
- "auth"
24632
- ],
24633
- "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.",
24634
- "security": [
24635
- {
24636
- "bearerAuth": []
24637
- }
24638
- ],
24639
- "responses": {
24640
- "200": {
24641
- "description": "Successful response",
24642
- "content": {
24643
- "application/json": {
24644
- "schema": {
24645
- "type": "object",
24646
- "required": [
24647
- "items"
24648
- ],
24649
- "properties": {
24650
- "items": {
24651
- "type": "array",
24652
- "items": {
24653
- "type": "object",
24654
- "required": [
24655
- "id",
24656
- "ip_address",
24657
- "user_agent",
24658
- "login_method",
24659
- "last_seen",
24660
- "is_current"
24661
- ],
24662
- "properties": {
24663
- "id": {
24664
- "type": "string"
24665
- },
24666
- "ip_address": {
24667
- "anyOf": [
24668
- {
24669
- "type": "string"
24670
- },
24671
- {
24672
- "type": "null"
24673
- }
24674
- ]
24675
- },
24676
- "user_agent": {
24677
- "anyOf": [
24678
- {
24679
- "type": "string"
24680
- },
24681
- {
24682
- "type": "null"
24683
- }
24684
- ]
24685
- },
24686
- "login_method": {
24687
- "type": "string"
24688
- },
24689
- "last_seen": {
24690
- "type": "string"
24691
- },
24692
- "is_current": {
24693
- "type": "boolean"
24566
+ "login_method": {
24567
+ "type": "string"
24568
+ },
24569
+ "last_seen": {
24570
+ "type": "string"
24571
+ },
24572
+ "is_current": {
24573
+ "type": "boolean"
24694
24574
  }
24695
24575
  }
24696
24576
  }
@@ -24762,7 +24642,7 @@
24762
24642
  "tags": [
24763
24643
  "auth"
24764
24644
  ],
24765
- "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.",
24766
24646
  "requestBody": {
24767
24647
  "required": true,
24768
24648
  "content": {
@@ -24770,13 +24650,9 @@
24770
24650
  "schema": {
24771
24651
  "additionalProperties": false,
24772
24652
  "type": "object",
24773
- "required": [
24774
- "code"
24775
- ],
24776
24653
  "properties": {
24777
- "code": {
24778
- "minLength": 6,
24779
- "maxLength": 8,
24654
+ "password": {
24655
+ "maxLength": 128,
24780
24656
  "type": "string"
24781
24657
  }
24782
24658
  }
@@ -24896,7 +24772,7 @@
24896
24772
  "tags": [
24897
24773
  "auth"
24898
24774
  ],
24899
- "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.",
24900
24776
  "parameters": [
24901
24777
  {
24902
24778
  "schema": {
@@ -25046,7 +24922,7 @@
25046
24922
  "tags": [
25047
24923
  "auth"
25048
24924
  ],
25049
- "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.",
25050
24926
  "requestBody": {
25051
24927
  "required": true,
25052
24928
  "content": {
@@ -25055,20 +24931,18 @@
25055
24931
  "additionalProperties": false,
25056
24932
  "type": "object",
25057
24933
  "required": [
25058
- "confirmation",
25059
- "code"
24934
+ "confirmation"
25060
24935
  ],
25061
24936
  "properties": {
24937
+ "password": {
24938
+ "maxLength": 128,
24939
+ "type": "string"
24940
+ },
25062
24941
  "confirmation": {
25063
24942
  "type": "string",
25064
24943
  "enum": [
25065
24944
  "DELETE"
25066
24945
  ]
25067
- },
25068
- "code": {
25069
- "minLength": 6,
25070
- "maxLength": 8,
25071
- "type": "string"
25072
24946
  }
25073
24947
  }
25074
24948
  }
@@ -25347,261 +25221,16 @@
25347
25221
  }
25348
25222
  }
25349
25223
  }
25350
- }
25351
- },
25352
- "/api/v1/auth/account/deletion-status": {
25353
- "get": {
25354
- "operationId": "getApiV1AuthAccountDeletionStatus",
25355
- "summary": "Get account deletion status",
25356
- "tags": [
25357
- "auth"
25358
- ],
25359
- "description": "Returns the current deletion schedule status.",
25360
- "security": [
25361
- {
25362
- "bearerAuth": []
25363
- }
25364
- ],
25365
- "responses": {
25366
- "200": {
25367
- "description": "Successful response",
25368
- "content": {
25369
- "application/json": {
25370
- "schema": {
25371
- "type": "object",
25372
- "required": [
25373
- "scheduled",
25374
- "deletion_scheduled_at"
25375
- ],
25376
- "properties": {
25377
- "scheduled": {
25378
- "type": "boolean"
25379
- },
25380
- "deletion_scheduled_at": {
25381
- "anyOf": [
25382
- {
25383
- "type": "string"
25384
- },
25385
- {
25386
- "type": "null"
25387
- }
25388
- ]
25389
- }
25390
- }
25391
- }
25392
- }
25393
- }
25394
- },
25395
- "401": {
25396
- "description": "Unauthorized - missing or invalid bearer token",
25397
- "content": {
25398
- "application/json": {
25399
- "schema": {
25400
- "type": "object",
25401
- "required": [
25402
- "statusCode",
25403
- "error",
25404
- "message"
25405
- ],
25406
- "properties": {
25407
- "statusCode": {
25408
- "type": "number"
25409
- },
25410
- "error": {
25411
- "type": "string"
25412
- },
25413
- "message": {
25414
- "type": "string"
25415
- }
25416
- }
25417
- }
25418
- }
25419
- }
25420
- },
25421
- "500": {
25422
- "description": "Internal server error",
25423
- "content": {
25424
- "application/json": {
25425
- "schema": {
25426
- "type": "object",
25427
- "required": [
25428
- "statusCode",
25429
- "error",
25430
- "message"
25431
- ],
25432
- "properties": {
25433
- "statusCode": {
25434
- "type": "number"
25435
- },
25436
- "error": {
25437
- "type": "string"
25438
- },
25439
- "message": {
25440
- "type": "string"
25441
- }
25442
- }
25443
- }
25444
- }
25445
- }
25446
- }
25447
- }
25448
- }
25449
- },
25450
- "/api/v1/auth/security-nudge": {
25451
- "get": {
25452
- "operationId": "getApiV1AuthSecurityNudge",
25453
- "summary": "Get 2FA nudge state",
25454
- "tags": [
25455
- "auth"
25456
- ],
25457
- "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.",
25458
- "security": [
25459
- {
25460
- "bearerAuth": []
25461
- }
25462
- ],
25463
- "responses": {
25464
- "200": {
25465
- "description": "Successful response",
25466
- "content": {
25467
- "application/json": {
25468
- "schema": {
25469
- "type": "object",
25470
- "required": [
25471
- "dismissed_at",
25472
- "last_shown_at",
25473
- "snooze_count"
25474
- ],
25475
- "properties": {
25476
- "dismissed_at": {
25477
- "anyOf": [
25478
- {
25479
- "type": "string"
25480
- },
25481
- {
25482
- "type": "null"
25483
- }
25484
- ]
25485
- },
25486
- "last_shown_at": {
25487
- "anyOf": [
25488
- {
25489
- "type": "string"
25490
- },
25491
- {
25492
- "type": "null"
25493
- }
25494
- ]
25495
- },
25496
- "snooze_count": {
25497
- "minimum": 0,
25498
- "type": "integer"
25499
- }
25500
- }
25501
- }
25502
- }
25503
- }
25504
- },
25505
- "401": {
25506
- "description": "Unauthorized - missing or invalid bearer token",
25507
- "content": {
25508
- "application/json": {
25509
- "schema": {
25510
- "type": "object",
25511
- "required": [
25512
- "statusCode",
25513
- "error",
25514
- "message"
25515
- ],
25516
- "properties": {
25517
- "statusCode": {
25518
- "type": "number"
25519
- },
25520
- "error": {
25521
- "type": "string"
25522
- },
25523
- "message": {
25524
- "type": "string"
25525
- }
25526
- }
25527
- }
25528
- }
25529
- }
25530
- },
25531
- "500": {
25532
- "description": "Internal server error",
25533
- "content": {
25534
- "application/json": {
25535
- "schema": {
25536
- "type": "object",
25537
- "required": [
25538
- "statusCode",
25539
- "error",
25540
- "message"
25541
- ],
25542
- "properties": {
25543
- "statusCode": {
25544
- "type": "number"
25545
- },
25546
- "error": {
25547
- "type": "string"
25548
- },
25549
- "message": {
25550
- "type": "string"
25551
- }
25552
- }
25553
- }
25554
- }
25555
- }
25556
- }
25557
- }
25558
- },
25559
- "put": {
25560
- "operationId": "putApiV1AuthSecurityNudge",
25561
- "summary": "Update 2FA nudge state",
25224
+ }
25225
+ },
25226
+ "/api/v1/auth/account/deletion-status": {
25227
+ "get": {
25228
+ "operationId": "getApiV1AuthAccountDeletionStatus",
25229
+ "summary": "Get account deletion status",
25562
25230
  "tags": [
25563
25231
  "auth"
25564
25232
  ],
25565
- "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.",
25566
- "requestBody": {
25567
- "required": true,
25568
- "content": {
25569
- "application/json": {
25570
- "schema": {
25571
- "additionalProperties": false,
25572
- "type": "object",
25573
- "properties": {
25574
- "dismissed_at": {
25575
- "anyOf": [
25576
- {
25577
- "format": "date-time",
25578
- "type": "string"
25579
- },
25580
- {
25581
- "type": "null"
25582
- }
25583
- ]
25584
- },
25585
- "last_shown_at": {
25586
- "anyOf": [
25587
- {
25588
- "format": "date-time",
25589
- "type": "string"
25590
- },
25591
- {
25592
- "type": "null"
25593
- }
25594
- ]
25595
- },
25596
- "snooze_count": {
25597
- "minimum": 0,
25598
- "type": "integer"
25599
- }
25600
- }
25601
- }
25602
- }
25603
- }
25604
- },
25233
+ "description": "Returns the current deletion schedule status.",
25605
25234
  "security": [
25606
25235
  {
25607
25236
  "bearerAuth": []
@@ -25615,22 +25244,14 @@
25615
25244
  "schema": {
25616
25245
  "type": "object",
25617
25246
  "required": [
25618
- "dismissed_at",
25619
- "last_shown_at",
25620
- "snooze_count"
25247
+ "scheduled",
25248
+ "deletion_scheduled_at"
25621
25249
  ],
25622
25250
  "properties": {
25623
- "dismissed_at": {
25624
- "anyOf": [
25625
- {
25626
- "type": "string"
25627
- },
25628
- {
25629
- "type": "null"
25630
- }
25631
- ]
25251
+ "scheduled": {
25252
+ "type": "boolean"
25632
25253
  },
25633
- "last_shown_at": {
25254
+ "deletion_scheduled_at": {
25634
25255
  "anyOf": [
25635
25256
  {
25636
25257
  "type": "string"
@@ -25639,36 +25260,6 @@
25639
25260
  "type": "null"
25640
25261
  }
25641
25262
  ]
25642
- },
25643
- "snooze_count": {
25644
- "minimum": 0,
25645
- "type": "integer"
25646
- }
25647
- }
25648
- }
25649
- }
25650
- }
25651
- },
25652
- "400": {
25653
- "description": "Invalid request - schema validation failed",
25654
- "content": {
25655
- "application/json": {
25656
- "schema": {
25657
- "type": "object",
25658
- "required": [
25659
- "statusCode",
25660
- "error",
25661
- "message"
25662
- ],
25663
- "properties": {
25664
- "statusCode": {
25665
- "type": "number"
25666
- },
25667
- "error": {
25668
- "type": "string"
25669
- },
25670
- "message": {
25671
- "type": "string"
25672
25263
  }
25673
25264
  }
25674
25265
  }
@@ -25907,12 +25498,6 @@
25907
25498
  "two_factor_required": {
25908
25499
  "type": "boolean"
25909
25500
  },
25910
- "two_factor_setup_required": {
25911
- "type": "boolean"
25912
- },
25913
- "two_factor_mandatory": {
25914
- "type": "boolean"
25915
- },
25916
25501
  "has_password": {
25917
25502
  "type": "boolean"
25918
25503
  },
@@ -26593,12 +26178,6 @@
26593
26178
  "two_factor_required": {
26594
26179
  "type": "boolean"
26595
26180
  },
26596
- "two_factor_setup_required": {
26597
- "type": "boolean"
26598
- },
26599
- "two_factor_mandatory": {
26600
- "type": "boolean"
26601
- },
26602
26181
  "has_password": {
26603
26182
  "type": "boolean"
26604
26183
  },
@@ -27035,12 +26614,6 @@
27035
26614
  "two_factor_required": {
27036
26615
  "type": "boolean"
27037
26616
  },
27038
- "two_factor_setup_required": {
27039
- "type": "boolean"
27040
- },
27041
- "two_factor_mandatory": {
27042
- "type": "boolean"
27043
- },
27044
26617
  "has_password": {
27045
26618
  "type": "boolean"
27046
26619
  },
@@ -97322,6 +96895,7 @@
97322
96895
  "items": {
97323
96896
  "type": "object",
97324
96897
  "required": [
96898
+ "sheet_id",
97325
96899
  "ad_id",
97326
96900
  "ad_name",
97327
96901
  "campaign_id",
@@ -97356,6 +96930,9 @@
97356
96930
  "format"
97357
96931
  ],
97358
96932
  "properties": {
96933
+ "sheet_id": {
96934
+ "type": "string"
96935
+ },
97359
96936
  "ad_id": {
97360
96937
  "type": "string"
97361
96938
  },
@@ -100744,7 +100321,7 @@
100744
100321
  "tags": [
100745
100322
  "creative-hub"
100746
100323
  ],
100747
- "description": "Returns Drive folders for all team members visible to the current user, creating folders as needed.",
100324
+ "description": "Returns the cached Drive root for every visible team member. This is a read-only inventory: members without a provisioned root are returned with folder_id=null and status 'needs_provisioning'; the listing never creates Drive folders nor mutates app_settings.",
100748
100325
  "security": [
100749
100326
  {
100750
100327
  "bearerAuth": []
@@ -100774,7 +100351,8 @@
100774
100351
  "name",
100775
100352
  "email",
100776
100353
  "role",
100777
- "folder_id"
100354
+ "folder_id",
100355
+ "status"
100778
100356
  ],
100779
100357
  "properties": {
100780
100358
  "session_id": {
@@ -100808,6 +100386,22 @@
100808
100386
  "type": "null"
100809
100387
  }
100810
100388
  ]
100389
+ },
100390
+ "status": {
100391
+ "anyOf": [
100392
+ {
100393
+ "type": "string",
100394
+ "enum": [
100395
+ "ready"
100396
+ ]
100397
+ },
100398
+ {
100399
+ "type": "string",
100400
+ "enum": [
100401
+ "needs_provisioning"
100402
+ ]
100403
+ }
100404
+ ]
100811
100405
  }
100812
100406
  }
100813
100407
  }
@@ -100848,6 +100442,141 @@
100848
100442
  }
100849
100443
  }
100850
100444
  },
100445
+ "/api/v1/creative-hub/team-folders/provision": {
100446
+ "post": {
100447
+ "operationId": "postApiV1CreativeHubTeamFoldersProvision",
100448
+ "summary": "Provision a Drive root for the caller or a visible team member",
100449
+ "tags": [
100450
+ "creative-hub"
100451
+ ],
100452
+ "description": "Idempotently creates the Drive root for the target user (default: the caller) under a per-(team, user) lock. The target must be within the caller team-scoped visible set.",
100453
+ "requestBody": {
100454
+ "required": true,
100455
+ "content": {
100456
+ "application/json": {
100457
+ "schema": {
100458
+ "additionalProperties": false,
100459
+ "type": "object",
100460
+ "properties": {
100461
+ "sessionId": {
100462
+ "minLength": 1,
100463
+ "maxLength": 128,
100464
+ "type": "string"
100465
+ }
100466
+ }
100467
+ }
100468
+ }
100469
+ }
100470
+ },
100471
+ "security": [
100472
+ {
100473
+ "bearerAuth": []
100474
+ },
100475
+ {
100476
+ "apiKeyAuth": []
100477
+ }
100478
+ ],
100479
+ "responses": {
100480
+ "200": {
100481
+ "description": "Successful response",
100482
+ "content": {
100483
+ "application/json": {
100484
+ "schema": {
100485
+ "type": "object",
100486
+ "required": [
100487
+ "session_id",
100488
+ "user_id",
100489
+ "folder_id",
100490
+ "status"
100491
+ ],
100492
+ "properties": {
100493
+ "session_id": {
100494
+ "type": "string"
100495
+ },
100496
+ "user_id": {
100497
+ "type": "string"
100498
+ },
100499
+ "folder_id": {
100500
+ "type": "string"
100501
+ },
100502
+ "status": {
100503
+ "type": "string",
100504
+ "enum": [
100505
+ "ready"
100506
+ ]
100507
+ }
100508
+ }
100509
+ }
100510
+ }
100511
+ }
100512
+ },
100513
+ "401": {
100514
+ "description": "Unauthorized - missing or invalid bearer token",
100515
+ "content": {
100516
+ "application/json": {
100517
+ "schema": {
100518
+ "$ref": "#/components/schemas/ErrorResponse"
100519
+ }
100520
+ }
100521
+ }
100522
+ },
100523
+ "403": {
100524
+ "description": "Forbidden - caller lacks the required role/permission",
100525
+ "content": {
100526
+ "application/json": {
100527
+ "schema": {
100528
+ "type": "object",
100529
+ "required": [
100530
+ "error"
100531
+ ],
100532
+ "properties": {
100533
+ "error": {
100534
+ "type": "string"
100535
+ }
100536
+ }
100537
+ }
100538
+ }
100539
+ }
100540
+ },
100541
+ "404": {
100542
+ "description": "Resource not found",
100543
+ "content": {
100544
+ "application/json": {
100545
+ "schema": {
100546
+ "type": "object",
100547
+ "required": [
100548
+ "error"
100549
+ ],
100550
+ "properties": {
100551
+ "error": {
100552
+ "type": "string"
100553
+ }
100554
+ }
100555
+ }
100556
+ }
100557
+ }
100558
+ },
100559
+ "500": {
100560
+ "description": "Internal server error",
100561
+ "content": {
100562
+ "application/json": {
100563
+ "schema": {
100564
+ "type": "object",
100565
+ "required": [
100566
+ "error"
100567
+ ],
100568
+ "properties": {
100569
+ "error": {
100570
+ "type": "string"
100571
+ }
100572
+ }
100573
+ }
100574
+ }
100575
+ }
100576
+ }
100577
+ }
100578
+ }
100579
+ },
100851
100580
  "/api/v1/creative-hub/files": {
100852
100581
  "get": {
100853
100582
  "operationId": "getApiV1CreativeHubFiles",
@@ -101145,6 +100874,24 @@
101145
100874
  }
101146
100875
  }
101147
100876
  },
100877
+ "404": {
100878
+ "description": "Resource not found",
100879
+ "content": {
100880
+ "application/json": {
100881
+ "schema": {
100882
+ "type": "object",
100883
+ "required": [
100884
+ "error"
100885
+ ],
100886
+ "properties": {
100887
+ "error": {
100888
+ "type": "string"
100889
+ }
100890
+ }
100891
+ }
100892
+ }
100893
+ }
100894
+ },
101148
100895
  "500": {
101149
100896
  "description": "Internal server error",
101150
100897
  "content": {
@@ -101263,6 +101010,24 @@
101263
101010
  }
101264
101011
  }
101265
101012
  },
101013
+ "404": {
101014
+ "description": "Resource not found",
101015
+ "content": {
101016
+ "application/json": {
101017
+ "schema": {
101018
+ "type": "object",
101019
+ "required": [
101020
+ "error"
101021
+ ],
101022
+ "properties": {
101023
+ "error": {
101024
+ "type": "string"
101025
+ }
101026
+ }
101027
+ }
101028
+ }
101029
+ }
101030
+ },
101266
101031
  "500": {
101267
101032
  "description": "Internal server error",
101268
101033
  "content": {
@@ -141237,7 +141002,7 @@
141237
141002
  "properties": {
141238
141003
  "preferences": {
141239
141004
  "minItems": 1,
141240
- "maxItems": 29,
141005
+ "maxItems": 24,
141241
141006
  "type": "array",
141242
141007
  "items": {
141243
141008
  "additionalProperties": false,
@@ -216717,8 +216482,7 @@
216717
216482
  "type": "string"
216718
216483
  },
216719
216484
  "daily_budget": {
216720
- "minimum": 1,
216721
- "description": "Daily budget in cents (must be > 0 for CBO and ABO)",
216485
+ "description": "Daily budget in cents",
216722
216486
  "type": "number"
216723
216487
  },
216724
216488
  "adset_names": {
@@ -216797,14 +216561,10 @@
216797
216561
  "type": "string"
216798
216562
  },
216799
216563
  "min_age": {
216800
- "minimum": 13,
216801
- "maximum": 65,
216802
216564
  "description": "Minimum age targeting",
216803
216565
  "type": "number"
216804
216566
  },
216805
216567
  "max_age": {
216806
- "minimum": 13,
216807
- "maximum": 65,
216808
216568
  "description": "Maximum age targeting",
216809
216569
  "type": "number"
216810
216570
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wevion/cli",
3
- "version": "1.0.2",
3
+ "version": "1.0.2366",
4
4
  "description": "Wevion API command-line interface — generated from the public OpenAPI spec",
5
5
  "type": "module",
6
6
  "bin": {