@nurama/sdk 0.0.0-stage → 1.4.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.
Files changed (220) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +5 -0
  3. package/README.md +1080 -2
  4. package/dist/BotClient.d.ts +66 -0
  5. package/dist/BotClient.d.ts.map +1 -0
  6. package/dist/BotClient.js +68 -0
  7. package/dist/BotClient.js.map +1 -0
  8. package/dist/NuramaClient.d.ts +448 -0
  9. package/dist/NuramaClient.d.ts.map +1 -0
  10. package/dist/NuramaClient.js +864 -0
  11. package/dist/NuramaClient.js.map +1 -0
  12. package/dist/browser/nurama-bot-sdk.js +11780 -0
  13. package/dist/browser/nurama-bot-sdk.min.js +1 -0
  14. package/dist/browser/nurama-sdk.js +11732 -0
  15. package/dist/browser/nurama-sdk.min.js +1 -0
  16. package/dist/routes/ai.d.ts +280 -0
  17. package/dist/routes/ai.d.ts.map +1 -0
  18. package/dist/routes/ai.js +173 -0
  19. package/dist/routes/ai.js.map +1 -0
  20. package/dist/routes/asset.d.ts +493 -0
  21. package/dist/routes/asset.d.ts.map +1 -0
  22. package/dist/routes/asset.js +848 -0
  23. package/dist/routes/asset.js.map +1 -0
  24. package/dist/routes/auth.d.ts +218 -0
  25. package/dist/routes/auth.d.ts.map +1 -0
  26. package/dist/routes/auth.js +454 -0
  27. package/dist/routes/auth.js.map +1 -0
  28. package/dist/routes/blogPosts.d.ts +17 -0
  29. package/dist/routes/blogPosts.d.ts.map +1 -0
  30. package/dist/routes/blogPosts.js +29 -0
  31. package/dist/routes/blogPosts.js.map +1 -0
  32. package/dist/routes/board.d.ts +187 -0
  33. package/dist/routes/board.d.ts.map +1 -0
  34. package/dist/routes/board.js +270 -0
  35. package/dist/routes/board.js.map +1 -0
  36. package/dist/routes/bot.d.ts +147 -0
  37. package/dist/routes/bot.d.ts.map +1 -0
  38. package/dist/routes/bot.js +157 -0
  39. package/dist/routes/bot.js.map +1 -0
  40. package/dist/routes/chat.d.ts +842 -0
  41. package/dist/routes/chat.d.ts.map +1 -0
  42. package/dist/routes/chat.js +863 -0
  43. package/dist/routes/chat.js.map +1 -0
  44. package/dist/routes/chatAi.d.ts +51 -0
  45. package/dist/routes/chatAi.d.ts.map +1 -0
  46. package/dist/routes/chatAi.js +109 -0
  47. package/dist/routes/chatAi.js.map +1 -0
  48. package/dist/routes/config.d.ts +11 -0
  49. package/dist/routes/config.d.ts.map +1 -0
  50. package/dist/routes/config.js +24 -0
  51. package/dist/routes/config.js.map +1 -0
  52. package/dist/routes/convo.d.ts +169 -0
  53. package/dist/routes/convo.d.ts.map +1 -0
  54. package/dist/routes/convo.js +284 -0
  55. package/dist/routes/convo.js.map +1 -0
  56. package/dist/routes/credits.d.ts +82 -0
  57. package/dist/routes/credits.d.ts.map +1 -0
  58. package/dist/routes/credits.js +49 -0
  59. package/dist/routes/credits.js.map +1 -0
  60. package/dist/routes/device.d.ts +74 -0
  61. package/dist/routes/device.d.ts.map +1 -0
  62. package/dist/routes/device.js +122 -0
  63. package/dist/routes/device.js.map +1 -0
  64. package/dist/routes/folder.d.ts +75 -0
  65. package/dist/routes/folder.d.ts.map +1 -0
  66. package/dist/routes/folder.js +99 -0
  67. package/dist/routes/folder.js.map +1 -0
  68. package/dist/routes/invite.d.ts +61 -0
  69. package/dist/routes/invite.d.ts.map +1 -0
  70. package/dist/routes/invite.js +86 -0
  71. package/dist/routes/invite.js.map +1 -0
  72. package/dist/routes/joinLink.d.ts +38 -0
  73. package/dist/routes/joinLink.d.ts.map +1 -0
  74. package/dist/routes/joinLink.js +81 -0
  75. package/dist/routes/joinLink.js.map +1 -0
  76. package/dist/routes/membership.d.ts +116 -0
  77. package/dist/routes/membership.d.ts.map +1 -0
  78. package/dist/routes/membership.js +183 -0
  79. package/dist/routes/membership.js.map +1 -0
  80. package/dist/routes/notification.d.ts +103 -0
  81. package/dist/routes/notification.d.ts.map +1 -0
  82. package/dist/routes/notification.js +89 -0
  83. package/dist/routes/notification.js.map +1 -0
  84. package/dist/routes/payment.d.ts +56 -0
  85. package/dist/routes/payment.d.ts.map +1 -0
  86. package/dist/routes/payment.js +78 -0
  87. package/dist/routes/payment.js.map +1 -0
  88. package/dist/routes/product.d.ts +43 -0
  89. package/dist/routes/product.d.ts.map +1 -0
  90. package/dist/routes/product.js +53 -0
  91. package/dist/routes/product.js.map +1 -0
  92. package/dist/routes/project.d.ts +821 -0
  93. package/dist/routes/project.d.ts.map +1 -0
  94. package/dist/routes/project.js +1153 -0
  95. package/dist/routes/project.js.map +1 -0
  96. package/dist/routes/public.d.ts +269 -0
  97. package/dist/routes/public.d.ts.map +1 -0
  98. package/dist/routes/public.js +412 -0
  99. package/dist/routes/public.js.map +1 -0
  100. package/dist/routes/scratch.d.ts +70 -0
  101. package/dist/routes/scratch.d.ts.map +1 -0
  102. package/dist/routes/scratch.js +67 -0
  103. package/dist/routes/scratch.js.map +1 -0
  104. package/dist/routes/settings.d.ts +102 -0
  105. package/dist/routes/settings.d.ts.map +1 -0
  106. package/dist/routes/settings.js +94 -0
  107. package/dist/routes/settings.js.map +1 -0
  108. package/dist/routes/shortlink.d.ts +79 -0
  109. package/dist/routes/shortlink.d.ts.map +1 -0
  110. package/dist/routes/shortlink.js +25 -0
  111. package/dist/routes/shortlink.js.map +1 -0
  112. package/dist/routes/socket.d.ts +108 -0
  113. package/dist/routes/socket.d.ts.map +1 -0
  114. package/dist/routes/socket.js +555 -0
  115. package/dist/routes/socket.js.map +1 -0
  116. package/dist/routes/storage.d.ts +44 -0
  117. package/dist/routes/storage.d.ts.map +1 -0
  118. package/dist/routes/storage.js +49 -0
  119. package/dist/routes/storage.js.map +1 -0
  120. package/dist/routes/subscription.d.ts +184 -0
  121. package/dist/routes/subscription.d.ts.map +1 -0
  122. package/dist/routes/subscription.js +219 -0
  123. package/dist/routes/subscription.js.map +1 -0
  124. package/dist/routes/supportChat.d.ts +40 -0
  125. package/dist/routes/supportChat.d.ts.map +1 -0
  126. package/dist/routes/supportChat.js +53 -0
  127. package/dist/routes/supportChat.js.map +1 -0
  128. package/dist/routes/supportTicket.d.ts +89 -0
  129. package/dist/routes/supportTicket.d.ts.map +1 -0
  130. package/dist/routes/supportTicket.js +54 -0
  131. package/dist/routes/supportTicket.js.map +1 -0
  132. package/dist/routes/tag.d.ts +72 -0
  133. package/dist/routes/tag.d.ts.map +1 -0
  134. package/dist/routes/tag.js +81 -0
  135. package/dist/routes/tag.js.map +1 -0
  136. package/dist/routes/task.d.ts +252 -0
  137. package/dist/routes/task.d.ts.map +1 -0
  138. package/dist/routes/task.js +284 -0
  139. package/dist/routes/task.js.map +1 -0
  140. package/dist/routes/taskRelation.d.ts +80 -0
  141. package/dist/routes/taskRelation.d.ts.map +1 -0
  142. package/dist/routes/taskRelation.js +71 -0
  143. package/dist/routes/taskRelation.js.map +1 -0
  144. package/dist/routes/token.d.ts +75 -0
  145. package/dist/routes/token.d.ts.map +1 -0
  146. package/dist/routes/token.js +51 -0
  147. package/dist/routes/token.js.map +1 -0
  148. package/dist/routes/user.d.ts +112 -0
  149. package/dist/routes/user.d.ts.map +1 -0
  150. package/dist/routes/user.js +151 -0
  151. package/dist/routes/user.js.map +1 -0
  152. package/dist/routes/version.d.ts +42 -0
  153. package/dist/routes/version.d.ts.map +1 -0
  154. package/dist/routes/version.js +38 -0
  155. package/dist/routes/version.js.map +1 -0
  156. package/dist/routes/webhook.d.ts +170 -0
  157. package/dist/routes/webhook.d.ts.map +1 -0
  158. package/dist/routes/webhook.js +173 -0
  159. package/dist/routes/webhook.js.map +1 -0
  160. package/dist/routes/workspace.d.ts +120 -0
  161. package/dist/routes/workspace.d.ts.map +1 -0
  162. package/dist/routes/workspace.js +199 -0
  163. package/dist/routes/workspace.js.map +1 -0
  164. package/dist/utils/uploadSessionManager.d.ts +133 -0
  165. package/dist/utils/uploadSessionManager.d.ts.map +1 -0
  166. package/dist/utils/uploadSessionManager.js +321 -0
  167. package/dist/utils/uploadSessionManager.js.map +1 -0
  168. package/dist/utils/urlParams.d.ts +35 -0
  169. package/dist/utils/urlParams.d.ts.map +1 -0
  170. package/dist/utils/urlParams.js +146 -0
  171. package/dist/utils/urlParams.js.map +1 -0
  172. package/dist/version.d.ts +15 -0
  173. package/dist/version.d.ts.map +1 -0
  174. package/dist/version.js +12 -0
  175. package/dist/version.js.map +1 -0
  176. package/package.json +87 -3
  177. package/src/BotClient.ts +113 -0
  178. package/src/NuramaClient.ts +1193 -0
  179. package/src/bot-browser-entry.js +15 -0
  180. package/src/browser-entry.js +20 -0
  181. package/src/routes/ai.ts +378 -0
  182. package/src/routes/asset.ts +1104 -0
  183. package/src/routes/auth.ts +587 -0
  184. package/src/routes/blogPosts.ts +29 -0
  185. package/src/routes/board.ts +403 -0
  186. package/src/routes/bot.ts +257 -0
  187. package/src/routes/chat.ts +1292 -0
  188. package/src/routes/chatAi.ts +125 -0
  189. package/src/routes/config.ts +31 -0
  190. package/src/routes/convo.ts +321 -0
  191. package/src/routes/credits.ts +112 -0
  192. package/src/routes/device.ts +133 -0
  193. package/src/routes/folder.ts +154 -0
  194. package/src/routes/invite.ts +133 -0
  195. package/src/routes/joinLink.ts +100 -0
  196. package/src/routes/membership.ts +237 -0
  197. package/src/routes/notification.ts +166 -0
  198. package/src/routes/payment.ts +104 -0
  199. package/src/routes/product.ts +67 -0
  200. package/src/routes/project.ts +1528 -0
  201. package/src/routes/public.ts +496 -0
  202. package/src/routes/scratch.ts +94 -0
  203. package/src/routes/settings.ts +152 -0
  204. package/src/routes/shortlink.ts +90 -0
  205. package/src/routes/socket.ts +739 -0
  206. package/src/routes/storage.ts +83 -0
  207. package/src/routes/subscription.ts +307 -0
  208. package/src/routes/supportChat.ts +62 -0
  209. package/src/routes/supportTicket.ts +114 -0
  210. package/src/routes/tag.ts +131 -0
  211. package/src/routes/task.ts +431 -0
  212. package/src/routes/taskRelation.ts +125 -0
  213. package/src/routes/token.ts +113 -0
  214. package/src/routes/user.ts +214 -0
  215. package/src/routes/version.ts +62 -0
  216. package/src/routes/webhook.ts +295 -0
  217. package/src/routes/workspace.ts +223 -0
  218. package/src/utils/uploadSessionManager.ts +407 -0
  219. package/src/utils/urlParams.ts +181 -0
  220. package/src/version.ts +22 -0
@@ -0,0 +1,75 @@
1
+ import NuramaClient from '../NuramaClient.js';
2
+ import { type Folder, type Asset, type PaginatedResult, type CursorPaginatedResult } from '@nurama/types';
3
+ export type PaginatedResponse<T> = (PaginatedResult | CursorPaginatedResult) & {
4
+ results?: T[];
5
+ };
6
+ export interface PaginationParams {
7
+ limit?: number;
8
+ page?: number;
9
+ }
10
+ export interface SortParams {
11
+ sort?: Record<string, 1 | -1>;
12
+ }
13
+ export interface UpdateFolderData {
14
+ name?: string;
15
+ color?: string;
16
+ }
17
+ export interface UpdateFolderIconData {
18
+ name: string;
19
+ checksum: string;
20
+ sizeInMB: number;
21
+ }
22
+ export interface TagFolderData {
23
+ tagId: string;
24
+ }
25
+ export interface UntagFolderData {
26
+ tagId: string;
27
+ }
28
+ export interface GetFoldersAssetsParams extends PaginationParams, SortParams {
29
+ visibility?: 'creator' | 'reviewer';
30
+ chats?: boolean;
31
+ messages?: number;
32
+ replies?: number;
33
+ }
34
+ export type FolderResponse = Folder;
35
+ export type AssetResponse = Asset;
36
+ /**
37
+ * Defines folder-related methods for the NuramaClient.
38
+ * @param {NuramaClient} client - The NuramaClient instance.
39
+ * @returns {object} An object containing the folder-related methods.
40
+ */
41
+ export default function createFolderMethods(client: NuramaClient): {
42
+ /** Fetch a single folder by id. */
43
+ getFolder(folderId: string): Promise<FolderResponse>;
44
+ /**
45
+ * Updates a folder's name and/or color.
46
+ * @param {string} folderId - The ID of the folder to update.
47
+ * @param {UpdateFolderData} data - Data containing the name and/or color to update.
48
+ * @returns {Promise<FolderResponse>} The updated folder object.
49
+ */
50
+ updateFolder(folderId: string, data: UpdateFolderData): Promise<FolderResponse>;
51
+ /**
52
+ * Updates a folder's icon.
53
+ * @param {string} folderId - The ID of the folder to update.
54
+ * @param {UpdateFolderIconData} data - Icon file data including name, checksum, and size.
55
+ * @returns {Promise<any>} Object containing the updated folder and signed upload URLs.
56
+ */
57
+ updateFolderIcon(folderId: string, data: UpdateFolderIconData): Promise<any>;
58
+ /** List the assets that live directly inside a folder (does not recurse). */
59
+ getFoldersAssets(folderId: string, params?: GetFoldersAssetsParams): Promise<PaginatedResponse<AssetResponse>>;
60
+ /**
61
+ * Tags a folder with a specific tag.
62
+ * @param {string} folderId - The ID of the folder to tag.
63
+ * @param {TagFolderData} tagData - Data containing the tag ID.
64
+ * @returns {Promise<FolderResponse>} The updated folder object.
65
+ */
66
+ tagFolder(folderId: string, tagData: TagFolderData): Promise<FolderResponse>;
67
+ /**
68
+ * Untags a folder by removing a specific tag.
69
+ * @param {string} folderId - The ID of the folder to untag.
70
+ * @param {UntagFolderData} untagData - Data containing the tag ID to remove.
71
+ * @returns {Promise<FolderResponse>} The updated folder object.
72
+ */
73
+ untagFolder(folderId: string, untagData: UntagFolderData): Promise<FolderResponse>;
74
+ };
75
+ //# sourceMappingURL=folder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folder.d.ts","sourceRoot":"","sources":["../../src/routes/folder.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EACL,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC3B,MAAM,eAAe,CAAC;AAIvB,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,GAAG;IAC7E,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;CACf,CAAC;AAGF,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACjC;AAGD,MAAM,WAAW,gBAAgB;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB,EAAE,UAAU;IACxE,UAAU,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AACpC,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC;AAElC;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,MAAM,EAAE,YAAY;IAE5D,mCAAmC;wBACT,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAS1D;;;;;OAKG;2BAC0B,MAAM,QAAQ,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC;IAUrF;;;;;OAKG;+BAC8B,MAAM,QAAQ,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;IAUlF,6EAA6E;+BAC5C,MAAM,WAAW,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAUpH;;;;;OAKG;wBACuB,MAAM,WAAW,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAWlF;;;;;OAKG;0BACyB,MAAM,aAAa,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;EAY3F"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Defines folder-related methods for the NuramaClient.
3
+ * @param {NuramaClient} client - The NuramaClient instance.
4
+ * @returns {object} An object containing the folder-related methods.
5
+ */
6
+ export default function createFolderMethods(client) {
7
+ return {
8
+ /** Fetch a single folder by id. */
9
+ async getFolder(folderId) {
10
+ if (!folderId)
11
+ throw new Error('folderId is required.');
12
+ return client._request({
13
+ method: 'GET',
14
+ endpoint: `/v1/folders/${folderId}`,
15
+ sendJWT: true,
16
+ });
17
+ },
18
+ /**
19
+ * Updates a folder's name and/or color.
20
+ * @param {string} folderId - The ID of the folder to update.
21
+ * @param {UpdateFolderData} data - Data containing the name and/or color to update.
22
+ * @returns {Promise<FolderResponse>} The updated folder object.
23
+ */
24
+ async updateFolder(folderId, data) {
25
+ if (!folderId)
26
+ throw new Error('folderId is required.');
27
+ return client._request({
28
+ method: 'PUT',
29
+ endpoint: `/v1/folders/${folderId}`,
30
+ body: data,
31
+ sendJWT: true,
32
+ });
33
+ },
34
+ /**
35
+ * Updates a folder's icon.
36
+ * @param {string} folderId - The ID of the folder to update.
37
+ * @param {UpdateFolderIconData} data - Icon file data including name, checksum, and size.
38
+ * @returns {Promise<any>} Object containing the updated folder and signed upload URLs.
39
+ */
40
+ async updateFolderIcon(folderId, data) {
41
+ if (!folderId)
42
+ throw new Error('folderId is required.');
43
+ return client._request({
44
+ method: 'PUT',
45
+ endpoint: `/v1/folders/${folderId}/icon`,
46
+ body: data,
47
+ sendJWT: true,
48
+ });
49
+ },
50
+ /** List the assets that live directly inside a folder (does not recurse). */
51
+ async getFoldersAssets(folderId, params) {
52
+ if (!folderId)
53
+ throw new Error('folderId is required.');
54
+ return client._request({
55
+ method: 'GET',
56
+ endpoint: `/v1/folders/${folderId}/assets`,
57
+ params: params,
58
+ sendJWT: true,
59
+ });
60
+ },
61
+ /**
62
+ * Tags a folder with a specific tag.
63
+ * @param {string} folderId - The ID of the folder to tag.
64
+ * @param {TagFolderData} tagData - Data containing the tag ID.
65
+ * @returns {Promise<FolderResponse>} The updated folder object.
66
+ */
67
+ async tagFolder(folderId, tagData) {
68
+ if (!folderId)
69
+ throw new Error('folderId is required.');
70
+ if (!tagData.tagId)
71
+ throw new Error('tagId is required.');
72
+ return client._request({
73
+ method: 'PUT',
74
+ endpoint: `/v1/folders/${folderId}/tag`,
75
+ body: tagData,
76
+ sendJWT: true,
77
+ });
78
+ },
79
+ /**
80
+ * Untags a folder by removing a specific tag.
81
+ * @param {string} folderId - The ID of the folder to untag.
82
+ * @param {UntagFolderData} untagData - Data containing the tag ID to remove.
83
+ * @returns {Promise<FolderResponse>} The updated folder object.
84
+ */
85
+ async untagFolder(folderId, untagData) {
86
+ if (!folderId)
87
+ throw new Error('folderId is required.');
88
+ if (!untagData.tagId)
89
+ throw new Error('tagId is required.');
90
+ return client._request({
91
+ method: 'PUT',
92
+ endpoint: `/v1/folders/${folderId}/untag`,
93
+ body: untagData,
94
+ sendJWT: true,
95
+ });
96
+ },
97
+ };
98
+ }
99
+ //# sourceMappingURL=folder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folder.js","sourceRoot":"","sources":["../../src/routes/folder.ts"],"names":[],"mappings":"AA0DA;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,MAAoB;IAC9D,OAAO;QACL,mCAAmC;QACnC,KAAK,CAAC,SAAS,CAAC,QAAgB;YAC9B,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC,QAAQ,CAAiB;gBACrC,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,eAAe,QAAQ,EAAE;gBACnC,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;;;WAKG;QACH,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,IAAsB;YACzD,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC,QAAQ,CAAiB;gBACrC,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,eAAe,QAAQ,EAAE;gBACnC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;;;WAKG;QACH,KAAK,CAAC,gBAAgB,CAAC,QAAgB,EAAE,IAA0B;YACjE,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC,QAAQ,CAAM;gBAC1B,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,eAAe,QAAQ,OAAO;gBACxC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED,6EAA6E;QAC7E,KAAK,CAAC,gBAAgB,CAAC,QAAgB,EAAE,MAA+B;YACtE,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC,QAAQ,CAAmC;gBACvD,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,eAAe,QAAQ,SAAS;gBAC1C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;;;WAKG;QACH,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,OAAsB;YACtD,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACxD,IAAI,CAAC,OAAO,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC1D,OAAO,MAAM,CAAC,QAAQ,CAAiB;gBACrC,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,eAAe,QAAQ,MAAM;gBACvC,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;;;WAKG;QACH,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,SAA0B;YAC5D,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACxD,IAAI,CAAC,SAAS,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC5D,OAAO,MAAM,CAAC,QAAQ,CAAiB;gBACrC,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,eAAe,QAAQ,QAAQ;gBACzC,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;KAEF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,61 @@
1
+ import NuramaClient from '../NuramaClient.js';
2
+ import { type Invite, type Membership, type PaginatedResult, type CursorPaginatedResult } from '@nurama/types';
3
+ export type PaginatedResponse<T> = (PaginatedResult | CursorPaginatedResult) & {
4
+ results?: T[];
5
+ };
6
+ export interface InviteUserToResourceData {
7
+ inviteeEmail: string;
8
+ resourceType: string;
9
+ resourceId: string;
10
+ role: string;
11
+ /** Optional workspace-level roles granted alongside the primary role
12
+ * (subset of the backend `additionalRoles`, e.g. workspaceChatMember,
13
+ * workspaceAdmin). Applied to the workspace membership on accept. */
14
+ additionalRoles?: string[];
15
+ }
16
+ export type InviteStatus = 'active' | 'canceled' | 'accepted';
17
+ export interface GetUsersInvitesParams {
18
+ inviteType?: 'all' | 'inviter' | 'invitee';
19
+ status?: InviteStatus | InviteStatus[];
20
+ }
21
+ export interface GetInvitesToResourceParams {
22
+ status?: InviteStatus | InviteStatus[];
23
+ }
24
+ export type InviteResponse = Invite;
25
+ export type PaginatedInvitesResponse = PaginatedResponse<Invite> | {
26
+ inviter: Invite[];
27
+ invitee: Invite[];
28
+ } | Invite[];
29
+ export type AcceptInviteResponse = {
30
+ membership: Membership;
31
+ invite: Invite;
32
+ };
33
+ /**
34
+ * Defines invite-related methods for the NuramaClient.
35
+ * @param {NuramaClient} client - The NuramaClient instance.
36
+ * @returns {object} An object containing the invite-related methods.
37
+ */
38
+ export default function createInviteMethods(client: NuramaClient): {
39
+ /**
40
+ * Invite a user (by email) to a workspace or project at a given role.
41
+ * Triggers an invitation email; the recipient accepts via the link.
42
+ */
43
+ inviteUser(data: InviteUserToResourceData): Promise<InviteResponse>;
44
+ /** List invites the current user has issued (pending, accepted, expired). */
45
+ getInvites(params?: GetUsersInvitesParams): Promise<PaginatedInvitesResponse>;
46
+ /**
47
+ * Look up an invite by id. Public — no auth — so the recipient can
48
+ * preview the invite (target resource, role, inviter) before signing
49
+ * up or logging in.
50
+ */
51
+ getInviteById(inviteId: string): Promise<InviteResponse>;
52
+ /** Revoke a pending invite. */
53
+ cancelInvite(inviteId: string): Promise<InviteResponse>;
54
+ /** List pending invites attached to a workspace or project resource. */
55
+ getInvitesForResource(resourceId: string, params?: GetInvitesToResourceParams): Promise<InviteResponse[]>;
56
+ /** Accept an invite for the authenticated user. Creates the membership. */
57
+ acceptInvite(inviteId: string): Promise<AcceptInviteResponse>;
58
+ /** Re-send a pending invite email (does not extend or reissue the token). */
59
+ resendInvite(inviteId: string): Promise<InviteResponse>;
60
+ };
61
+ //# sourceMappingURL=invite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invite.d.ts","sourceRoot":"","sources":["../../src/routes/invite.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EACL,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC3B,MAAM,eAAe,CAAC;AAIvB,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,GAAG;IAC7E,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;CACf,CAAC;AAGF,MAAM,WAAW,wBAAwB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb;;0EAEsE;IACtE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAGD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,qBAAqB;IAClC,UAAU,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;IAC3C,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,0BAA0B;IACvC,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;CAC1C;AAGD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAEpC,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,MAAM,CAAC,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,MAAM,EAAE,CAAC;AACvH,MAAM,MAAM,oBAAoB,GAAG;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,MAAM,EAAE,YAAY;IAE5D;;;OAGG;qBACoB,wBAAwB,GAAG,OAAO,CAAC,cAAc,CAAC;IASzE,6EAA6E;wBACnD,qBAAqB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IASnF;;;;OAIG;4BAC2B,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAS9D,+BAA+B;2BACF,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAS7D,wEAAwE;sCAChC,MAAM,WAAW,0BAA0B,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAU/G,2EAA2E;2BAC9C,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IASnE,6EAA6E;2BAChD,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;EAShE"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Defines invite-related methods for the NuramaClient.
3
+ * @param {NuramaClient} client - The NuramaClient instance.
4
+ * @returns {object} An object containing the invite-related methods.
5
+ */
6
+ export default function createInviteMethods(client) {
7
+ return {
8
+ /**
9
+ * Invite a user (by email) to a workspace or project at a given role.
10
+ * Triggers an invitation email; the recipient accepts via the link.
11
+ */
12
+ async inviteUser(data) {
13
+ return client._request({
14
+ method: 'POST',
15
+ endpoint: '/v1/invites',
16
+ body: data,
17
+ sendJWT: true,
18
+ });
19
+ },
20
+ /** List invites the current user has issued (pending, accepted, expired). */
21
+ async getInvites(params) {
22
+ return client._request({
23
+ method: 'GET',
24
+ endpoint: '/v1/invites',
25
+ params: params,
26
+ sendJWT: true,
27
+ });
28
+ },
29
+ /**
30
+ * Look up an invite by id. Public — no auth — so the recipient can
31
+ * preview the invite (target resource, role, inviter) before signing
32
+ * up or logging in.
33
+ */
34
+ async getInviteById(inviteId) {
35
+ if (!inviteId)
36
+ throw new Error('inviteId is required.');
37
+ return client._request({
38
+ method: 'GET',
39
+ endpoint: `/v1/invites/${inviteId}`,
40
+ sendJWT: false, // Public route - no authentication required
41
+ });
42
+ },
43
+ /** Revoke a pending invite. */
44
+ async cancelInvite(inviteId) {
45
+ if (!inviteId)
46
+ throw new Error('inviteId is required.');
47
+ return client._request({
48
+ method: 'DELETE',
49
+ endpoint: `/v1/invites/${inviteId}`,
50
+ sendJWT: true,
51
+ });
52
+ },
53
+ /** List pending invites attached to a workspace or project resource. */
54
+ async getInvitesForResource(resourceId, params) {
55
+ if (!resourceId)
56
+ throw new Error('resourceId is required.');
57
+ return client._request({
58
+ method: 'GET',
59
+ endpoint: `/v1/invites/resource/${resourceId}`,
60
+ params: params,
61
+ sendJWT: true,
62
+ });
63
+ },
64
+ /** Accept an invite for the authenticated user. Creates the membership. */
65
+ async acceptInvite(inviteId) {
66
+ if (!inviteId)
67
+ throw new Error('inviteId is required.');
68
+ return client._request({
69
+ method: 'POST',
70
+ endpoint: `/v1/invites/accept/${inviteId}`,
71
+ sendJWT: true,
72
+ });
73
+ },
74
+ /** Re-send a pending invite email (does not extend or reissue the token). */
75
+ async resendInvite(inviteId) {
76
+ if (!inviteId)
77
+ throw new Error('inviteId is required.');
78
+ return client._request({
79
+ method: 'POST',
80
+ endpoint: `/v1/invites/resend/${inviteId}`,
81
+ sendJWT: true,
82
+ });
83
+ },
84
+ };
85
+ }
86
+ //# sourceMappingURL=invite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invite.js","sourceRoot":"","sources":["../../src/routes/invite.ts"],"names":[],"mappings":"AA+CA;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,MAAoB;IAC9D,OAAO;QACL;;;WAGG;QACH,KAAK,CAAC,UAAU,CAAC,IAA8B;YAC7C,OAAO,MAAM,CAAC,QAAQ,CAAiB;gBACrC,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,aAAa;gBACvB,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED,6EAA6E;QAC7E,KAAK,CAAC,UAAU,CAAC,MAA8B;YAC7C,OAAO,MAAM,CAAC,QAAQ,CAA2B;gBAC/C,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,aAAa;gBACvB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;;WAIG;QACH,KAAK,CAAC,aAAa,CAAC,QAAgB;YAClC,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC,QAAQ,CAAiB;gBACrC,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,eAAe,QAAQ,EAAE;gBACnC,OAAO,EAAE,KAAK,EAAE,4CAA4C;aAC7D,CAAC,CAAC;QACL,CAAC;QAED,+BAA+B;QAC/B,KAAK,CAAC,YAAY,CAAC,QAAgB;YACjC,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC,QAAQ,CAAiB;gBACrC,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,eAAe,QAAQ,EAAE;gBACnC,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED,wEAAwE;QACxE,KAAK,CAAC,qBAAqB,CAAC,UAAkB,EAAE,MAAmC;YACjF,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC5D,OAAO,MAAM,CAAC,QAAQ,CAAmB;gBACvC,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,wBAAwB,UAAU,EAAE;gBAC9C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED,2EAA2E;QAC3E,KAAK,CAAC,YAAY,CAAC,QAAgB;YACjC,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC,QAAQ,CAAuB;gBAC3C,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,sBAAsB,QAAQ,EAAE;gBAC1C,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED,6EAA6E;QAC7E,KAAK,CAAC,YAAY,CAAC,QAAgB;YACjC,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC,QAAQ,CAAiB;gBACrC,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,sBAAsB,QAAQ,EAAE;gBAC1C,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,38 @@
1
+ import NuramaClient from '../NuramaClient.js';
2
+ import { type JoinLink, type JoinLinkPreview, type CreateJoinLinkPayload, type UpdateJoinLinkPayload, type RedeemJoinLinkResult } from '@nurama/types';
3
+ export interface GetJoinLinksParams {
4
+ projectId: string;
5
+ }
6
+ export type JoinLinkResponse = JoinLink;
7
+ export interface JoinLinksListResponse {
8
+ results: JoinLink[];
9
+ }
10
+ /**
11
+ * Defines join-link ("invite link") methods for the NuramaClient. A join link
12
+ * lets people join a project via a shareable URL; management is gated by the
13
+ * caller's grant authority and the workspace plan's per-mode capability
14
+ * (enforced server-side).
15
+ * @param {NuramaClient} client - The NuramaClient instance.
16
+ * @returns {object} An object containing the join-link methods.
17
+ */
18
+ export default function createJoinLinkMethods(client: NuramaClient): {
19
+ /** Create a join link for a project. */
20
+ createJoinLink(data: CreateJoinLinkPayload): Promise<JoinLinkResponse>;
21
+ /** List a project's join links. */
22
+ getJoinLinks(params: GetJoinLinksParams): Promise<JoinLinksListResponse>;
23
+ /** Update a join link's settings (role, mode, domains, expiry, enable/disable). */
24
+ updateJoinLink(linkId: string, data: UpdateJoinLinkPayload): Promise<JoinLinkResponse>;
25
+ /**
26
+ * Rotate a link's token, invalidating the old URL. Optionally reset expiry.
27
+ * Existing memberships are untouched.
28
+ */
29
+ rollJoinLink(linkId: string, expiresAt?: string | null): Promise<JoinLinkResponse>;
30
+ /**
31
+ * Public preview of a join link by token — no auth — so the join landing
32
+ * page can show "Join <project>" before the visitor signs in.
33
+ */
34
+ getJoinByToken(token: string): Promise<JoinLinkPreview>;
35
+ /** Redeem a join link for the authenticated user. */
36
+ joinByToken(token: string): Promise<RedeemJoinLinkResult>;
37
+ };
38
+ //# sourceMappingURL=joinLink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joinLink.d.ts","sourceRoot":"","sources":["../../src/routes/joinLink.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAC1B,MAAM,eAAe,CAAC;AAGvB,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AACxC,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,MAAM,EAAE,YAAY;IAE9D,wCAAwC;yBACb,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAS5E,mCAAmC;yBACR,kBAAkB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAU9E,mFAAmF;2BACtD,MAAM,QAAQ,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAU5F;;;OAGG;yBACwB,MAAM,cAAc,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAUxF;;;OAGG;0BACyB,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAS7D,qDAAqD;uBAC5B,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;EASlE"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Defines join-link ("invite link") methods for the NuramaClient. A join link
3
+ * lets people join a project via a shareable URL; management is gated by the
4
+ * caller's grant authority and the workspace plan's per-mode capability
5
+ * (enforced server-side).
6
+ * @param {NuramaClient} client - The NuramaClient instance.
7
+ * @returns {object} An object containing the join-link methods.
8
+ */
9
+ export default function createJoinLinkMethods(client) {
10
+ return {
11
+ /** Create a join link for a project. */
12
+ async createJoinLink(data) {
13
+ return client._request({
14
+ method: 'POST',
15
+ endpoint: '/v1/join-links',
16
+ body: data,
17
+ sendJWT: true,
18
+ });
19
+ },
20
+ /** List a project's join links. */
21
+ async getJoinLinks(params) {
22
+ if (!params?.projectId)
23
+ throw new Error('projectId is required.');
24
+ return client._request({
25
+ method: 'GET',
26
+ endpoint: '/v1/join-links',
27
+ params,
28
+ sendJWT: true,
29
+ });
30
+ },
31
+ /** Update a join link's settings (role, mode, domains, expiry, enable/disable). */
32
+ async updateJoinLink(linkId, data) {
33
+ if (!linkId)
34
+ throw new Error('linkId is required.');
35
+ return client._request({
36
+ method: 'PATCH',
37
+ endpoint: `/v1/join-links/${linkId}`,
38
+ body: data,
39
+ sendJWT: true,
40
+ });
41
+ },
42
+ /**
43
+ * Rotate a link's token, invalidating the old URL. Optionally reset expiry.
44
+ * Existing memberships are untouched.
45
+ */
46
+ async rollJoinLink(linkId, expiresAt) {
47
+ if (!linkId)
48
+ throw new Error('linkId is required.');
49
+ return client._request({
50
+ method: 'POST',
51
+ endpoint: `/v1/join-links/${linkId}/roll`,
52
+ body: expiresAt !== undefined ? { expiresAt } : {},
53
+ sendJWT: true,
54
+ });
55
+ },
56
+ /**
57
+ * Public preview of a join link by token — no auth — so the join landing
58
+ * page can show "Join <project>" before the visitor signs in.
59
+ */
60
+ async getJoinByToken(token) {
61
+ if (!token)
62
+ throw new Error('token is required.');
63
+ return client._request({
64
+ method: 'GET',
65
+ endpoint: `/v1/join/${token}`,
66
+ sendJWT: false, // Public route - no authentication required
67
+ });
68
+ },
69
+ /** Redeem a join link for the authenticated user. */
70
+ async joinByToken(token) {
71
+ if (!token)
72
+ throw new Error('token is required.');
73
+ return client._request({
74
+ method: 'POST',
75
+ endpoint: `/v1/join/${token}`,
76
+ sendJWT: true,
77
+ });
78
+ },
79
+ };
80
+ }
81
+ //# sourceMappingURL=joinLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joinLink.js","sourceRoot":"","sources":["../../src/routes/joinLink.ts"],"names":[],"mappings":"AAoBA;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,MAAoB;IAChE,OAAO;QACL,wCAAwC;QACxC,KAAK,CAAC,cAAc,CAAC,IAA2B;YAC9C,OAAO,MAAM,CAAC,QAAQ,CAAmB;gBACvC,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,gBAAgB;gBAC1B,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED,mCAAmC;QACnC,KAAK,CAAC,YAAY,CAAC,MAA0B;YAC3C,IAAI,CAAC,MAAM,EAAE,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAClE,OAAO,MAAM,CAAC,QAAQ,CAAwB;gBAC5C,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,gBAAgB;gBAC1B,MAAM;gBACN,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED,mFAAmF;QACnF,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,IAA2B;YAC9D,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACpD,OAAO,MAAM,CAAC,QAAQ,CAAmB;gBACvC,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,kBAAkB,MAAM,EAAE;gBACpC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;WAGG;QACH,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,SAAyB;YAC1D,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACpD,OAAO,MAAM,CAAC,QAAQ,CAAmB;gBACvC,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,kBAAkB,MAAM,OAAO;gBACzC,IAAI,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE;gBAClD,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;WAGG;QACH,KAAK,CAAC,cAAc,CAAC,KAAa;YAChC,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAClD,OAAO,MAAM,CAAC,QAAQ,CAAkB;gBACtC,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,YAAY,KAAK,EAAE;gBAC7B,OAAO,EAAE,KAAK,EAAE,4CAA4C;aAC7D,CAAC,CAAC;QACL,CAAC;QAED,qDAAqD;QACrD,KAAK,CAAC,WAAW,CAAC,KAAa;YAC7B,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAClD,OAAO,MAAM,CAAC,QAAQ,CAAuB;gBAC3C,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,YAAY,KAAK,EAAE;gBAC7B,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,116 @@
1
+ import NuramaClient from '../NuramaClient.js';
2
+ import { type Membership, type MembershipReport, type Mentionable } from '@nurama/types';
3
+ export interface PaginationParams {
4
+ limit?: number;
5
+ page?: number;
6
+ }
7
+ export interface SortParams {
8
+ sort?: Record<string, 1 | -1>;
9
+ }
10
+ export interface AddRemoveRoleData {
11
+ membershipId: string;
12
+ role: string;
13
+ }
14
+ export interface GetWorkspaceMembershipParams extends PaginationParams, SortParams {
15
+ nameSearch?: string | null;
16
+ isBillable?: boolean;
17
+ }
18
+ export interface GetProjectMembershipParams extends PaginationParams, SortParams {
19
+ nameSearch?: string | null;
20
+ }
21
+ export interface GetLastSeenData {
22
+ userIds: string[];
23
+ }
24
+ export interface LastSeenResult {
25
+ userId: string;
26
+ resourceId: string;
27
+ resourceType: 'workspace' | 'project';
28
+ lastSeen: string | null;
29
+ }
30
+ export interface GetLastSeenResponse {
31
+ results: LastSeenResult[];
32
+ }
33
+ export type MembershipResponse = Membership;
34
+ export type PaginatedMembershipResponse = MembershipReport;
35
+ export type MentionableUserResponse = Mentionable;
36
+ /**
37
+ * Defines membership-related methods for the NuramaClient.
38
+ * @param {NuramaClient} client - The NuramaClient instance.
39
+ * @returns {object} An object containing the membership-related methods.
40
+ */
41
+ export default function createMembershipMethods(client: NuramaClient): {
42
+ /**
43
+ * Retrieves the membership records for the currently authenticated user.
44
+ * @returns {Promise<MembershipResponse[]>} An array of the user's membership records.
45
+ */
46
+ getMyMemberships(): Promise<MembershipResponse[]>;
47
+ /**
48
+ * Retrieves memberships associated with a specific workspace.
49
+ * Requires permission to get workspace members.
50
+ * @param {string} workspaceId - The ID of the workspace.
51
+ * @param {GetWorkspaceMembershipParams} [params] - Query parameters for pagination, sorting, filtering.
52
+ * @returns {Promise<PaginatedMembershipResponse>} Paginated list of workspace memberships.
53
+ */
54
+ getWorkspaceMemberships(workspaceId: string, params?: GetWorkspaceMembershipParams): Promise<PaginatedMembershipResponse>;
55
+ /**
56
+ * Retrieves memberships associated with a specific project.
57
+ * Requires permission based on user's role in the project/workspace.
58
+ * @param {string} projectId - The ID of the project.
59
+ * @param {GetProjectMembershipParams} [params] - Query parameters for pagination, sorting, filtering.
60
+ * @returns {Promise<PaginatedMembershipResponse>} Paginated list of project memberships.
61
+ */
62
+ getProjectMemberships(projectId: string, params?: GetProjectMembershipParams): Promise<PaginatedMembershipResponse>;
63
+ /**
64
+ * Deletes a specific membership record by its ID.
65
+ * Requires specific permissions to delete others' memberships.
66
+ * @param {string} membershipId - The ID of the membership record to delete.
67
+ * @returns {Promise<void>}
68
+ */
69
+ deleteMembership(membershipId: string): Promise<void>;
70
+ /**
71
+ * Allows the authenticated user to leave a resource (delete their own membership).
72
+ * Cannot be used to remove ownership roles.
73
+ * @param {string} resourceId - The ID of the resource (workspace or project) to leave.
74
+ * @returns {Promise<void>}
75
+ */
76
+ leaveResource(resourceId: string): Promise<void>;
77
+ /**
78
+ * Adds a role to an existing membership record.
79
+ * Requires permission to add roles.
80
+ * @param {AddRemoveRoleData} data - Object containing membershipId and the role to add.
81
+ * @returns {Promise<MembershipResponse>} The updated membership object.
82
+ */
83
+ addRole(data: AddRemoveRoleData): Promise<MembershipResponse>;
84
+ /**
85
+ * Removes a role from an existing membership record.
86
+ * Requires permission to remove roles. Cannot remove ownership roles.
87
+ * @param {AddRemoveRoleData} data - Object containing membershipId and the role to remove.
88
+ * @returns {Promise<MembershipResponse>} The updated membership object.
89
+ */
90
+ removeRole(data: AddRemoveRoleData): Promise<MembershipResponse>;
91
+ /**
92
+ * Retrieves a list of users mentionable within a project based on visibility.
93
+ * Requires permission to get mentionable users.
94
+ * @param {string} projectId - The ID of the project.
95
+ * @param {'creator' | 'reviewer' | 'all'} visibility - The visibility scope. Pass 'all' to get users from both creator and reviewer visibilities (e.g. for boards visible to both).
96
+ * @returns {Promise<MentionableUserResponse[]>} An array of mentionable user objects.
97
+ */
98
+ getProjectMentionableUsers(projectId: string, visibility: "creator" | "reviewer" | "all"): Promise<MentionableUserResponse[]>;
99
+ /**
100
+ * Retrieves resource-specific last seen timestamps for multiple users in a workspace.
101
+ * Requires permission to get workspace members.
102
+ * @param {string} workspaceId - The ID of the workspace.
103
+ * @param {GetLastSeenData} data - Object containing array of user IDs (1-100).
104
+ * @returns {Promise<GetLastSeenResponse>} Object with results array containing last seen data.
105
+ */
106
+ getWorkspaceLastSeen(workspaceId: string, data: GetLastSeenData): Promise<GetLastSeenResponse>;
107
+ /**
108
+ * Retrieves resource-specific last seen timestamps for multiple users in a project.
109
+ * Requires permission to get project members.
110
+ * @param {string} projectId - The ID of the project.
111
+ * @param {GetLastSeenData} data - Object containing array of user IDs (1-100).
112
+ * @returns {Promise<GetLastSeenResponse>} Object with results array containing last seen data.
113
+ */
114
+ getProjectLastSeen(projectId: string, data: GetLastSeenData): Promise<GetLastSeenResponse>;
115
+ };
116
+ //# sourceMappingURL=membership.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"membership.d.ts","sourceRoot":"","sources":["../../src/routes/membership.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EACL,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,eAAe,CAAC;AAGvB,MAAM,WAAW,gBAAgB;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACjC;AAGD,MAAM,WAAW,iBAAiB;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,4BAA6B,SAAQ,gBAAgB,EAAE,UAAU;IAC9E,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,0BAA2B,SAAQ,gBAAgB,EAAE,UAAU;IAC5E,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAGD,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,WAAW,GAAG,SAAS,CAAC;IACtC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAChC,OAAO,EAAE,cAAc,EAAE,CAAC;CAC7B;AAGD,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC;AAC5C,MAAM,MAAM,2BAA2B,GAAG,gBAAgB,CAAC;AAC3D,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAAC;AAElD;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,MAAM,EAAE,YAAY;IAEhE;;;WAGO;wBACmB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAQvD;;;;;;WAMO;yCACoC,MAAM,WAAW,4BAA4B,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAU/H;;;;;;WAMO;qCACgC,MAAM,WAAW,0BAA0B,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAUzH;;;;;WAKO;mCAC8B,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3D;;;;;WAKO;8BACyB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAStD;;;;;WAKO;kBACa,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAYnE;;;;;WAKO;qBACgB,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAYtE;;;;;;WAMO;0CACqC,MAAM,cAAc,SAAS,GAAG,UAAU,GAAG,KAAK,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAUnI;;;;;;WAMO;sCACiC,MAAM,QAAQ,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAgBpG;;;;;;WAMO;kCAC6B,MAAM,QAAQ,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;EAgBnG"}