@borealise/api 1.0.8 → 1.1.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/dist/index.d.mts CHANGED
@@ -102,8 +102,9 @@ interface AuthUser {
102
102
  globalRole: string;
103
103
  xp: number;
104
104
  level: number;
105
- flags?: number;
106
- subscriptionType?: string;
105
+ flags?: number | null;
106
+ subscriptionType?: string | null;
107
+ subscriptionMonths?: number;
107
108
  subscriptionExpiresAt?: string | null;
108
109
  emailVerified?: boolean;
109
110
  createdAt?: string;
@@ -161,6 +162,7 @@ interface UpdateProfileData {
161
162
  displayName?: string;
162
163
  bio?: string;
163
164
  }
165
+ type GlobalRole = 'user' | 'moderator' | 'admin' | 'owner';
164
166
  interface UserResponse {
165
167
  success: boolean;
166
168
  data: {
@@ -176,6 +178,11 @@ declare class UserResource extends ApiResource<User> {
176
178
  success: boolean;
177
179
  message: string;
178
180
  }>>;
181
+ updateRole(id: number, role: GlobalRole): Promise<ApiResponse<UserResponse>>;
182
+ disable(id: number): Promise<ApiResponse<{
183
+ success: boolean;
184
+ data: null;
185
+ }>>;
179
186
  }
180
187
  declare const userResource: UserResource;
181
188
 
@@ -264,9 +271,49 @@ interface RoomUserState {
264
271
  xp: number;
265
272
  bio: string | null;
266
273
  globalRole: string;
274
+ flags?: number | null;
267
275
  role: RoomRole;
276
+ subscriptionType?: string | null;
277
+ subscriptionMonths?: number;
268
278
  joinedAt: number;
269
279
  }
280
+ interface RoomBan {
281
+ id: number;
282
+ userId: number;
283
+ modById: number;
284
+ reason: string | null;
285
+ duration: number | null;
286
+ expiresAt: string | null;
287
+ createdAt: string;
288
+ username: string;
289
+ displayName: string | null;
290
+ }
291
+ interface RoomBansResponse {
292
+ success: boolean;
293
+ data: {
294
+ bans: RoomBan[];
295
+ };
296
+ }
297
+ interface ModerateUserData {
298
+ reason?: string;
299
+ duration?: number;
300
+ }
301
+ interface BanResponse {
302
+ success: boolean;
303
+ data: {
304
+ userId: number;
305
+ bannedUntil: string | null;
306
+ permanent: boolean;
307
+ };
308
+ }
309
+ interface MuteResponse {
310
+ success: boolean;
311
+ data: {
312
+ userId: number;
313
+ mutedUntil: string | undefined;
314
+ duration: number;
315
+ };
316
+ }
270
317
  interface BoothDJ {
271
318
  userId: number;
272
319
  username: string;
@@ -357,11 +404,33 @@ declare class RoomResource extends ApiResource<Room> {
357
404
  success: boolean;
358
405
  }>>;
359
406
  getStaff(slug: string): Promise<ApiResponse<RoomStaffResponse>>;
360
- updateStaffRole(slug: string, userId: number, role: RoomRole): Promise<ApiResponse<{
407
+ getBans(slug: string): Promise<ApiResponse<RoomBansResponse>>;
408
+ updateUserRole(slug: string, userId: number, role: RoomRole): Promise<ApiResponse<{
409
+ success: boolean;
410
+ data: {
411
+ userId: number;
412
+ role: RoomRole;
413
+ };
414
+ }>>;
415
+ ban(slug: string, userId: number, data?: ModerateUserData): Promise<ApiResponse<BanResponse>>;
416
+ unban(slug: string, userId: number): Promise<ApiResponse<{
361
417
  success: boolean;
418
+ data: {
419
+ userId: number;
420
+ };
362
421
  }>>;
363
- removeStaff(slug: string, userId: number): Promise<ApiResponse<{
422
+ mute(slug: string, userId: number, data?: ModerateUserData): Promise<ApiResponse<MuteResponse>>;
423
+ unmute(slug: string, userId: number): Promise<ApiResponse<{
364
424
  success: boolean;
425
+ data: {
426
+ userId: number;
427
+ };
428
+ }>>;
429
+ kick(slug: string, userId: number): Promise<ApiResponse<{
430
+ success: boolean;
431
+ data: {
432
+ userId: number;
433
+ };
365
434
  }>>;
366
435
  join(slug: string): Promise<ApiResponse<JoinRoomResponse>>;
367
436
  leave(slug: string): Promise<ApiResponse<{
@@ -414,10 +483,10 @@ declare const roomResource: RoomResource;
414
483
 
415
484
  interface ChatMessage {
416
485
  id: string;
417
- roomId: number;
418
- userId: number;
486
+ room_id: number;
487
+ user_id: number;
419
488
  username: string;
420
- displayName: string | null;
489
+ display_name: string | null;
421
490
  role: RoomRole;
422
491
  content: string;
423
492
  timestamp: number;
@@ -444,6 +513,7 @@ declare class ChatResource extends ApiResource<ChatMessage> {
444
513
  getMessages(slug: string, before?: string, limit?: number): Promise<ApiResponse<ChatMessagesResponse>>;
445
514
  deleteMessage(slug: string, messageId: string): Promise<ApiResponse<{
446
515
  success: boolean;
516
+ data: null;
447
517
  }>>;
448
518
  }
449
519
  declare const chatResource: ChatResource;
@@ -648,8 +718,11 @@ declare class SubscriptionResource extends ApiResource {
648
718
  data: SubscriptionStatus;
649
719
  }>>;
650
720
  createIntent(plan: SubscriptionPlan): Promise<ApiResponse<CreateIntentResponse>>;
721
+ cancelIntent(subscriptionId: string): Promise<ApiResponse<{
722
+ success: boolean;
723
+ }>>;
651
724
  createPortal(): Promise<ApiResponse<PortalResponse>>;
652
725
  }
653
726
  declare const subscriptionResource: SubscriptionResource;
654
727
 
655
- export { type AddMediaData, Api, type ApiConfig, ApiError, ApiResource, type ApiResponse, AuthResource, type AuthResponse, type AuthUser, type AvatarCatalogItem, type AvatarCatalogResponse, type AvatarUnlockType, type BackendErrorResponse, type BoothDJ, type BoothMedia, type BoothResponse, type BoothState, type ChatMessage, type ChatMessageResponse, type ChatMessagesResponse, ChatResource, type CreateIntentResponse, type CreateRoomData, type EquipAvatarData, type FeaturedRoomsResponse, type GrabResponse, type ImportPlaylistData, type ImportPlaylistResponse, type ImportResult, type JoinRoomResponse, Logger, type LoginCredentials, type MeResponse, type MediaItem, type MediaItemResponse, type MediaSearchResult, type MediaSource, type PaginatedResponse, type Playlist, PlaylistResource, type PlaylistResponse, type PlaylistsResponse, type PortalResponse, type RefreshResponse, type RegisterData, type ResourceOptions, type Room, type RoomMember, RoomResource, type RoomResponse, type RoomRole, type RoomStaffResponse, type RoomUserState, type RoomsResponse, type SendMessageData, ShopResource, type ShuffleResponse, type SoundCloudSearchResponse, type SoundCloudTrackResponse, SourceResource, type SubscriptionPlan, SubscriptionResource, type SubscriptionStatus, type UpdateProfileData, type UpdateRoomData, type User, UserResource, type UserResponse, type VoteResponse, type WaitlistResponse, type WaitlistUser, type YouTubeSearchResponse, type YouTubeVideoResponse, authResource, chatResource, playlistResource, roomResource, shopResource, sourceResource, subscriptionResource, userResource };
728
+ export { type AddMediaData, Api, type ApiConfig, ApiError, ApiResource, type ApiResponse, AuthResource, type AuthResponse, type AuthUser, type AvatarCatalogItem, type AvatarCatalogResponse, type AvatarUnlockType, type BackendErrorResponse, type BanResponse, type BoothDJ, type BoothMedia, type BoothResponse, type BoothState, type ChatMessage, type ChatMessageResponse, type ChatMessagesResponse, ChatResource, type CreateIntentResponse, type CreateRoomData, type EquipAvatarData, type FeaturedRoomsResponse, type GlobalRole, type GrabResponse, type ImportPlaylistData, type ImportPlaylistResponse, type ImportResult, type JoinRoomResponse, Logger, type LoginCredentials, type MeResponse, type MediaItem, type MediaItemResponse, type MediaSearchResult, type MediaSource, type ModerateUserData, type MuteResponse, type PaginatedResponse, type Playlist, PlaylistResource, type PlaylistResponse, type PlaylistsResponse, type PortalResponse, type RefreshResponse, type RegisterData, type ResourceOptions, type Room, type RoomBan, type RoomBansResponse, type RoomMember, RoomResource, type RoomResponse, type RoomRole, type RoomStaffResponse, type RoomUserState, type RoomsResponse, type SendMessageData, ShopResource, type ShuffleResponse, type SoundCloudSearchResponse, type SoundCloudTrackResponse, SourceResource, type SubscriptionPlan, SubscriptionResource, type SubscriptionStatus, type UpdateProfileData, type UpdateRoomData, type User, UserResource, type UserResponse, type VoteResponse, type WaitlistResponse, type WaitlistUser, type YouTubeSearchResponse, type YouTubeVideoResponse, authResource, chatResource, playlistResource, roomResource, shopResource, sourceResource, subscriptionResource, userResource };
package/dist/index.d.ts CHANGED
@@ -102,8 +102,9 @@ interface AuthUser {
102
102
  globalRole: string;
103
103
  xp: number;
104
104
  level: number;
105
- flags?: number;
106
- subscriptionType?: string;
105
+ flags?: number | null;
106
+ subscriptionType?: string | null;
107
+ subscriptionMonths?: number;
107
108
  subscriptionExpiresAt?: string | null;
108
109
  emailVerified?: boolean;
109
110
  createdAt?: string;
@@ -161,6 +162,7 @@ interface UpdateProfileData {
161
162
  displayName?: string;
162
163
  bio?: string;
163
164
  }
165
+ type GlobalRole = 'user' | 'moderator' | 'admin' | 'owner';
164
166
  interface UserResponse {
165
167
  success: boolean;
166
168
  data: {
@@ -176,6 +178,11 @@ declare class UserResource extends ApiResource<User> {
176
178
  success: boolean;
177
179
  message: string;
178
180
  }>>;
181
+ updateRole(id: number, role: GlobalRole): Promise<ApiResponse<UserResponse>>;
182
+ disable(id: number): Promise<ApiResponse<{
183
+ success: boolean;
184
+ data: null;
185
+ }>>;
179
186
  }
180
187
  declare const userResource: UserResource;
181
188
 
@@ -264,9 +271,49 @@ interface RoomUserState {
264
271
  xp: number;
265
272
  bio: string | null;
266
273
  globalRole: string;
274
+ flags?: number | null;
267
275
  role: RoomRole;
276
+ subscriptionType?: string | null;
277
+ subscriptionMonths?: number;
268
278
  joinedAt: number;
269
279
  }
280
+ interface RoomBan {
281
+ id: number;
282
+ userId: number;
283
+ modById: number;
284
+ reason: string | null;
285
+ duration: number | null;
286
+ expiresAt: string | null;
287
+ createdAt: string;
288
+ username: string;
289
+ displayName: string | null;
290
+ }
291
+ interface RoomBansResponse {
292
+ success: boolean;
293
+ data: {
294
+ bans: RoomBan[];
295
+ };
296
+ }
297
+ interface ModerateUserData {
298
+ reason?: string;
299
+ duration?: number;
300
+ }
301
+ interface BanResponse {
302
+ success: boolean;
303
+ data: {
304
+ userId: number;
305
+ bannedUntil: string | null;
306
+ permanent: boolean;
307
+ };
308
+ }
309
+ interface MuteResponse {
310
+ success: boolean;
311
+ data: {
312
+ userId: number;
313
+ mutedUntil: string | undefined;
314
+ duration: number;
315
+ };
316
+ }
270
317
  interface BoothDJ {
271
318
  userId: number;
272
319
  username: string;
@@ -357,11 +404,33 @@ declare class RoomResource extends ApiResource<Room> {
357
404
  success: boolean;
358
405
  }>>;
359
406
  getStaff(slug: string): Promise<ApiResponse<RoomStaffResponse>>;
360
- updateStaffRole(slug: string, userId: number, role: RoomRole): Promise<ApiResponse<{
407
+ getBans(slug: string): Promise<ApiResponse<RoomBansResponse>>;
408
+ updateUserRole(slug: string, userId: number, role: RoomRole): Promise<ApiResponse<{
409
+ success: boolean;
410
+ data: {
411
+ userId: number;
412
+ role: RoomRole;
413
+ };
414
+ }>>;
415
+ ban(slug: string, userId: number, data?: ModerateUserData): Promise<ApiResponse<BanResponse>>;
416
+ unban(slug: string, userId: number): Promise<ApiResponse<{
361
417
  success: boolean;
418
+ data: {
419
+ userId: number;
420
+ };
362
421
  }>>;
363
- removeStaff(slug: string, userId: number): Promise<ApiResponse<{
422
+ mute(slug: string, userId: number, data?: ModerateUserData): Promise<ApiResponse<MuteResponse>>;
423
+ unmute(slug: string, userId: number): Promise<ApiResponse<{
364
424
  success: boolean;
425
+ data: {
426
+ userId: number;
427
+ };
428
+ }>>;
429
+ kick(slug: string, userId: number): Promise<ApiResponse<{
430
+ success: boolean;
431
+ data: {
432
+ userId: number;
433
+ };
365
434
  }>>;
366
435
  join(slug: string): Promise<ApiResponse<JoinRoomResponse>>;
367
436
  leave(slug: string): Promise<ApiResponse<{
@@ -414,10 +483,10 @@ declare const roomResource: RoomResource;
414
483
 
415
484
  interface ChatMessage {
416
485
  id: string;
417
- roomId: number;
418
- userId: number;
486
+ room_id: number;
487
+ user_id: number;
419
488
  username: string;
420
- displayName: string | null;
489
+ display_name: string | null;
421
490
  role: RoomRole;
422
491
  content: string;
423
492
  timestamp: number;
@@ -444,6 +513,7 @@ declare class ChatResource extends ApiResource<ChatMessage> {
444
513
  getMessages(slug: string, before?: string, limit?: number): Promise<ApiResponse<ChatMessagesResponse>>;
445
514
  deleteMessage(slug: string, messageId: string): Promise<ApiResponse<{
446
515
  success: boolean;
516
+ data: null;
447
517
  }>>;
448
518
  }
449
519
  declare const chatResource: ChatResource;
@@ -648,8 +718,11 @@ declare class SubscriptionResource extends ApiResource {
648
718
  data: SubscriptionStatus;
649
719
  }>>;
650
720
  createIntent(plan: SubscriptionPlan): Promise<ApiResponse<CreateIntentResponse>>;
721
+ cancelIntent(subscriptionId: string): Promise<ApiResponse<{
722
+ success: boolean;
723
+ }>>;
651
724
  createPortal(): Promise<ApiResponse<PortalResponse>>;
652
725
  }
653
726
  declare const subscriptionResource: SubscriptionResource;
654
727
 
655
- export { type AddMediaData, Api, type ApiConfig, ApiError, ApiResource, type ApiResponse, AuthResource, type AuthResponse, type AuthUser, type AvatarCatalogItem, type AvatarCatalogResponse, type AvatarUnlockType, type BackendErrorResponse, type BoothDJ, type BoothMedia, type BoothResponse, type BoothState, type ChatMessage, type ChatMessageResponse, type ChatMessagesResponse, ChatResource, type CreateIntentResponse, type CreateRoomData, type EquipAvatarData, type FeaturedRoomsResponse, type GrabResponse, type ImportPlaylistData, type ImportPlaylistResponse, type ImportResult, type JoinRoomResponse, Logger, type LoginCredentials, type MeResponse, type MediaItem, type MediaItemResponse, type MediaSearchResult, type MediaSource, type PaginatedResponse, type Playlist, PlaylistResource, type PlaylistResponse, type PlaylistsResponse, type PortalResponse, type RefreshResponse, type RegisterData, type ResourceOptions, type Room, type RoomMember, RoomResource, type RoomResponse, type RoomRole, type RoomStaffResponse, type RoomUserState, type RoomsResponse, type SendMessageData, ShopResource, type ShuffleResponse, type SoundCloudSearchResponse, type SoundCloudTrackResponse, SourceResource, type SubscriptionPlan, SubscriptionResource, type SubscriptionStatus, type UpdateProfileData, type UpdateRoomData, type User, UserResource, type UserResponse, type VoteResponse, type WaitlistResponse, type WaitlistUser, type YouTubeSearchResponse, type YouTubeVideoResponse, authResource, chatResource, playlistResource, roomResource, shopResource, sourceResource, subscriptionResource, userResource };
728
+ export { type AddMediaData, Api, type ApiConfig, ApiError, ApiResource, type ApiResponse, AuthResource, type AuthResponse, type AuthUser, type AvatarCatalogItem, type AvatarCatalogResponse, type AvatarUnlockType, type BackendErrorResponse, type BanResponse, type BoothDJ, type BoothMedia, type BoothResponse, type BoothState, type ChatMessage, type ChatMessageResponse, type ChatMessagesResponse, ChatResource, type CreateIntentResponse, type CreateRoomData, type EquipAvatarData, type FeaturedRoomsResponse, type GlobalRole, type GrabResponse, type ImportPlaylistData, type ImportPlaylistResponse, type ImportResult, type JoinRoomResponse, Logger, type LoginCredentials, type MeResponse, type MediaItem, type MediaItemResponse, type MediaSearchResult, type MediaSource, type ModerateUserData, type MuteResponse, type PaginatedResponse, type Playlist, PlaylistResource, type PlaylistResponse, type PlaylistsResponse, type PortalResponse, type RefreshResponse, type RegisterData, type ResourceOptions, type Room, type RoomBan, type RoomBansResponse, type RoomMember, RoomResource, type RoomResponse, type RoomRole, type RoomStaffResponse, type RoomUserState, type RoomsResponse, type SendMessageData, ShopResource, type ShuffleResponse, type SoundCloudSearchResponse, type SoundCloudTrackResponse, SourceResource, type SubscriptionPlan, SubscriptionResource, type SubscriptionStatus, type UpdateProfileData, type UpdateRoomData, type User, UserResource, type UserResponse, type VoteResponse, type WaitlistResponse, type WaitlistUser, type YouTubeSearchResponse, type YouTubeVideoResponse, authResource, chatResource, playlistResource, roomResource, shopResource, sourceResource, subscriptionResource, userResource };
package/dist/index.js CHANGED
@@ -363,6 +363,17 @@ var UserResource = class extends ApiResource {
363
363
  async deleteAccount() {
364
364
  return this.api.delete(`${this.endpoint}/me`);
365
365
  }
366
+ // ============================================
367
+ // Admin methods
368
+ // ============================================
369
+ // PATCH /api/admin/users/:id/role
370
+ async updateRole(id, role) {
371
+ return this.api.patch(`/api/admin/users/${id}/role`, { role });
372
+ }
373
+ // POST /api/admin/users/:id/disable
374
+ async disable(id) {
375
+ return this.api.post(`/api/admin/users/${id}/disable`);
376
+ }
366
377
  };
367
378
  var userResource = new UserResource();
368
379
 
@@ -400,13 +411,45 @@ var RoomResource = class extends ApiResource {
400
411
  async getStaff(slug) {
401
412
  return this.get(`${slug}/staff`);
402
413
  }
403
- // PUT /api/rooms/:slug/staff/:userId - Update staff role
404
- async updateStaffRole(slug, userId, role) {
405
- return this.api.put(`${this.endpoint}/${slug}/staff/${userId}`, { role });
414
+ // ============================================
415
+ // Moderation methods
416
+ // ============================================
417
+ // GET /api/rooms/:slug/bans
418
+ async getBans(slug) {
419
+ return this.get(`${slug}/bans`);
420
+ }
421
+ // PATCH /api/rooms/:slug/users/:userId/role
422
+ async updateUserRole(slug, userId, role) {
423
+ return this.api.patch(
424
+ `${this.endpoint}/${slug}/users/${userId}/role`,
425
+ { role }
426
+ );
406
427
  }
407
- // DELETE /api/rooms/:slug/staff/:userId - Remove staff
408
- async removeStaff(slug, userId) {
409
- return this.api.delete(`${this.endpoint}/${slug}/staff/${userId}`);
428
+ // POST /api/rooms/:slug/users/:userId/ban
429
+ async ban(slug, userId, data) {
430
+ return this.api.post(`${this.endpoint}/${slug}/users/${userId}/ban`, data || {});
431
+ }
432
+ // DELETE /api/rooms/:slug/users/:userId/ban
433
+ async unban(slug, userId) {
434
+ return this.api.delete(
435
+ `${this.endpoint}/${slug}/users/${userId}/ban`
436
+ );
437
+ }
438
+ // POST /api/rooms/:slug/users/:userId/mute
439
+ async mute(slug, userId, data) {
440
+ return this.api.post(`${this.endpoint}/${slug}/users/${userId}/mute`, data || {});
441
+ }
442
+ // DELETE /api/rooms/:slug/users/:userId/mute
443
+ async unmute(slug, userId) {
444
+ return this.api.delete(
445
+ `${this.endpoint}/${slug}/users/${userId}/mute`
446
+ );
447
+ }
448
+ // POST /api/rooms/:slug/users/:userId/kick
449
+ async kick(slug, userId) {
450
+ return this.api.post(
451
+ `${this.endpoint}/${slug}/users/${userId}/kick`
452
+ );
410
453
  }
411
454
  // POST /api/rooms/:slug/join - Join a room (session-based)
412
455
  async join(slug) {
@@ -458,13 +501,13 @@ var RoomResource = class extends ApiResource {
458
501
  async skipTrack(slug, options) {
459
502
  return this.post(`${slug}/booth/skip`, options || {});
460
503
  }
461
- // POST /api/rooms/:slug/vote
504
+ // POST /api/rooms/:slug/booth/vote
462
505
  async vote(slug, type) {
463
- return this.post(`${slug}/vote`, { type });
506
+ return this.post(`${slug}/booth/vote`, { type });
464
507
  }
465
- // POST /api/rooms/:slug/grab
508
+ // POST /api/rooms/:slug/booth/grab
466
509
  async grabTrack(slug, playlistId) {
467
- return this.post(`${slug}/grab`, playlistId ? { playlistId } : {});
510
+ return this.post(`${slug}/booth/grab`, playlistId ? { playlistId } : {});
468
511
  }
469
512
  };
470
513
  var roomResource = new RoomResource();
@@ -644,6 +687,11 @@ var SubscriptionResource = class extends ApiResource {
644
687
  async createIntent(plan) {
645
688
  return this.api.post(`${this.endpoint}/create-intent`, { plan });
646
689
  }
690
+ // POST /api/subscriptions/cancel-intent
691
+ // Cancels an incomplete subscription when the user goes back from the payment step
692
+ async cancelIntent(subscriptionId) {
693
+ return this.api.post(`${this.endpoint}/cancel-intent`, { subscriptionId });
694
+ }
647
695
  // POST /api/subscriptions/portal
648
696
  async createPortal() {
649
697
  return this.api.post(`${this.endpoint}/portal`);
package/dist/index.mjs CHANGED
@@ -308,6 +308,17 @@ var UserResource = class extends ApiResource {
308
308
  async deleteAccount() {
309
309
  return this.api.delete(`${this.endpoint}/me`);
310
310
  }
311
+ // ============================================
312
+ // Admin methods
313
+ // ============================================
314
+ // PATCH /api/admin/users/:id/role
315
+ async updateRole(id, role) {
316
+ return this.api.patch(`/api/admin/users/${id}/role`, { role });
317
+ }
318
+ // POST /api/admin/users/:id/disable
319
+ async disable(id) {
320
+ return this.api.post(`/api/admin/users/${id}/disable`);
321
+ }
311
322
  };
312
323
  var userResource = new UserResource();
313
324
 
@@ -345,13 +356,45 @@ var RoomResource = class extends ApiResource {
345
356
  async getStaff(slug) {
346
357
  return this.get(`${slug}/staff`);
347
358
  }
348
- // PUT /api/rooms/:slug/staff/:userId - Update staff role
349
- async updateStaffRole(slug, userId, role) {
350
- return this.api.put(`${this.endpoint}/${slug}/staff/${userId}`, { role });
359
+ // ============================================
360
+ // Moderation methods
361
+ // ============================================
362
+ // GET /api/rooms/:slug/bans
363
+ async getBans(slug) {
364
+ return this.get(`${slug}/bans`);
365
+ }
366
+ // PATCH /api/rooms/:slug/users/:userId/role
367
+ async updateUserRole(slug, userId, role) {
368
+ return this.api.patch(
369
+ `${this.endpoint}/${slug}/users/${userId}/role`,
370
+ { role }
371
+ );
351
372
  }
352
- // DELETE /api/rooms/:slug/staff/:userId - Remove staff
353
- async removeStaff(slug, userId) {
354
- return this.api.delete(`${this.endpoint}/${slug}/staff/${userId}`);
373
+ // POST /api/rooms/:slug/users/:userId/ban
374
+ async ban(slug, userId, data) {
375
+ return this.api.post(`${this.endpoint}/${slug}/users/${userId}/ban`, data || {});
376
+ }
377
+ // DELETE /api/rooms/:slug/users/:userId/ban
378
+ async unban(slug, userId) {
379
+ return this.api.delete(
380
+ `${this.endpoint}/${slug}/users/${userId}/ban`
381
+ );
382
+ }
383
+ // POST /api/rooms/:slug/users/:userId/mute
384
+ async mute(slug, userId, data) {
385
+ return this.api.post(`${this.endpoint}/${slug}/users/${userId}/mute`, data || {});
386
+ }
387
+ // DELETE /api/rooms/:slug/users/:userId/mute
388
+ async unmute(slug, userId) {
389
+ return this.api.delete(
390
+ `${this.endpoint}/${slug}/users/${userId}/mute`
391
+ );
392
+ }
393
+ // POST /api/rooms/:slug/users/:userId/kick
394
+ async kick(slug, userId) {
395
+ return this.api.post(
396
+ `${this.endpoint}/${slug}/users/${userId}/kick`
397
+ );
355
398
  }
356
399
  // POST /api/rooms/:slug/join - Join a room (session-based)
357
400
  async join(slug) {
@@ -403,13 +446,13 @@ var RoomResource = class extends ApiResource {
403
446
  async skipTrack(slug, options) {
404
447
  return this.post(`${slug}/booth/skip`, options || {});
405
448
  }
406
- // POST /api/rooms/:slug/vote
449
+ // POST /api/rooms/:slug/booth/vote
407
450
  async vote(slug, type) {
408
- return this.post(`${slug}/vote`, { type });
451
+ return this.post(`${slug}/booth/vote`, { type });
409
452
  }
410
- // POST /api/rooms/:slug/grab
453
+ // POST /api/rooms/:slug/booth/grab
411
454
  async grabTrack(slug, playlistId) {
412
- return this.post(`${slug}/grab`, playlistId ? { playlistId } : {});
455
+ return this.post(`${slug}/booth/grab`, playlistId ? { playlistId } : {});
413
456
  }
414
457
  };
415
458
  var roomResource = new RoomResource();
@@ -589,6 +632,11 @@ var SubscriptionResource = class extends ApiResource {
589
632
  async createIntent(plan) {
590
633
  return this.api.post(`${this.endpoint}/create-intent`, { plan });
591
634
  }
635
+ // POST /api/subscriptions/cancel-intent
636
+ // Cancels an incomplete subscription when the user goes back from the payment step
637
+ async cancelIntent(subscriptionId) {
638
+ return this.api.post(`${this.endpoint}/cancel-intent`, { subscriptionId });
639
+ }
592
640
  // POST /api/subscriptions/portal
593
641
  async createPortal() {
594
642
  return this.api.post(`${this.endpoint}/portal`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@borealise/api",
3
- "version": "1.0.8",
3
+ "version": "1.1.0",
4
4
  "description": "Official API client for Borealise",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",