@aepstore-dev/contracts 1.32.0 → 1.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/gen/auth.ts +34 -0
- package/gen/payments.ts +285 -0
- package/gen/users.ts +570 -0
- package/package.json +1 -1
- package/proto/activity.proto +200 -200
- package/proto/auth.proto +144 -126
- package/proto/mail.proto +42 -42
- package/proto/payments.proto +356 -203
- package/proto/products.proto +404 -404
- package/proto/support.proto +118 -118
- package/proto/taxonomy.proto +105 -105
- package/proto/upload.proto +171 -171
- package/proto/users.proto +660 -286
package/gen/users.ts
CHANGED
|
@@ -19,6 +19,20 @@ export enum UserFieldsType {
|
|
|
19
19
|
UNRECOGNIZED = -1,
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
/** Periods mirror PremiumPeriod enum in schema.prisma. */
|
|
23
|
+
export enum PremiumPeriod {
|
|
24
|
+
PREMIUM_PERIOD_UNSPECIFIED = 0,
|
|
25
|
+
PREMIUM_PERIOD_MONTH_1 = 1,
|
|
26
|
+
PREMIUM_PERIOD_MONTH_3 = 2,
|
|
27
|
+
PREMIUM_PERIOD_MONTH_6 = 3,
|
|
28
|
+
PREMIUM_PERIOD_MONTH_12 = 4,
|
|
29
|
+
UNRECOGNIZED = -1,
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface Ok {
|
|
33
|
+
ok: boolean;
|
|
34
|
+
}
|
|
35
|
+
|
|
22
36
|
export interface User {
|
|
23
37
|
id: string;
|
|
24
38
|
email: string;
|
|
@@ -160,6 +174,18 @@ export interface PublicProfileResponse {
|
|
|
160
174
|
isOwner: boolean;
|
|
161
175
|
/** viewer is subscribed to this profile (false when anonymous / self) */
|
|
162
176
|
isSubscribed: boolean;
|
|
177
|
+
/**
|
|
178
|
+
* Premium fields — populated only when the profile owner has an active
|
|
179
|
+
* PremiumSubscription. Non-premium viewers and non-premium profiles see
|
|
180
|
+
* empty strings / false.
|
|
181
|
+
*/
|
|
182
|
+
isPremium: boolean;
|
|
183
|
+
profileColor: string;
|
|
184
|
+
avatarBorder: AvatarBorder | undefined;
|
|
185
|
+
animatedAvatarUrl: string;
|
|
186
|
+
animatedBannerUrl: string;
|
|
187
|
+
/** ISO 8601, empty when not premium */
|
|
188
|
+
premiumExpiresAt: string;
|
|
163
189
|
}
|
|
164
190
|
|
|
165
191
|
export interface UpdateProfileRequest {
|
|
@@ -173,6 +199,14 @@ export interface UpdateProfileRequest {
|
|
|
173
199
|
countryId: string;
|
|
174
200
|
timezone: string;
|
|
175
201
|
socialMedia: CreateSocialMedia[];
|
|
202
|
+
/**
|
|
203
|
+
* Premium-only fields — rejected with FAILED_PRECONDITION when the caller
|
|
204
|
+
* has no active premium. Empty string clears the value.
|
|
205
|
+
*/
|
|
206
|
+
profileColor: string;
|
|
207
|
+
avatarBorderId: string;
|
|
208
|
+
animatedAvatarUrl: string;
|
|
209
|
+
animatedBannerUrl: string;
|
|
176
210
|
}
|
|
177
211
|
|
|
178
212
|
export interface UpdateUserRequest {
|
|
@@ -260,6 +294,298 @@ export interface SubscriptionResponse {
|
|
|
260
294
|
subscribersCount: number;
|
|
261
295
|
}
|
|
262
296
|
|
|
297
|
+
export interface GetMyPremiumRequest {
|
|
298
|
+
userId: string;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
export interface PremiumStateResponse {
|
|
302
|
+
isActive: boolean;
|
|
303
|
+
/** ACTIVE | EXPIRED | CANCELED | empty (never purchased) */
|
|
304
|
+
status: string;
|
|
305
|
+
currentPeriod: PremiumPeriod;
|
|
306
|
+
/** ISO 8601, empty when never purchased */
|
|
307
|
+
startedAt: string;
|
|
308
|
+
/** ISO 8601 */
|
|
309
|
+
expiresAt: string;
|
|
310
|
+
autoRenew: boolean;
|
|
311
|
+
hasSavedPaymentMethod: boolean;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
export interface SetPremiumAutoRenewRequest {
|
|
315
|
+
userId: string;
|
|
316
|
+
enabled: boolean;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* Internal — payments-service hands us the period that was just paid for, plus
|
|
321
|
+
* the YooKassa payment_method id (empty for balance/non-recurring purchases).
|
|
322
|
+
*/
|
|
323
|
+
export interface ActivatePremiumRequest {
|
|
324
|
+
userId: string;
|
|
325
|
+
period: PremiumPeriod;
|
|
326
|
+
/** empty for BALANCE / one-shot */
|
|
327
|
+
paymentMethodId: string;
|
|
328
|
+
/** false = first purchase; true = cron-driven renewal */
|
|
329
|
+
isRenewal: boolean;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
export interface IsPremiumActiveRequest {
|
|
333
|
+
userId: string;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
export interface IsPremiumActiveResponse {
|
|
337
|
+
isActive: boolean;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
export interface AvatarBorder {
|
|
341
|
+
id: string;
|
|
342
|
+
code: string;
|
|
343
|
+
name: string;
|
|
344
|
+
description: string;
|
|
345
|
+
imageUrl: string;
|
|
346
|
+
isAnimated: boolean;
|
|
347
|
+
source: string;
|
|
348
|
+
sortOrder: number;
|
|
349
|
+
isActive: boolean;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
export interface ListAvatarBordersRequest {
|
|
353
|
+
/** admin-only — gateway gates by role */
|
|
354
|
+
includeInactive: boolean;
|
|
355
|
+
/** optional filter */
|
|
356
|
+
source: string;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
export interface ListAvatarBordersResponse {
|
|
360
|
+
items: AvatarBorder[];
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
export interface UpsertAvatarBorderRequest {
|
|
364
|
+
/** empty = create */
|
|
365
|
+
id: string;
|
|
366
|
+
/** required when creating */
|
|
367
|
+
code: string;
|
|
368
|
+
name: string;
|
|
369
|
+
description: string;
|
|
370
|
+
imageUrl: string;
|
|
371
|
+
isAnimated: boolean;
|
|
372
|
+
source: string;
|
|
373
|
+
sortOrder: number;
|
|
374
|
+
isActive: boolean;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
export interface DeleteAvatarBorderRequest {
|
|
378
|
+
id: string;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
export interface DeleteAvatarBorderResponse {
|
|
382
|
+
ok: boolean;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
export interface UpdatePrivacyRequest {
|
|
386
|
+
userId: string;
|
|
387
|
+
hideEmail: boolean;
|
|
388
|
+
hideBalance: boolean;
|
|
389
|
+
hideOnline: boolean;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
export interface UpdateEmailPrefsRequest {
|
|
393
|
+
userId: string;
|
|
394
|
+
emailOnSales: boolean;
|
|
395
|
+
emailOnReviews: boolean;
|
|
396
|
+
emailOnNews: boolean;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
export interface UpdateEmailPrefsResponse {
|
|
400
|
+
emailOnSales: boolean;
|
|
401
|
+
emailOnReviews: boolean;
|
|
402
|
+
emailOnNews: boolean;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
export interface UpdateLocaleRequest {
|
|
406
|
+
userId: string;
|
|
407
|
+
/** "ru" | "en" | ... */
|
|
408
|
+
locale: string;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
export interface UpdateLocaleResponse {
|
|
412
|
+
locale: string;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
export interface SoftDeleteAccountRequest {
|
|
416
|
+
userId: string;
|
|
417
|
+
/** optional, for support/audit */
|
|
418
|
+
reason: string;
|
|
419
|
+
/** 0 → use server default (30) */
|
|
420
|
+
cooldownDays: number;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
export interface SoftDeleteAccountResponse {
|
|
424
|
+
/** ISO 8601 */
|
|
425
|
+
deletedAt: string;
|
|
426
|
+
scheduledForHardDelete: string;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
export interface RestoreAccountRequest {
|
|
430
|
+
userId: string;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
export interface HardDeletePendingRequest {
|
|
434
|
+
/** 0 → default 100 */
|
|
435
|
+
maxBatch: number;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
export interface HardDeletePendingResponse {
|
|
439
|
+
deleted: number;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
export interface ChangePasswordRequest {
|
|
443
|
+
userId: string;
|
|
444
|
+
currentPassword: string;
|
|
445
|
+
newPassword: string;
|
|
446
|
+
/** Optional: revoke all other sessions on success. */
|
|
447
|
+
revokeOtherSessions: boolean;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
export interface BlockUserRequest {
|
|
451
|
+
blockerId: string;
|
|
452
|
+
blockedId: string;
|
|
453
|
+
/** optional */
|
|
454
|
+
reason: string;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
export interface BlockUserResponse {
|
|
458
|
+
blocked: boolean;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
export interface BlockedUserRow {
|
|
462
|
+
id: string;
|
|
463
|
+
username: string;
|
|
464
|
+
avatarUrl: string;
|
|
465
|
+
blockedAt: string;
|
|
466
|
+
reason: string;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
export interface ListBlockedUsersRequest {
|
|
470
|
+
blockerId: string;
|
|
471
|
+
page: number;
|
|
472
|
+
limit: number;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
export interface ListBlockedUsersResponse {
|
|
476
|
+
items: BlockedUserRow[];
|
|
477
|
+
total: number;
|
|
478
|
+
page: number;
|
|
479
|
+
limit: number;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
export interface IsBlockedRequest {
|
|
483
|
+
blockerId: string;
|
|
484
|
+
blockedId: string;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
export interface IsBlockedResponse {
|
|
488
|
+
isBlocked: boolean;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
export interface DataExportRequestRow {
|
|
492
|
+
id: string;
|
|
493
|
+
userId: string;
|
|
494
|
+
/** PENDING | PROCESSING | READY | FAILED */
|
|
495
|
+
status: string;
|
|
496
|
+
fileUrl: string;
|
|
497
|
+
fileSize: number;
|
|
498
|
+
error: string;
|
|
499
|
+
createdAt: string;
|
|
500
|
+
completedAt: string;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
export interface RequestDataExportRequest {
|
|
504
|
+
userId: string;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
export interface ListDataExportsRequest {
|
|
508
|
+
userId: string;
|
|
509
|
+
page: number;
|
|
510
|
+
limit: number;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
export interface ListDataExportsResponse {
|
|
514
|
+
items: DataExportRequestRow[];
|
|
515
|
+
total: number;
|
|
516
|
+
page: number;
|
|
517
|
+
limit: number;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
export interface PickPendingDataExportRequest {
|
|
521
|
+
/** tasks-service polls; returns one PENDING row marked PROCESSING, or empty. */
|
|
522
|
+
Placeholder: boolean;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
export interface CompleteDataExportRequest {
|
|
526
|
+
id: string;
|
|
527
|
+
fileUrl: string;
|
|
528
|
+
fileSize: number;
|
|
529
|
+
/** if set, marks FAILED instead of READY */
|
|
530
|
+
error: string;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
export interface CollectUserExportDataRequest {
|
|
534
|
+
userId: string;
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
export interface CollectUserExportDataResponse {
|
|
538
|
+
/**
|
|
539
|
+
* Opaque JSON-as-string of user-owned data. tasks-service writes it to
|
|
540
|
+
* S3 verbatim. Keeps the schema-specific marshaling private to users-service.
|
|
541
|
+
*/
|
|
542
|
+
payloadJson: string;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
export interface GetAccountSettingsRequest {
|
|
546
|
+
userId: string;
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
export interface AccountSettingsResponse {
|
|
550
|
+
/** Identity */
|
|
551
|
+
id: string;
|
|
552
|
+
username: string;
|
|
553
|
+
email: string;
|
|
554
|
+
fullName: string;
|
|
555
|
+
aboutMe: string;
|
|
556
|
+
avatarUrl: string;
|
|
557
|
+
bannerUrl: string;
|
|
558
|
+
locale: string;
|
|
559
|
+
timezone: string;
|
|
560
|
+
countryId: string;
|
|
561
|
+
createdAt: string;
|
|
562
|
+
/** 2FA */
|
|
563
|
+
twoFactorType: string;
|
|
564
|
+
twoFactorEnabled: boolean;
|
|
565
|
+
backupCodesRemaining: number;
|
|
566
|
+
/** Privacy */
|
|
567
|
+
hideEmail: boolean;
|
|
568
|
+
hideBalance: boolean;
|
|
569
|
+
hideOnline: boolean;
|
|
570
|
+
hideSubscriptions: boolean;
|
|
571
|
+
/** Email prefs */
|
|
572
|
+
emailOnSales: boolean;
|
|
573
|
+
emailOnReviews: boolean;
|
|
574
|
+
emailOnNews: boolean;
|
|
575
|
+
/** Payout defaults */
|
|
576
|
+
payoutMethod: string;
|
|
577
|
+
payoutDetails: string;
|
|
578
|
+
/** Premium snapshot */
|
|
579
|
+
premiumIsActive: boolean;
|
|
580
|
+
premiumStatus: string;
|
|
581
|
+
premiumExpiresAt: string;
|
|
582
|
+
premiumAutoRenew: boolean;
|
|
583
|
+
/** Soft-delete state */
|
|
584
|
+
deletedAt: string;
|
|
585
|
+
scheduledForHardDelete: string;
|
|
586
|
+
socialMedia: SocialMedia[];
|
|
587
|
+
}
|
|
588
|
+
|
|
263
589
|
export const USERS_V1_PACKAGE_NAME = "users.v1";
|
|
264
590
|
|
|
265
591
|
export interface UsersServiceClient {
|
|
@@ -286,6 +612,96 @@ export interface UsersServiceClient {
|
|
|
286
612
|
banUser(request: BanUserRequest): Observable<UserResponse>;
|
|
287
613
|
|
|
288
614
|
unbanUser(request: UnbanUserRequest): Observable<UserResponse>;
|
|
615
|
+
|
|
616
|
+
/**
|
|
617
|
+
* Premium (paid). State lives in users-service; payments-service handles
|
|
618
|
+
* money and calls ActivatePremium (internal) on completion.
|
|
619
|
+
*/
|
|
620
|
+
|
|
621
|
+
getMyPremium(request: GetMyPremiumRequest): Observable<PremiumStateResponse>;
|
|
622
|
+
|
|
623
|
+
setPremiumAutoRenew(request: SetPremiumAutoRenewRequest): Observable<PremiumStateResponse>;
|
|
624
|
+
|
|
625
|
+
/**
|
|
626
|
+
* Internal — InternalServiceGuard. Called by payments-service after a
|
|
627
|
+
* successful premium payment (balance or YooKassa webhook).
|
|
628
|
+
*/
|
|
629
|
+
|
|
630
|
+
activatePremium(request: ActivatePremiumRequest): Observable<PremiumStateResponse>;
|
|
631
|
+
|
|
632
|
+
/** Internal — fast lookup for the commission engine in payments-service. */
|
|
633
|
+
|
|
634
|
+
isPremiumActive(request: IsPremiumActiveRequest): Observable<IsPremiumActiveResponse>;
|
|
635
|
+
|
|
636
|
+
/**
|
|
637
|
+
* Avatar borders (catalog + admin CRUD). Catalog read is public; mutations
|
|
638
|
+
* are admin only (gateway enforces with RolesGuard).
|
|
639
|
+
*/
|
|
640
|
+
|
|
641
|
+
listAvatarBorders(request: ListAvatarBordersRequest): Observable<ListAvatarBordersResponse>;
|
|
642
|
+
|
|
643
|
+
upsertAvatarBorder(request: UpsertAvatarBorderRequest): Observable<AvatarBorder>;
|
|
644
|
+
|
|
645
|
+
deleteAvatarBorder(request: DeleteAvatarBorderRequest): Observable<DeleteAvatarBorderResponse>;
|
|
646
|
+
|
|
647
|
+
/** Account settings — bundled write surface for the UI. */
|
|
648
|
+
|
|
649
|
+
updatePrivacy(request: UpdatePrivacyRequest): Observable<PublicProfileResponse>;
|
|
650
|
+
|
|
651
|
+
updateEmailPrefs(request: UpdateEmailPrefsRequest): Observable<UpdateEmailPrefsResponse>;
|
|
652
|
+
|
|
653
|
+
updateLocale(request: UpdateLocaleRequest): Observable<UpdateLocaleResponse>;
|
|
654
|
+
|
|
655
|
+
/**
|
|
656
|
+
* Soft-delete + restore. Internal AuthService also queries the soft-delete
|
|
657
|
+
* state on login (rejects if deletedAt set).
|
|
658
|
+
*/
|
|
659
|
+
|
|
660
|
+
softDeleteAccount(request: SoftDeleteAccountRequest): Observable<SoftDeleteAccountResponse>;
|
|
661
|
+
|
|
662
|
+
restoreAccount(request: RestoreAccountRequest): Observable<UserResponse>;
|
|
663
|
+
|
|
664
|
+
/** tasks-service cron */
|
|
665
|
+
|
|
666
|
+
hardDeletePending(request: HardDeletePendingRequest): Observable<HardDeletePendingResponse>;
|
|
667
|
+
|
|
668
|
+
/** Blocks */
|
|
669
|
+
|
|
670
|
+
blockUser(request: BlockUserRequest): Observable<BlockUserResponse>;
|
|
671
|
+
|
|
672
|
+
unblockUser(request: BlockUserRequest): Observable<BlockUserResponse>;
|
|
673
|
+
|
|
674
|
+
listBlockedUsers(request: ListBlockedUsersRequest): Observable<ListBlockedUsersResponse>;
|
|
675
|
+
|
|
676
|
+
/** internal lookup */
|
|
677
|
+
|
|
678
|
+
isBlocked(request: IsBlockedRequest): Observable<IsBlockedResponse>;
|
|
679
|
+
|
|
680
|
+
/** Data export */
|
|
681
|
+
|
|
682
|
+
requestDataExport(request: RequestDataExportRequest): Observable<DataExportRequestRow>;
|
|
683
|
+
|
|
684
|
+
listDataExports(request: ListDataExportsRequest): Observable<ListDataExportsResponse>;
|
|
685
|
+
|
|
686
|
+
/** tasks-service */
|
|
687
|
+
|
|
688
|
+
pickPendingDataExport(request: PickPendingDataExportRequest): Observable<DataExportRequestRow>;
|
|
689
|
+
|
|
690
|
+
/** tasks-service */
|
|
691
|
+
|
|
692
|
+
completeDataExport(request: CompleteDataExportRequest): Observable<DataExportRequestRow>;
|
|
693
|
+
|
|
694
|
+
/** tasks-service */
|
|
695
|
+
|
|
696
|
+
collectUserExportData(request: CollectUserExportDataRequest): Observable<CollectUserExportDataResponse>;
|
|
697
|
+
|
|
698
|
+
/** Unified read for the settings page */
|
|
699
|
+
|
|
700
|
+
getAccountSettings(request: GetAccountSettingsRequest): Observable<AccountSettingsResponse>;
|
|
701
|
+
|
|
702
|
+
/** Password — separate from generic createCode/verifyCode reset flow. */
|
|
703
|
+
|
|
704
|
+
changePassword(request: ChangePasswordRequest): Observable<Ok>;
|
|
289
705
|
}
|
|
290
706
|
|
|
291
707
|
export interface UsersServiceController {
|
|
@@ -326,6 +742,136 @@ export interface UsersServiceController {
|
|
|
326
742
|
banUser(request: BanUserRequest): Promise<UserResponse> | Observable<UserResponse> | UserResponse;
|
|
327
743
|
|
|
328
744
|
unbanUser(request: UnbanUserRequest): Promise<UserResponse> | Observable<UserResponse> | UserResponse;
|
|
745
|
+
|
|
746
|
+
/**
|
|
747
|
+
* Premium (paid). State lives in users-service; payments-service handles
|
|
748
|
+
* money and calls ActivatePremium (internal) on completion.
|
|
749
|
+
*/
|
|
750
|
+
|
|
751
|
+
getMyPremium(
|
|
752
|
+
request: GetMyPremiumRequest,
|
|
753
|
+
): Promise<PremiumStateResponse> | Observable<PremiumStateResponse> | PremiumStateResponse;
|
|
754
|
+
|
|
755
|
+
setPremiumAutoRenew(
|
|
756
|
+
request: SetPremiumAutoRenewRequest,
|
|
757
|
+
): Promise<PremiumStateResponse> | Observable<PremiumStateResponse> | PremiumStateResponse;
|
|
758
|
+
|
|
759
|
+
/**
|
|
760
|
+
* Internal — InternalServiceGuard. Called by payments-service after a
|
|
761
|
+
* successful premium payment (balance or YooKassa webhook).
|
|
762
|
+
*/
|
|
763
|
+
|
|
764
|
+
activatePremium(
|
|
765
|
+
request: ActivatePremiumRequest,
|
|
766
|
+
): Promise<PremiumStateResponse> | Observable<PremiumStateResponse> | PremiumStateResponse;
|
|
767
|
+
|
|
768
|
+
/** Internal — fast lookup for the commission engine in payments-service. */
|
|
769
|
+
|
|
770
|
+
isPremiumActive(
|
|
771
|
+
request: IsPremiumActiveRequest,
|
|
772
|
+
): Promise<IsPremiumActiveResponse> | Observable<IsPremiumActiveResponse> | IsPremiumActiveResponse;
|
|
773
|
+
|
|
774
|
+
/**
|
|
775
|
+
* Avatar borders (catalog + admin CRUD). Catalog read is public; mutations
|
|
776
|
+
* are admin only (gateway enforces with RolesGuard).
|
|
777
|
+
*/
|
|
778
|
+
|
|
779
|
+
listAvatarBorders(
|
|
780
|
+
request: ListAvatarBordersRequest,
|
|
781
|
+
): Promise<ListAvatarBordersResponse> | Observable<ListAvatarBordersResponse> | ListAvatarBordersResponse;
|
|
782
|
+
|
|
783
|
+
upsertAvatarBorder(
|
|
784
|
+
request: UpsertAvatarBorderRequest,
|
|
785
|
+
): Promise<AvatarBorder> | Observable<AvatarBorder> | AvatarBorder;
|
|
786
|
+
|
|
787
|
+
deleteAvatarBorder(
|
|
788
|
+
request: DeleteAvatarBorderRequest,
|
|
789
|
+
): Promise<DeleteAvatarBorderResponse> | Observable<DeleteAvatarBorderResponse> | DeleteAvatarBorderResponse;
|
|
790
|
+
|
|
791
|
+
/** Account settings — bundled write surface for the UI. */
|
|
792
|
+
|
|
793
|
+
updatePrivacy(
|
|
794
|
+
request: UpdatePrivacyRequest,
|
|
795
|
+
): Promise<PublicProfileResponse> | Observable<PublicProfileResponse> | PublicProfileResponse;
|
|
796
|
+
|
|
797
|
+
updateEmailPrefs(
|
|
798
|
+
request: UpdateEmailPrefsRequest,
|
|
799
|
+
): Promise<UpdateEmailPrefsResponse> | Observable<UpdateEmailPrefsResponse> | UpdateEmailPrefsResponse;
|
|
800
|
+
|
|
801
|
+
updateLocale(
|
|
802
|
+
request: UpdateLocaleRequest,
|
|
803
|
+
): Promise<UpdateLocaleResponse> | Observable<UpdateLocaleResponse> | UpdateLocaleResponse;
|
|
804
|
+
|
|
805
|
+
/**
|
|
806
|
+
* Soft-delete + restore. Internal AuthService also queries the soft-delete
|
|
807
|
+
* state on login (rejects if deletedAt set).
|
|
808
|
+
*/
|
|
809
|
+
|
|
810
|
+
softDeleteAccount(
|
|
811
|
+
request: SoftDeleteAccountRequest,
|
|
812
|
+
): Promise<SoftDeleteAccountResponse> | Observable<SoftDeleteAccountResponse> | SoftDeleteAccountResponse;
|
|
813
|
+
|
|
814
|
+
restoreAccount(request: RestoreAccountRequest): Promise<UserResponse> | Observable<UserResponse> | UserResponse;
|
|
815
|
+
|
|
816
|
+
/** tasks-service cron */
|
|
817
|
+
|
|
818
|
+
hardDeletePending(
|
|
819
|
+
request: HardDeletePendingRequest,
|
|
820
|
+
): Promise<HardDeletePendingResponse> | Observable<HardDeletePendingResponse> | HardDeletePendingResponse;
|
|
821
|
+
|
|
822
|
+
/** Blocks */
|
|
823
|
+
|
|
824
|
+
blockUser(request: BlockUserRequest): Promise<BlockUserResponse> | Observable<BlockUserResponse> | BlockUserResponse;
|
|
825
|
+
|
|
826
|
+
unblockUser(
|
|
827
|
+
request: BlockUserRequest,
|
|
828
|
+
): Promise<BlockUserResponse> | Observable<BlockUserResponse> | BlockUserResponse;
|
|
829
|
+
|
|
830
|
+
listBlockedUsers(
|
|
831
|
+
request: ListBlockedUsersRequest,
|
|
832
|
+
): Promise<ListBlockedUsersResponse> | Observable<ListBlockedUsersResponse> | ListBlockedUsersResponse;
|
|
833
|
+
|
|
834
|
+
/** internal lookup */
|
|
835
|
+
|
|
836
|
+
isBlocked(request: IsBlockedRequest): Promise<IsBlockedResponse> | Observable<IsBlockedResponse> | IsBlockedResponse;
|
|
837
|
+
|
|
838
|
+
/** Data export */
|
|
839
|
+
|
|
840
|
+
requestDataExport(
|
|
841
|
+
request: RequestDataExportRequest,
|
|
842
|
+
): Promise<DataExportRequestRow> | Observable<DataExportRequestRow> | DataExportRequestRow;
|
|
843
|
+
|
|
844
|
+
listDataExports(
|
|
845
|
+
request: ListDataExportsRequest,
|
|
846
|
+
): Promise<ListDataExportsResponse> | Observable<ListDataExportsResponse> | ListDataExportsResponse;
|
|
847
|
+
|
|
848
|
+
/** tasks-service */
|
|
849
|
+
|
|
850
|
+
pickPendingDataExport(
|
|
851
|
+
request: PickPendingDataExportRequest,
|
|
852
|
+
): Promise<DataExportRequestRow> | Observable<DataExportRequestRow> | DataExportRequestRow;
|
|
853
|
+
|
|
854
|
+
/** tasks-service */
|
|
855
|
+
|
|
856
|
+
completeDataExport(
|
|
857
|
+
request: CompleteDataExportRequest,
|
|
858
|
+
): Promise<DataExportRequestRow> | Observable<DataExportRequestRow> | DataExportRequestRow;
|
|
859
|
+
|
|
860
|
+
/** tasks-service */
|
|
861
|
+
|
|
862
|
+
collectUserExportData(
|
|
863
|
+
request: CollectUserExportDataRequest,
|
|
864
|
+
): Promise<CollectUserExportDataResponse> | Observable<CollectUserExportDataResponse> | CollectUserExportDataResponse;
|
|
865
|
+
|
|
866
|
+
/** Unified read for the settings page */
|
|
867
|
+
|
|
868
|
+
getAccountSettings(
|
|
869
|
+
request: GetAccountSettingsRequest,
|
|
870
|
+
): Promise<AccountSettingsResponse> | Observable<AccountSettingsResponse> | AccountSettingsResponse;
|
|
871
|
+
|
|
872
|
+
/** Password — separate from generic createCode/verifyCode reset flow. */
|
|
873
|
+
|
|
874
|
+
changePassword(request: ChangePasswordRequest): Promise<Ok> | Observable<Ok> | Ok;
|
|
329
875
|
}
|
|
330
876
|
|
|
331
877
|
export function UsersServiceControllerMethods() {
|
|
@@ -343,6 +889,30 @@ export function UsersServiceControllerMethods() {
|
|
|
343
889
|
"deleteSubscription",
|
|
344
890
|
"banUser",
|
|
345
891
|
"unbanUser",
|
|
892
|
+
"getMyPremium",
|
|
893
|
+
"setPremiumAutoRenew",
|
|
894
|
+
"activatePremium",
|
|
895
|
+
"isPremiumActive",
|
|
896
|
+
"listAvatarBorders",
|
|
897
|
+
"upsertAvatarBorder",
|
|
898
|
+
"deleteAvatarBorder",
|
|
899
|
+
"updatePrivacy",
|
|
900
|
+
"updateEmailPrefs",
|
|
901
|
+
"updateLocale",
|
|
902
|
+
"softDeleteAccount",
|
|
903
|
+
"restoreAccount",
|
|
904
|
+
"hardDeletePending",
|
|
905
|
+
"blockUser",
|
|
906
|
+
"unblockUser",
|
|
907
|
+
"listBlockedUsers",
|
|
908
|
+
"isBlocked",
|
|
909
|
+
"requestDataExport",
|
|
910
|
+
"listDataExports",
|
|
911
|
+
"pickPendingDataExport",
|
|
912
|
+
"completeDataExport",
|
|
913
|
+
"collectUserExportData",
|
|
914
|
+
"getAccountSettings",
|
|
915
|
+
"changePassword",
|
|
346
916
|
];
|
|
347
917
|
for (const method of grpcMethods) {
|
|
348
918
|
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
|