@aepstore-dev/contracts 1.48.0 → 1.50.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/users.d.ts CHANGED
@@ -35,6 +35,8 @@ export interface User {
35
35
  /** ISO 8601, empty = permanent/none */
36
36
  bannedUntil: string;
37
37
  banReason: string;
38
+ fullName: string;
39
+ avatarBorderImageUrl: string;
38
40
  }
39
41
  export interface BanUserRequest {
40
42
  adminId: string;
@@ -118,6 +120,8 @@ export interface ProfileUser {
118
120
  id: string;
119
121
  username: string;
120
122
  avatarUrl: string;
123
+ fullName: string;
124
+ avatarBorderImageUrl: string;
121
125
  }
122
126
  export interface GetPublicProfileRequest {
123
127
  username: string;
@@ -162,23 +166,33 @@ export interface PublicProfileResponse {
162
166
  }
163
167
  export interface UpdateProfileRequest {
164
168
  userId: string;
165
- fullName: string;
166
- aboutMe: string;
167
- newsletterSubscription: boolean;
168
- hideSubscriptions: boolean;
169
- avatarUrl: string;
170
- bannerUrl: string;
171
- countryId: string;
172
- timezone: string;
169
+ /**
170
+ * Every editable field is `optional` so the wire format preserves the
171
+ * "not set" state. A partial patch from the client (e.g. only avatarUrl)
172
+ * no longer accidentally wipes the other columns to proto3 defaults.
173
+ */
174
+ fullName?: string | undefined;
175
+ aboutMe?: string | undefined;
176
+ newsletterSubscription?: boolean | undefined;
177
+ hideSubscriptions?: boolean | undefined;
178
+ avatarUrl?: string | undefined;
179
+ bannerUrl?: string | undefined;
180
+ countryId?: string | undefined;
181
+ timezone?: string | undefined;
182
+ /**
183
+ * social_media remains repeated (an empty list is still a meaningful
184
+ * "replace with empty"); the gateway omits the field entirely when the
185
+ * client didn't send it so partial patches don't clear social links.
186
+ */
173
187
  socialMedia: CreateSocialMedia[];
174
188
  /**
175
189
  * Premium-only fields — rejected with FAILED_PRECONDITION when the caller
176
- * has no active premium. Empty string clears the value.
190
+ * has no active premium. `''` = no change, `__clear__` = explicit reset.
177
191
  */
178
- profileColor: string;
179
- avatarBorderId: string;
180
- animatedAvatarUrl: string;
181
- animatedBannerUrl: string;
192
+ profileColor?: string | undefined;
193
+ avatarBorderId?: string | undefined;
194
+ animatedAvatarUrl?: string | undefined;
195
+ animatedBannerUrl?: string | undefined;
182
196
  }
183
197
  export interface UpdateUserRequest {
184
198
  userId: string;
package/gen/users.ts CHANGED
@@ -48,6 +48,8 @@ export interface User {
48
48
  /** ISO 8601, empty = permanent/none */
49
49
  bannedUntil: string;
50
50
  banReason: string;
51
+ fullName: string;
52
+ avatarBorderImageUrl: string;
51
53
  }
52
54
 
53
55
  export interface BanUserRequest {
@@ -143,6 +145,8 @@ export interface ProfileUser {
143
145
  id: string;
144
146
  username: string;
145
147
  avatarUrl: string;
148
+ fullName: string;
149
+ avatarBorderImageUrl: string;
146
150
  }
147
151
 
148
152
  export interface GetPublicProfileRequest {
@@ -190,23 +194,35 @@ export interface PublicProfileResponse {
190
194
 
191
195
  export interface UpdateProfileRequest {
192
196
  userId: string;
193
- fullName: string;
194
- aboutMe: string;
195
- newsletterSubscription: boolean;
196
- hideSubscriptions: boolean;
197
- avatarUrl: string;
198
- bannerUrl: string;
199
- countryId: string;
200
- timezone: string;
197
+ /**
198
+ * Every editable field is `optional` so the wire format preserves the
199
+ * "not set" state. A partial patch from the client (e.g. only avatarUrl)
200
+ * no longer accidentally wipes the other columns to proto3 defaults.
201
+ */
202
+ fullName?: string | undefined;
203
+ aboutMe?: string | undefined;
204
+ newsletterSubscription?: boolean | undefined;
205
+ hideSubscriptions?: boolean | undefined;
206
+ avatarUrl?: string | undefined;
207
+ bannerUrl?: string | undefined;
208
+ countryId?: string | undefined;
209
+ timezone?:
210
+ | string
211
+ | undefined;
212
+ /**
213
+ * social_media remains repeated (an empty list is still a meaningful
214
+ * "replace with empty"); the gateway omits the field entirely when the
215
+ * client didn't send it so partial patches don't clear social links.
216
+ */
201
217
  socialMedia: CreateSocialMedia[];
202
218
  /**
203
219
  * Premium-only fields — rejected with FAILED_PRECONDITION when the caller
204
- * has no active premium. Empty string clears the value.
220
+ * has no active premium. `''` = no change, `__clear__` = explicit reset.
205
221
  */
206
- profileColor: string;
207
- avatarBorderId: string;
208
- animatedAvatarUrl: string;
209
- animatedBannerUrl: string;
222
+ profileColor?: string | undefined;
223
+ avatarBorderId?: string | undefined;
224
+ animatedAvatarUrl?: string | undefined;
225
+ animatedBannerUrl?: string | undefined;
210
226
  }
211
227
 
212
228
  export interface UpdateUserRequest {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aepstore-dev/contracts",
3
- "version": "1.48.0",
3
+ "version": "1.50.0",
4
4
  "description": "Protobuf definitions for aepstore microservices",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
package/proto/users.proto CHANGED
@@ -83,6 +83,8 @@ message User {
83
83
  bool is_banned = 9;
84
84
  string banned_until = 10; // ISO 8601, empty = permanent/none
85
85
  string ban_reason = 11;
86
+ string full_name = 12;
87
+ string avatar_border_image_url = 13;
86
88
  }
87
89
 
88
90
  message BanUserRequest {
@@ -172,6 +174,8 @@ message ProfileUser {
172
174
  string id = 1;
173
175
  string username = 2;
174
176
  string avatar_url = 3;
177
+ string full_name = 4;
178
+ string avatar_border_image_url = 5;
175
179
  }
176
180
 
177
181
  // =================================================================
@@ -221,21 +225,27 @@ message PublicProfileResponse {
221
225
 
222
226
  message UpdateProfileRequest {
223
227
  string user_id = 1;
224
- string full_name = 2;
225
- string about_me = 3;
226
- bool newsletter_subscription = 4;
227
- bool hide_subscriptions = 5;
228
- string avatar_url = 6;
229
- string banner_url = 7;
230
- string country_id = 8;
231
- string timezone = 9;
228
+ // Every editable field is `optional` so the wire format preserves the
229
+ // "not set" state. A partial patch from the client (e.g. only avatarUrl)
230
+ // no longer accidentally wipes the other columns to proto3 defaults.
231
+ optional string full_name = 2;
232
+ optional string about_me = 3;
233
+ optional bool newsletter_subscription = 4;
234
+ optional bool hide_subscriptions = 5;
235
+ optional string avatar_url = 6;
236
+ optional string banner_url = 7;
237
+ optional string country_id = 8;
238
+ optional string timezone = 9;
239
+ // social_media remains repeated (an empty list is still a meaningful
240
+ // "replace with empty"); the gateway omits the field entirely when the
241
+ // client didn't send it so partial patches don't clear social links.
232
242
  repeated CreateSocialMedia social_media = 10;
233
243
  // Premium-only fields — rejected with FAILED_PRECONDITION when the caller
234
- // has no active premium. Empty string clears the value.
235
- string profile_color = 11;
236
- string avatar_border_id = 12;
237
- string animated_avatar_url = 13;
238
- string animated_banner_url = 14;
244
+ // has no active premium. `''` = no change, `__clear__` = explicit reset.
245
+ optional string profile_color = 11;
246
+ optional string avatar_border_id = 12;
247
+ optional string animated_avatar_url = 13;
248
+ optional string animated_banner_url = 14;
239
249
  }
240
250
 
241
251
  // =================================================================