@roundtable-bb/sdk 0.1.34 → 0.1.35

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.
@@ -8,258 +8,290 @@ export class RoundtableClient {
8
8
  }
9
9
  /** Export a signed tenant backup (platform owners only) */
10
10
  backupTenant(params, query, options) {
11
- return request(this.opts, 'GET', `/tenants/${params.tenantId}/backup`, { ...options, query, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
11
+ return request(this.opts, 'GET', `/api/tenants/${params.tenantId}/backup`, { ...options, query, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
12
12
  }
13
13
  /** Count read and unread notifications */
14
14
  countNotifications(options) {
15
- return request(this.opts, 'GET', '/notifications/count', { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
15
+ return request(this.opts, 'GET', '/api/notifications/count', { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
16
+ }
17
+ /** Count unread private messages */
18
+ countUnreadMessages(options) {
19
+ return request(this.opts, 'GET', '/api/messages/count', { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
16
20
  }
17
21
  /** Create a platform-scoped API key (returned once in full) */
18
22
  createApiKey(body, options) {
19
- return request(this.opts, 'POST', '/platform/api-keys', { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
23
+ return request(this.opts, 'POST', '/api/platform/api-keys', { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
20
24
  }
21
25
  /** Create a category (requires category.manage permission) */
22
26
  createCategory(params, body, options) {
23
- return request(this.opts, 'POST', `/tenants/${params.tenantId}/categories`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
27
+ return request(this.opts, 'POST', `/api/tenants/${params.tenantId}/categories`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
24
28
  }
25
29
  /** Create a forum (requires forum.manage permission) */
26
30
  createForum(params, body, options) {
27
- return request(this.opts, 'POST', `/tenants/${params.tenantId}/forums`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
31
+ return request(this.opts, 'POST', `/api/tenants/${params.tenantId}/forums`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
28
32
  }
29
33
  /** Create a group (requires group.manage permission) */
30
34
  createGroup(params, body, options) {
31
- return request(this.opts, 'POST', `/tenants/${params.tenantId}/groups`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
35
+ return request(this.opts, 'POST', `/api/tenants/${params.tenantId}/groups`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
32
36
  }
33
37
  /** Create a post in a thread */
34
38
  createPost(params, body, options) {
35
- return request(this.opts, 'POST', `/tenants/${params.tenantId}/threads/${params.threadId}/posts`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
39
+ return request(this.opts, 'POST', `/api/tenants/${params.tenantId}/threads/${params.threadId}/posts`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
36
40
  }
37
41
  /** Create a new tenant (requires allow_tenant_creation platform setting or platform owner) */
38
42
  createTenant(body, options) {
39
- return request(this.opts, 'POST', '/tenants', { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
43
+ return request(this.opts, 'POST', '/api/tenants', { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
40
44
  }
41
45
  /** Create a thread (and its first post) */
42
46
  createThread(params, body, options) {
43
- return request(this.opts, 'POST', `/tenants/${params.tenantId}/forums/${params.forumId}/threads`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
47
+ return request(this.opts, 'POST', `/api/tenants/${params.tenantId}/forums/${params.forumId}/threads`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
44
48
  }
45
49
  /** Delete a platform-scoped API key */
46
50
  deleteApiKey(params, options) {
47
- return request(this.opts, 'DELETE', `/platform/api-keys/${params.keyId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
51
+ return request(this.opts, 'DELETE', `/api/platform/api-keys/${params.keyId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
48
52
  }
49
53
  /** Delete a category (requires category.manage permission) */
50
54
  deleteCategory(params, options) {
51
- return request(this.opts, 'DELETE', `/tenants/${params.tenantId}/categories/${params.categoryId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
55
+ return request(this.opts, 'DELETE', `/api/tenants/${params.tenantId}/categories/${params.categoryId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
52
56
  }
53
57
  /** Delete a forum (requires forum.manage permission) */
54
58
  deleteForum(params, options) {
55
- return request(this.opts, 'DELETE', `/tenants/${params.tenantId}/forums/${params.forumId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
59
+ return request(this.opts, 'DELETE', `/api/tenants/${params.tenantId}/forums/${params.forumId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
56
60
  }
57
61
  /** Delete a group (requires group.manage permission) */
58
62
  deleteGroup(params, options) {
59
- return request(this.opts, 'DELETE', `/tenants/${params.tenantId}/groups/${params.groupId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
63
+ return request(this.opts, 'DELETE', `/api/tenants/${params.tenantId}/groups/${params.groupId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
64
+ }
65
+ /** Delete a private message */
66
+ deleteMessage(params, options) {
67
+ return request(this.opts, 'DELETE', `/api/messages/${params.messageId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
60
68
  }
61
69
  /** Delete a notification */
62
70
  deleteNotification(params, options) {
63
- return request(this.opts, 'DELETE', `/notifications/${params.notificationId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
71
+ return request(this.opts, 'DELETE', `/api/notifications/${params.notificationId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
64
72
  }
65
73
  /** Soft-delete a post */
66
74
  deletePost(params, options) {
67
- return request(this.opts, 'DELETE', `/tenants/${params.tenantId}/posts/${params.postId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
75
+ return request(this.opts, 'DELETE', `/api/tenants/${params.tenantId}/posts/${params.postId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
76
+ }
77
+ /** Permanently delete a tenant and all its data (platform owners only) */
78
+ deleteTenant(params, options) {
79
+ return request(this.opts, 'DELETE', `/api/tenants/${params.tenantId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
68
80
  }
69
81
  /** Delete a thread */
70
82
  deleteThread(params, options) {
71
- return request(this.opts, 'DELETE', `/tenants/${params.tenantId}/threads/${params.threadId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
83
+ return request(this.opts, 'DELETE', `/api/tenants/${params.tenantId}/threads/${params.threadId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
72
84
  }
73
85
  /** Exchange session cookie for a short-lived tenant JWT */
74
86
  exchangeTenantToken(options) {
75
- return request(this.opts, 'POST', '/tenant-token', { ...options, routeAuth: { acceptsBetterAuth: true } });
87
+ return request(this.opts, 'POST', '/api/tenant-token', { ...options, routeAuth: { acceptsBetterAuth: true } });
76
88
  }
77
89
  /** Get a single category */
78
90
  getCategory(params, options) {
79
- return request(this.opts, 'GET', `/tenants/${params.tenantId}/categories/${params.categoryId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
91
+ return request(this.opts, 'GET', `/api/tenants/${params.tenantId}/categories/${params.categoryId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
80
92
  }
81
93
  /** Get a single forum */
82
94
  getForum(params, options) {
83
- return request(this.opts, 'GET', `/tenants/${params.tenantId}/forums/${params.forumId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
95
+ return request(this.opts, 'GET', `/api/tenants/${params.tenantId}/forums/${params.forumId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
84
96
  }
85
97
  /** Get a group */
86
98
  getGroup(params, options) {
87
- return request(this.opts, 'GET', `/tenants/${params.tenantId}/groups/${params.groupId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
99
+ return request(this.opts, 'GET', `/api/tenants/${params.tenantId}/groups/${params.groupId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
88
100
  }
89
101
  /** Get own profile */
90
102
  getMe(options) {
91
- return request(this.opts, 'GET', '/users/me', { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
103
+ return request(this.opts, 'GET', '/api/users/me', { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
92
104
  }
93
105
  /** Get tenant options and unsafe methods allowed */
94
106
  getTenantOptions(params, options) {
95
- return request(this.opts, 'GET', `/tenants/${params.tenantId}/options`, { ...options });
107
+ return request(this.opts, 'GET', `/api/tenants/${params.tenantId}/options`, { ...options });
96
108
  }
97
109
  /** Get the current owner of a tenant */
98
110
  getTenantOwner(params, options) {
99
- return request(this.opts, 'GET', `/tenants/${params.tenantId}/owner`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
111
+ return request(this.opts, 'GET', `/api/tenants/${params.tenantId}/owner`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
100
112
  }
101
113
  /** Get a single thread */
102
114
  getThread(params, options) {
103
- return request(this.opts, 'GET', `/tenants/${params.tenantId}/threads/${params.threadId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
115
+ return request(this.opts, 'GET', `/api/tenants/${params.tenantId}/threads/${params.threadId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
104
116
  }
105
117
  /** Get read status for the current user in a thread */
106
118
  getThreadReadStatus(params, options) {
107
- return request(this.opts, 'GET', `/tenants/${params.tenantId}/threads/${params.threadId}/read-status`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
119
+ return request(this.opts, 'GET', `/api/tenants/${params.tenantId}/threads/${params.threadId}/read-status`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
108
120
  }
109
121
  /** Get a user profile by ID */
110
122
  getUser(params, options) {
111
- return request(this.opts, 'GET', `/users/${params.userId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
123
+ return request(this.opts, 'GET', `/api/users/${params.userId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
112
124
  }
113
125
  /** Get user group memberships in the current tenant */
114
126
  getUserMembership(params, options) {
115
- return request(this.opts, 'GET', `/tenants/${params.tenantId}/users/${params.userId}/membership`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
127
+ return request(this.opts, 'GET', `/api/tenants/${params.tenantId}/users/${params.userId}/membership`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
116
128
  }
117
129
  /** Grant platform owner status to a user (platform owners only) */
118
130
  grantPlatformOwner(body, options) {
119
- return request(this.opts, 'POST', '/platform/owners', { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
131
+ return request(this.opts, 'POST', '/api/platform/owners', { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
120
132
  }
121
133
  /** List your platform-scoped API keys */
122
134
  listApiKeys(options) {
123
- return request(this.opts, 'GET', '/platform/api-keys', { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
135
+ return request(this.opts, 'GET', '/api/platform/api-keys', { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
124
136
  }
125
137
  /** List visible categories for the requesting user */
126
138
  listCategories(params, options) {
127
- return request(this.opts, 'GET', `/tenants/${params.tenantId}/categories`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
139
+ return request(this.opts, 'GET', `/api/tenants/${params.tenantId}/categories`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
140
+ }
141
+ /** List messages exchanged with a specific user */
142
+ listConversationMessages(params, query, options) {
143
+ return request(this.opts, 'GET', `/api/messages/conversations/${params.userId}`, { ...options, query, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
144
+ }
145
+ /** List conversations for the current user */
146
+ listConversations(options) {
147
+ return request(this.opts, 'GET', '/api/messages/conversations', { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
128
148
  }
129
149
  /** List visible forums for the requesting user */
130
150
  listForums(params, options) {
131
- return request(this.opts, 'GET', `/tenants/${params.tenantId}/forums`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
151
+ return request(this.opts, 'GET', `/api/tenants/${params.tenantId}/forums`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
132
152
  }
133
153
  /** List members of a group */
134
154
  listGroupMembers(params, options) {
135
- return request(this.opts, 'GET', `/tenants/${params.tenantId}/groups/${params.groupId}/members`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
155
+ return request(this.opts, 'GET', `/api/tenants/${params.tenantId}/groups/${params.groupId}/members`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
136
156
  }
137
157
  /** List groups */
138
158
  listGroups(params, options) {
139
- return request(this.opts, 'GET', `/tenants/${params.tenantId}/groups`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
159
+ return request(this.opts, 'GET', `/api/tenants/${params.tenantId}/groups`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
140
160
  }
141
161
  /** Get unified notification inbox */
142
162
  listNotifications(query, options) {
143
- return request(this.opts, 'GET', '/notifications', { ...options, query, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
163
+ return request(this.opts, 'GET', '/api/notifications', { ...options, query, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
144
164
  }
145
165
  /** List platform owner user IDs (platform owners only) */
146
166
  listPlatformOwners(options) {
147
- return request(this.opts, 'GET', '/platform/owners', { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
167
+ return request(this.opts, 'GET', '/api/platform/owners', { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
148
168
  }
149
169
  /** List all platform settings (platform owners only) */
150
170
  listPlatformSettings(options) {
151
- return request(this.opts, 'GET', '/platform/settings', { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
171
+ return request(this.opts, 'GET', '/api/platform/settings', { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
152
172
  }
153
173
  /** List posts in a thread — cursor pagination or anchor via ?from=postId */
154
174
  listPosts(params, query, options) {
155
- return request(this.opts, 'GET', `/tenants/${params.tenantId}/threads/${params.threadId}/posts`, { ...options, query, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
175
+ return request(this.opts, 'GET', `/api/tenants/${params.tenantId}/threads/${params.threadId}/posts`, { ...options, query, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
156
176
  }
157
177
  /** List tenants owned by the current user (platform owners see all) */
158
178
  listTenants(query, options) {
159
- return request(this.opts, 'GET', '/tenants', { ...options, query, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
179
+ return request(this.opts, 'GET', '/api/tenants', { ...options, query, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
160
180
  }
161
181
  /** List threads in a forum */
162
182
  listThreads(params, query, options) {
163
- return request(this.opts, 'GET', `/tenants/${params.tenantId}/forums/${params.forumId}/threads`, { ...options, query, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
183
+ return request(this.opts, 'GET', `/api/tenants/${params.tenantId}/forums/${params.forumId}/threads`, { ...options, query, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
164
184
  }
165
185
  /** Mark all notifications as read */
166
186
  markAllNotificationRead(options) {
167
- return request(this.opts, 'POST', '/notifications/read-all', { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
187
+ return request(this.opts, 'POST', '/api/notifications/read-all', { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
188
+ }
189
+ /** Mark all messages from a user as read */
190
+ markConversationRead(params, options) {
191
+ return request(this.opts, 'PATCH', `/api/messages/conversations/${params.userId}/read`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
192
+ }
193
+ /** Mark a message as read */
194
+ markMessageRead(params, options) {
195
+ return request(this.opts, 'PATCH', `/api/messages/${params.messageId}/read`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
168
196
  }
169
197
  /** Mark a notification as read */
170
198
  markNotificationRead(params, options) {
171
- return request(this.opts, 'PATCH', `/notifications/${params.notificationId}/read`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
199
+ return request(this.opts, 'PATCH', `/api/notifications/${params.notificationId}/read`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
172
200
  }
173
201
  /** Set tenant options */
174
202
  putTenantOptions(params, body, options) {
175
- return request(this.opts, 'PUT', `/tenants/${params.tenantId}/options`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
203
+ return request(this.opts, 'PUT', `/api/tenants/${params.tenantId}/options`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
176
204
  }
177
205
  /** Set the position of each category (requires category.manage permission) */
178
206
  reorderCategories(params, body, options) {
179
- return request(this.opts, 'PUT', `/tenants/${params.tenantId}/categories/reorder`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
207
+ return request(this.opts, 'PUT', `/api/tenants/${params.tenantId}/categories/reorder`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
180
208
  }
181
209
  /** Set the position of each forum (requires forum.manage permission) */
182
210
  reorderForums(params, body, options) {
183
- return request(this.opts, 'PUT', `/tenants/${params.tenantId}/forums/reorder`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
211
+ return request(this.opts, 'PUT', `/api/tenants/${params.tenantId}/forums/reorder`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
184
212
  }
185
213
  /** Set the position of each group (requires group.manage permission) */
186
214
  reorderGroups(params, body, options) {
187
- return request(this.opts, 'PUT', `/tenants/${params.tenantId}/groups/reorder`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
215
+ return request(this.opts, 'PUT', `/api/tenants/${params.tenantId}/groups/reorder`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
188
216
  }
189
217
  /** Restore a tenant from a signed backup (platform owners only) */
190
218
  restoreTenant(params, body, options) {
191
- return request(this.opts, 'POST', `/tenants/${params.tenantId}/restore`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
219
+ return request(this.opts, 'POST', `/api/tenants/${params.tenantId}/restore`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
192
220
  }
193
221
  /** Revoke platform owner status from a user (platform owners only) */
194
222
  revokePlatformOwner(params, options) {
195
- return request(this.opts, 'DELETE', `/platform/owners/${params.userId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
223
+ return request(this.opts, 'DELETE', `/api/platform/owners/${params.userId}`, { ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
196
224
  }
197
225
  /** Full-text search across threads and posts (visible categories only) */
198
226
  search(params, query, options) {
199
- return request(this.opts, 'GET', `/tenants/${params.tenantId}/search`, { ...options, query, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
227
+ return request(this.opts, 'GET', `/api/tenants/${params.tenantId}/search`, { ...options, query, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
200
228
  }
201
229
  /** Search users by display name or email (case-insensitive) */
202
230
  searchUsers(query, options) {
203
- return request(this.opts, 'GET', '/users/search', { ...options, query, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
231
+ return request(this.opts, 'GET', '/api/users/search', { ...options, query, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
232
+ }
233
+ /** Send a private message to another user */
234
+ sendMessage(body, options) {
235
+ return request(this.opts, 'POST', '/api/messages', { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true, acceptsTenantJwt: true } });
204
236
  }
205
237
  /** Set forum visibility for a group (requires group.manage or group.manage_protected permission) */
206
238
  setGroupForums(params, body, options) {
207
- return request(this.opts, 'PUT', `/tenants/${params.tenantId}/groups/${params.groupId}/forums`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
239
+ return request(this.opts, 'PUT', `/api/tenants/${params.tenantId}/groups/${params.groupId}/forums`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
208
240
  }
209
241
  /** Replace all permissions for a group (requires group.manage permission) */
210
242
  setGroupPermissions(params, body, options) {
211
- return request(this.opts, 'PUT', `/tenants/${params.tenantId}/groups/${params.groupId}/permissions`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
212
- }
213
- /** Set or remove the custom domain for a tenant */
214
- setTenantCustomDomain(params, body, options) {
215
- return request(this.opts, 'PUT', `/tenants/${params.tenantId}/custom-domain`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
243
+ return request(this.opts, 'PUT', `/api/tenants/${params.tenantId}/groups/${params.groupId}/permissions`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
216
244
  }
217
245
  /** Mark a thread as read up to a given post */
218
246
  setThreadReadStatus(params, body, options) {
219
- return request(this.opts, 'PUT', `/tenants/${params.tenantId}/threads/${params.threadId}/read-status`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
247
+ return request(this.opts, 'PUT', `/api/tenants/${params.tenantId}/threads/${params.threadId}/read-status`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
220
248
  }
221
249
  /** Replace user group assignments in the current tenant (requires group.manage permission) */
222
250
  setUserGroups(params, body, options) {
223
- return request(this.opts, 'PUT', `/tenants/${params.tenantId}/users/${params.userId}/membership`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
251
+ return request(this.opts, 'PUT', `/api/tenants/${params.tenantId}/users/${params.userId}/membership`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
224
252
  }
225
253
  /** Subscribe to a thread */
226
254
  subscribeThread(params, options) {
227
- return request(this.opts, 'POST', `/tenants/${params.tenantId}/threads/${params.threadId}/subscribe`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
255
+ return request(this.opts, 'POST', `/api/tenants/${params.tenantId}/threads/${params.threadId}/subscribe`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
228
256
  }
229
257
  /** Transfer tenant ownership to another existing user (only the current owner can do this) */
230
258
  transferTenantOwner(params, body, options) {
231
- return request(this.opts, 'PUT', `/tenants/${params.tenantId}/owner`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
259
+ return request(this.opts, 'PUT', `/api/tenants/${params.tenantId}/owner`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
232
260
  }
233
261
  /** Unsubscribe from a thread */
234
262
  unsubscribeThread(params, options) {
235
- return request(this.opts, 'DELETE', `/tenants/${params.tenantId}/threads/${params.threadId}/subscribe`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
263
+ return request(this.opts, 'DELETE', `/api/tenants/${params.tenantId}/threads/${params.threadId}/subscribe`, { ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
236
264
  }
237
265
  /** Update a category (requires category.manage permission) */
238
266
  updateCategory(params, body, options) {
239
- return request(this.opts, 'PATCH', `/tenants/${params.tenantId}/categories/${params.categoryId}`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
267
+ return request(this.opts, 'PATCH', `/api/tenants/${params.tenantId}/categories/${params.categoryId}`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
240
268
  }
241
269
  /** Update a forum (requires forum.manage permission) */
242
270
  updateForum(params, body, options) {
243
- return request(this.opts, 'PATCH', `/tenants/${params.tenantId}/forums/${params.forumId}`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
271
+ return request(this.opts, 'PATCH', `/api/tenants/${params.tenantId}/forums/${params.forumId}`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
244
272
  }
245
273
  /** Update a group (requires group.manage permission) */
246
274
  updateGroup(params, body, options) {
247
- return request(this.opts, 'PATCH', `/tenants/${params.tenantId}/groups/${params.groupId}`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
275
+ return request(this.opts, 'PATCH', `/api/tenants/${params.tenantId}/groups/${params.groupId}`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
248
276
  }
249
277
  /** Update own profile */
250
278
  updateMe(body, options) {
251
- return request(this.opts, 'PATCH', '/users/me', { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
279
+ return request(this.opts, 'PATCH', '/api/users/me', { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
252
280
  }
253
281
  /** Update a platform setting (platform owners only) */
254
282
  updatePlatformSetting(params, body, options) {
255
- return request(this.opts, 'PATCH', `/platform/settings/${params.key}`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
283
+ return request(this.opts, 'PATCH', `/api/platform/settings/${params.key}`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
256
284
  }
257
285
  /** Edit a post (author or post.edit permission) */
258
286
  updatePost(params, body, options) {
259
- return request(this.opts, 'PATCH', `/tenants/${params.tenantId}/posts/${params.postId}`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
287
+ return request(this.opts, 'PATCH', `/api/tenants/${params.tenantId}/posts/${params.postId}`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
288
+ }
289
+ /** Update a tenant's name, slug, or custom domain (tenant owner or platform owner) */
290
+ updateTenant(params, body, options) {
291
+ return request(this.opts, 'PATCH', `/api/tenants/${params.tenantId}`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsBetterAuth: true } });
260
292
  }
261
293
  /** Update a thread (title, pin, lock, move) */
262
294
  updateThread(params, body, options) {
263
- return request(this.opts, 'PATCH', `/tenants/${params.tenantId}/threads/${params.threadId}`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
295
+ return request(this.opts, 'PATCH', `/api/tenants/${params.tenantId}/threads/${params.threadId}`, { body, ...options, routeAuth: { acceptsApiKey: true, acceptsTenantJwt: true } });
264
296
  }
265
297
  }
package/dist/index.d.ts CHANGED
@@ -389,6 +389,7 @@ declare const MessageCountSchema: z.ZodObject<{
389
389
  type Message = z.infer<typeof MessageSchema>;
390
390
  type SendMessageBody = z.infer<typeof SendMessageBodySchema>;
391
391
  type ConversationSummary = z.infer<typeof ConversationSummarySchema>;
392
+ type MessageCount = z.infer<typeof MessageCountSchema>;
392
393
 
393
394
  declare const ApiKeySchema: z.ZodObject<{
394
395
  id: z.ZodUUID;
@@ -473,9 +474,6 @@ declare const UpdateTenantSchema: z.ZodObject<{
473
474
  slug: z.ZodOptional<z.ZodString>;
474
475
  customDomain: z.ZodOptional<z.ZodNullable<z.ZodString>>;
475
476
  }, z.core.$strip>;
476
- declare const SetCustomDomainSchema: z.ZodObject<{
477
- domain: z.ZodNullable<z.ZodString>;
478
- }, z.core.$strip>;
479
477
  declare const OwnedTenantSchema: z.ZodObject<{
480
478
  id: z.ZodNumber;
481
479
  name: z.ZodString;
@@ -504,7 +502,6 @@ type OwnedTenant = z.infer<typeof OwnedTenantSchema>;
504
502
  type Tenant = z.infer<typeof TenantSchema>;
505
503
  type CreateTenant = z.infer<typeof CreateTenantSchema>;
506
504
  type UpdateTenant = z.infer<typeof UpdateTenantSchema>;
507
- type SetCustomDomain = z.infer<typeof SetCustomDomainSchema>;
508
505
  type TenantToken = z.infer<typeof TenantTokenSchema>;
509
506
  type TenantOptions = z.infer<typeof TenantOptionsSchema>;
510
507
  type SetTenantOptions = z.infer<typeof SetTenantOptionsSchema>;
@@ -798,6 +795,10 @@ declare class RoundtableClient {
798
795
  countNotifications(options?: {
799
796
  authMethod?: AuthMethod;
800
797
  }): Promise<NotificationCount>;
798
+ /** Count unread private messages */
799
+ countUnreadMessages(options?: {
800
+ authMethod?: AuthMethod;
801
+ }): Promise<MessageCount>;
801
802
  /** Create a platform-scoped API key (returned once in full) */
802
803
  createApiKey(body: CreateApiKey, options?: {
803
804
  authMethod?: AuthMethod;
@@ -865,6 +866,12 @@ declare class RoundtableClient {
865
866
  }, options?: {
866
867
  authMethod?: AuthMethod;
867
868
  }): Promise<void>;
869
+ /** Delete a private message */
870
+ deleteMessage(params: {
871
+ messageId: string;
872
+ }, options?: {
873
+ authMethod?: AuthMethod;
874
+ }): Promise<void>;
868
875
  /** Delete a notification */
869
876
  deleteNotification(params: {
870
877
  notificationId: string;
@@ -878,6 +885,12 @@ declare class RoundtableClient {
878
885
  }, options?: {
879
886
  authMethod?: AuthMethod;
880
887
  }): Promise<void>;
888
+ /** Permanently delete a tenant and all its data (platform owners only) */
889
+ deleteTenant(params: {
890
+ tenantId: string;
891
+ }, options?: {
892
+ authMethod?: AuthMethod;
893
+ }): Promise<void>;
881
894
  /** Delete a thread */
882
895
  deleteThread(params: {
883
896
  tenantId: string;
@@ -967,6 +980,19 @@ declare class RoundtableClient {
967
980
  }, options?: {
968
981
  authMethod?: AuthMethod;
969
982
  }): Promise<Category[]>;
983
+ /** List messages exchanged with a specific user */
984
+ listConversationMessages(params: {
985
+ userId: string;
986
+ }, query?: {
987
+ cursor?: Id;
988
+ limit?: number;
989
+ }, options?: {
990
+ authMethod?: AuthMethod;
991
+ }): Promise<PaginatedResponse<Message>>;
992
+ /** List conversations for the current user */
993
+ listConversations(options?: {
994
+ authMethod?: AuthMethod;
995
+ }): Promise<ConversationSummary[]>;
970
996
  /** List visible forums for the requesting user */
971
997
  listForums(params: {
972
998
  tenantId: string;
@@ -1033,6 +1059,18 @@ declare class RoundtableClient {
1033
1059
  markAllNotificationRead(options?: {
1034
1060
  authMethod?: AuthMethod;
1035
1061
  }): Promise<void>;
1062
+ /** Mark all messages from a user as read */
1063
+ markConversationRead(params: {
1064
+ userId: string;
1065
+ }, options?: {
1066
+ authMethod?: AuthMethod;
1067
+ }): Promise<void>;
1068
+ /** Mark a message as read */
1069
+ markMessageRead(params: {
1070
+ messageId: string;
1071
+ }, options?: {
1072
+ authMethod?: AuthMethod;
1073
+ }): Promise<Message>;
1036
1074
  /** Mark a notification as read */
1037
1075
  markNotificationRead(params: {
1038
1076
  notificationId: string;
@@ -1092,6 +1130,10 @@ declare class RoundtableClient {
1092
1130
  }, options?: {
1093
1131
  authMethod?: AuthMethod;
1094
1132
  }): Promise<UserSearchResult[]>;
1133
+ /** Send a private message to another user */
1134
+ sendMessage(body: SendMessageBody, options?: {
1135
+ authMethod?: AuthMethod;
1136
+ }): Promise<Message>;
1095
1137
  /** Set forum visibility for a group (requires group.manage or group.manage_protected permission) */
1096
1138
  setGroupForums(params: {
1097
1139
  tenantId: string;
@@ -1106,12 +1148,6 @@ declare class RoundtableClient {
1106
1148
  }, body: SetGroupPermissions, options?: {
1107
1149
  authMethod?: AuthMethod;
1108
1150
  }): Promise<Group>;
1109
- /** Set or remove the custom domain for a tenant */
1110
- setTenantCustomDomain(params: {
1111
- tenantId: string;
1112
- }, body: SetCustomDomain, options?: {
1113
- authMethod?: AuthMethod;
1114
- }): Promise<void>;
1115
1151
  /** Mark a thread as read up to a given post */
1116
1152
  setThreadReadStatus(params: {
1117
1153
  tenantId: string;
@@ -1184,6 +1220,12 @@ declare class RoundtableClient {
1184
1220
  }, body: CreatePost, options?: {
1185
1221
  authMethod?: AuthMethod;
1186
1222
  }): Promise<Post>;
1223
+ /** Update a tenant's name, slug, or custom domain (tenant owner or platform owner) */
1224
+ updateTenant(params: {
1225
+ tenantId: string;
1226
+ }, body: UpdateTenant, options?: {
1227
+ authMethod?: AuthMethod;
1228
+ }): Promise<Tenant>;
1187
1229
  /** Update a thread (title, pin, lock, move) */
1188
1230
  updateThread(params: {
1189
1231
  tenantId: string;
@@ -1193,5 +1235,5 @@ declare class RoundtableClient {
1193
1235
  }): Promise<Thread>;
1194
1236
  }
1195
1237
 
1196
- export { ApiKeySchema, AssignablePermissionSchema, BackupPayloadSchema, BackupQuerySchema, CategorySchema, ConversationSummarySchema, CreateApiKeySchema, CreateCategorySchema, CreateForumSchema, CreateGroupSchema, CreatePostSchema, CreateTenantSchema, CreateThreadSchema, CreatedApiKeySchema, ErrorSchema, ForumSchema, GrantPlatformOwnerSchema, GroupMemberSchema, GroupSchema, IdSchema, KeyIdParamsSchema, MessageCountSchema, MessageIdParamsSchema, MessageSchema, NotificationCountSchema, NotificationIdParamsSchema, NotificationSchema, NotificationTypeSchema, OwnedTenantSchema, PERMISSIONS, PaginatedResponseSchema, PaginationQuerySchema, PermissionSchema, PlatformSettingKeyParamsSchema, PlatformSettingSchema, PostSchema, PostsQuerySchema, ReorderCategorySchema, ReorderForumSchema, ReorderGroupSchema, RestoreErrorSchema, RestoreTenantResponseSchema, RestoreTenantSchema, RoundtableClient, SearchQuerySchema, SearchResponseSchema, SearchResultSchema, SearchResultTypeSchema, SendMessageBodySchema, SetCustomDomainSchema, SetGroupForumsSchema, SetGroupPermissionsSchema, SetTenantOptionsSchema, SetThreadReadStatusSchema, SetUserGroupsSchema, TenantBackupSchema, TenantCategoryIdParamsSchema, TenantForumIdParamsSchema, TenantGroupIdParamsSchema, TenantIdParamsSchema, TenantOptionsSchema, TenantOwnerSchema, TenantPostIdParamsSchema, TenantSchema, TenantThreadIdParamsSchema, TenantThreadPostIdParamsSchema, TenantTokenSchema, TenantUserIdParamsSchema, ThreadReadStatusSchema, ThreadSchema, TransferTenantOwnerSchema, UpdateCategorySchema, UpdateForumSchema, UpdateGroupSchema, UpdatePlatformSettingSchema, UpdatePostSchema, UpdateTenantSchema, UpdateThreadSchema, UpdateUserProfileSchema, UserIdParamsSchema, UserMembershipSchema, UserProfileSchema, UserSearchResultSchema, UserSummarySchema };
1197
- export type { ApiError, ApiKey, BackupCategory, BackupData, BackupGroup, BackupMembership, BackupPayload, BackupPost, BackupQuery, BackupSettings, BackupThread, Category, ConversationSummary, CreateApiKey, CreateCategory, CreateForum, CreateGroup, CreatePost, CreateTenant, CreateThread, CreatedApiKey, Forum, GrantPlatformOwner, Group, GroupMember, Id, KeyIdParams, Message, MessageIdParams, Notification, NotificationCount, NotificationIdParams, NotificationType, OwnedTenant, PaginatedResponse, PaginationQuery, Permission, PlatformSetting, PlatformSettingKeyParams, Post, PostsQuery, ReorderCategory, ReorderForum, ReorderGroup, RestoreError, RestoreTenant, RestoreTenantResponse, RoundtableClientOpts, SearchQuery, SearchResponse, SearchResult, SearchResultType, SendMessageBody, SetCustomDomain, SetGroupForums, SetGroupPermissions, SetTenantOptions, SetThreadReadStatus, SetUserGroups, Tenant, TenantBackup, TenantCategoryIdParams, TenantForumIdParams, TenantGroupIdParams, TenantIdParams, TenantOptions, TenantOwner, TenantPostIdParams, TenantThreadIdParams, TenantThreadPostIdParams, TenantToken, TenantUserIdParams, Thread, ThreadReadStatus, TransferTenantOwner, UpdateCategory, UpdateForum, UpdateGroup, UpdatePlatformSetting, UpdatePost, UpdateTenant, UpdateThread, UpdateUserProfile, UserIdParams, UserMembership, UserProfile, UserSearchResult, UserSummary };
1238
+ export { ApiKeySchema, AssignablePermissionSchema, BackupPayloadSchema, BackupQuerySchema, CategorySchema, ConversationSummarySchema, CreateApiKeySchema, CreateCategorySchema, CreateForumSchema, CreateGroupSchema, CreatePostSchema, CreateTenantSchema, CreateThreadSchema, CreatedApiKeySchema, ErrorSchema, ForumSchema, GrantPlatformOwnerSchema, GroupMemberSchema, GroupSchema, IdSchema, KeyIdParamsSchema, MessageCountSchema, MessageIdParamsSchema, MessageSchema, NotificationCountSchema, NotificationIdParamsSchema, NotificationSchema, NotificationTypeSchema, OwnedTenantSchema, PERMISSIONS, PaginatedResponseSchema, PaginationQuerySchema, PermissionSchema, PlatformSettingKeyParamsSchema, PlatformSettingSchema, PostSchema, PostsQuerySchema, ReorderCategorySchema, ReorderForumSchema, ReorderGroupSchema, RestoreErrorSchema, RestoreTenantResponseSchema, RestoreTenantSchema, RoundtableClient, SearchQuerySchema, SearchResponseSchema, SearchResultSchema, SearchResultTypeSchema, SendMessageBodySchema, SetGroupForumsSchema, SetGroupPermissionsSchema, SetTenantOptionsSchema, SetThreadReadStatusSchema, SetUserGroupsSchema, TenantBackupSchema, TenantCategoryIdParamsSchema, TenantForumIdParamsSchema, TenantGroupIdParamsSchema, TenantIdParamsSchema, TenantOptionsSchema, TenantOwnerSchema, TenantPostIdParamsSchema, TenantSchema, TenantThreadIdParamsSchema, TenantThreadPostIdParamsSchema, TenantTokenSchema, TenantUserIdParamsSchema, ThreadReadStatusSchema, ThreadSchema, TransferTenantOwnerSchema, UpdateCategorySchema, UpdateForumSchema, UpdateGroupSchema, UpdatePlatformSettingSchema, UpdatePostSchema, UpdateTenantSchema, UpdateThreadSchema, UpdateUserProfileSchema, UserIdParamsSchema, UserMembershipSchema, UserProfileSchema, UserSearchResultSchema, UserSummarySchema };
1239
+ export type { ApiError, ApiKey, BackupCategory, BackupData, BackupGroup, BackupMembership, BackupPayload, BackupPost, BackupQuery, BackupSettings, BackupThread, Category, ConversationSummary, CreateApiKey, CreateCategory, CreateForum, CreateGroup, CreatePost, CreateTenant, CreateThread, CreatedApiKey, Forum, GrantPlatformOwner, Group, GroupMember, Id, KeyIdParams, Message, MessageCount, MessageIdParams, Notification, NotificationCount, NotificationIdParams, NotificationType, OwnedTenant, PaginatedResponse, PaginationQuery, Permission, PlatformSetting, PlatformSettingKeyParams, Post, PostsQuery, ReorderCategory, ReorderForum, ReorderGroup, RestoreError, RestoreTenant, RestoreTenantResponse, RoundtableClientOpts, SearchQuery, SearchResponse, SearchResult, SearchResultType, SendMessageBody, SetGroupForums, SetGroupPermissions, SetTenantOptions, SetThreadReadStatus, SetUserGroups, Tenant, TenantBackup, TenantCategoryIdParams, TenantForumIdParams, TenantGroupIdParams, TenantIdParams, TenantOptions, TenantOwner, TenantPostIdParams, TenantThreadIdParams, TenantThreadPostIdParams, TenantToken, TenantUserIdParams, Thread, ThreadReadStatus, TransferTenantOwner, UpdateCategory, UpdateForum, UpdateGroup, UpdatePlatformSetting, UpdatePost, UpdateTenant, UpdateThread, UpdateUserProfile, UserIdParams, UserMembership, UserProfile, UserSearchResult, UserSummary };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roundtable-bb/sdk",
3
- "version": "0.1.34",
3
+ "version": "0.1.35",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"