@nurama/sdk 0.0.0-stage → 1.4.1

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 (225) 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 +480 -0
  9. package/dist/NuramaClient.d.ts.map +1 -0
  10. package/dist/NuramaClient.js +902 -0
  11. package/dist/NuramaClient.js.map +1 -0
  12. package/dist/browser/nurama-bot-sdk.js +12051 -0
  13. package/dist/browser/nurama-bot-sdk.min.js +1 -0
  14. package/dist/browser/nurama-sdk.js +12003 -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 +202 -0
  37. package/dist/routes/bot.d.ts.map +1 -0
  38. package/dist/routes/bot.js +229 -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 +88 -0
  73. package/dist/routes/joinLink.d.ts.map +1 -0
  74. package/dist/routes/joinLink.js +205 -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/oauthGrant.d.ts +45 -0
  85. package/dist/routes/oauthGrant.d.ts.map +1 -0
  86. package/dist/routes/oauthGrant.js +32 -0
  87. package/dist/routes/oauthGrant.js.map +1 -0
  88. package/dist/routes/payment.d.ts +56 -0
  89. package/dist/routes/payment.d.ts.map +1 -0
  90. package/dist/routes/payment.js +78 -0
  91. package/dist/routes/payment.js.map +1 -0
  92. package/dist/routes/product.d.ts +43 -0
  93. package/dist/routes/product.d.ts.map +1 -0
  94. package/dist/routes/product.js +53 -0
  95. package/dist/routes/product.js.map +1 -0
  96. package/dist/routes/project.d.ts +821 -0
  97. package/dist/routes/project.d.ts.map +1 -0
  98. package/dist/routes/project.js +1153 -0
  99. package/dist/routes/project.js.map +1 -0
  100. package/dist/routes/public.d.ts +269 -0
  101. package/dist/routes/public.d.ts.map +1 -0
  102. package/dist/routes/public.js +412 -0
  103. package/dist/routes/public.js.map +1 -0
  104. package/dist/routes/scratch.d.ts +70 -0
  105. package/dist/routes/scratch.d.ts.map +1 -0
  106. package/dist/routes/scratch.js +67 -0
  107. package/dist/routes/scratch.js.map +1 -0
  108. package/dist/routes/settings.d.ts +102 -0
  109. package/dist/routes/settings.d.ts.map +1 -0
  110. package/dist/routes/settings.js +94 -0
  111. package/dist/routes/settings.js.map +1 -0
  112. package/dist/routes/shortlink.d.ts +79 -0
  113. package/dist/routes/shortlink.d.ts.map +1 -0
  114. package/dist/routes/shortlink.js +25 -0
  115. package/dist/routes/shortlink.js.map +1 -0
  116. package/dist/routes/socket.d.ts +108 -0
  117. package/dist/routes/socket.d.ts.map +1 -0
  118. package/dist/routes/socket.js +573 -0
  119. package/dist/routes/socket.js.map +1 -0
  120. package/dist/routes/storage.d.ts +44 -0
  121. package/dist/routes/storage.d.ts.map +1 -0
  122. package/dist/routes/storage.js +49 -0
  123. package/dist/routes/storage.js.map +1 -0
  124. package/dist/routes/subscription.d.ts +184 -0
  125. package/dist/routes/subscription.d.ts.map +1 -0
  126. package/dist/routes/subscription.js +219 -0
  127. package/dist/routes/subscription.js.map +1 -0
  128. package/dist/routes/supportChat.d.ts +40 -0
  129. package/dist/routes/supportChat.d.ts.map +1 -0
  130. package/dist/routes/supportChat.js +53 -0
  131. package/dist/routes/supportChat.js.map +1 -0
  132. package/dist/routes/supportTicket.d.ts +89 -0
  133. package/dist/routes/supportTicket.d.ts.map +1 -0
  134. package/dist/routes/supportTicket.js +54 -0
  135. package/dist/routes/supportTicket.js.map +1 -0
  136. package/dist/routes/tag.d.ts +72 -0
  137. package/dist/routes/tag.d.ts.map +1 -0
  138. package/dist/routes/tag.js +81 -0
  139. package/dist/routes/tag.js.map +1 -0
  140. package/dist/routes/task.d.ts +252 -0
  141. package/dist/routes/task.d.ts.map +1 -0
  142. package/dist/routes/task.js +284 -0
  143. package/dist/routes/task.js.map +1 -0
  144. package/dist/routes/taskRelation.d.ts +80 -0
  145. package/dist/routes/taskRelation.d.ts.map +1 -0
  146. package/dist/routes/taskRelation.js +71 -0
  147. package/dist/routes/taskRelation.js.map +1 -0
  148. package/dist/routes/token.d.ts +97 -0
  149. package/dist/routes/token.d.ts.map +1 -0
  150. package/dist/routes/token.js +73 -0
  151. package/dist/routes/token.js.map +1 -0
  152. package/dist/routes/user.d.ts +112 -0
  153. package/dist/routes/user.d.ts.map +1 -0
  154. package/dist/routes/user.js +151 -0
  155. package/dist/routes/user.js.map +1 -0
  156. package/dist/routes/version.d.ts +42 -0
  157. package/dist/routes/version.d.ts.map +1 -0
  158. package/dist/routes/version.js +38 -0
  159. package/dist/routes/version.js.map +1 -0
  160. package/dist/routes/webhook.d.ts +170 -0
  161. package/dist/routes/webhook.d.ts.map +1 -0
  162. package/dist/routes/webhook.js +173 -0
  163. package/dist/routes/webhook.js.map +1 -0
  164. package/dist/routes/workspace.d.ts +120 -0
  165. package/dist/routes/workspace.d.ts.map +1 -0
  166. package/dist/routes/workspace.js +199 -0
  167. package/dist/routes/workspace.js.map +1 -0
  168. package/dist/utils/uploadSessionManager.d.ts +133 -0
  169. package/dist/utils/uploadSessionManager.d.ts.map +1 -0
  170. package/dist/utils/uploadSessionManager.js +321 -0
  171. package/dist/utils/uploadSessionManager.js.map +1 -0
  172. package/dist/utils/urlParams.d.ts +35 -0
  173. package/dist/utils/urlParams.d.ts.map +1 -0
  174. package/dist/utils/urlParams.js +146 -0
  175. package/dist/utils/urlParams.js.map +1 -0
  176. package/dist/version.d.ts +15 -0
  177. package/dist/version.d.ts.map +1 -0
  178. package/dist/version.js +12 -0
  179. package/dist/version.js.map +1 -0
  180. package/package.json +87 -3
  181. package/src/BotClient.ts +113 -0
  182. package/src/NuramaClient.ts +1253 -0
  183. package/src/bot-browser-entry.js +15 -0
  184. package/src/browser-entry.js +20 -0
  185. package/src/routes/ai.ts +378 -0
  186. package/src/routes/asset.ts +1104 -0
  187. package/src/routes/auth.ts +587 -0
  188. package/src/routes/blogPosts.ts +29 -0
  189. package/src/routes/board.ts +403 -0
  190. package/src/routes/bot.ts +356 -0
  191. package/src/routes/chat.ts +1292 -0
  192. package/src/routes/chatAi.ts +125 -0
  193. package/src/routes/config.ts +31 -0
  194. package/src/routes/convo.ts +321 -0
  195. package/src/routes/credits.ts +112 -0
  196. package/src/routes/device.ts +133 -0
  197. package/src/routes/folder.ts +154 -0
  198. package/src/routes/invite.ts +133 -0
  199. package/src/routes/joinLink.ts +233 -0
  200. package/src/routes/membership.ts +237 -0
  201. package/src/routes/notification.ts +166 -0
  202. package/src/routes/oauthGrant.ts +64 -0
  203. package/src/routes/payment.ts +104 -0
  204. package/src/routes/product.ts +67 -0
  205. package/src/routes/project.ts +1528 -0
  206. package/src/routes/public.ts +496 -0
  207. package/src/routes/scratch.ts +94 -0
  208. package/src/routes/settings.ts +152 -0
  209. package/src/routes/shortlink.ts +90 -0
  210. package/src/routes/socket.ts +757 -0
  211. package/src/routes/storage.ts +83 -0
  212. package/src/routes/subscription.ts +307 -0
  213. package/src/routes/supportChat.ts +62 -0
  214. package/src/routes/supportTicket.ts +114 -0
  215. package/src/routes/tag.ts +131 -0
  216. package/src/routes/task.ts +431 -0
  217. package/src/routes/taskRelation.ts +125 -0
  218. package/src/routes/token.ts +152 -0
  219. package/src/routes/user.ts +214 -0
  220. package/src/routes/version.ts +62 -0
  221. package/src/routes/webhook.ts +295 -0
  222. package/src/routes/workspace.ts +223 -0
  223. package/src/utils/uploadSessionManager.ts +407 -0
  224. package/src/utils/urlParams.ts +181 -0
  225. package/src/version.ts +22 -0
@@ -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"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Defines membership-related methods for the NuramaClient.
3
+ * @param {NuramaClient} client - The NuramaClient instance.
4
+ * @returns {object} An object containing the membership-related methods.
5
+ */
6
+ export default function createMembershipMethods(client) {
7
+ return {
8
+ /**
9
+ * Retrieves the membership records for the currently authenticated user.
10
+ * @returns {Promise<MembershipResponse[]>} An array of the user's membership records.
11
+ */
12
+ async getMyMemberships() {
13
+ return client._request({
14
+ method: 'GET',
15
+ endpoint: '/v1/memberships/',
16
+ sendJWT: true,
17
+ });
18
+ },
19
+ /**
20
+ * Retrieves memberships associated with a specific workspace.
21
+ * Requires permission to get workspace members.
22
+ * @param {string} workspaceId - The ID of the workspace.
23
+ * @param {GetWorkspaceMembershipParams} [params] - Query parameters for pagination, sorting, filtering.
24
+ * @returns {Promise<PaginatedMembershipResponse>} Paginated list of workspace memberships.
25
+ */
26
+ async getWorkspaceMemberships(workspaceId, params) {
27
+ if (!workspaceId)
28
+ throw new Error('workspaceId is required.');
29
+ return client._request({
30
+ method: 'GET',
31
+ endpoint: `/v1/memberships/workspace/${workspaceId}`,
32
+ params: params,
33
+ sendJWT: true,
34
+ });
35
+ },
36
+ /**
37
+ * Retrieves memberships associated with a specific project.
38
+ * Requires permission based on user's role in the project/workspace.
39
+ * @param {string} projectId - The ID of the project.
40
+ * @param {GetProjectMembershipParams} [params] - Query parameters for pagination, sorting, filtering.
41
+ * @returns {Promise<PaginatedMembershipResponse>} Paginated list of project memberships.
42
+ */
43
+ async getProjectMemberships(projectId, params) {
44
+ if (!projectId)
45
+ throw new Error('projectId is required.');
46
+ return client._request({
47
+ method: 'GET',
48
+ endpoint: `/v1/memberships/project/${projectId}`,
49
+ params: params,
50
+ sendJWT: true,
51
+ });
52
+ },
53
+ /**
54
+ * Deletes a specific membership record by its ID.
55
+ * Requires specific permissions to delete others' memberships.
56
+ * @param {string} membershipId - The ID of the membership record to delete.
57
+ * @returns {Promise<void>}
58
+ */
59
+ async deleteMembership(membershipId) {
60
+ if (!membershipId)
61
+ throw new Error('membershipId is required.');
62
+ return client._request({
63
+ method: 'DELETE',
64
+ endpoint: `/v1/memberships/${membershipId}`,
65
+ sendJWT: true,
66
+ });
67
+ },
68
+ /**
69
+ * Allows the authenticated user to leave a resource (delete their own membership).
70
+ * Cannot be used to remove ownership roles.
71
+ * @param {string} resourceId - The ID of the resource (workspace or project) to leave.
72
+ * @returns {Promise<void>}
73
+ */
74
+ async leaveResource(resourceId) {
75
+ if (!resourceId)
76
+ throw new Error('resourceId is required.');
77
+ return client._request({
78
+ method: 'DELETE',
79
+ endpoint: `/v1/memberships/leave/${resourceId}`,
80
+ sendJWT: true,
81
+ });
82
+ },
83
+ /**
84
+ * Adds a role to an existing membership record.
85
+ * Requires permission to add roles.
86
+ * @param {AddRemoveRoleData} data - Object containing membershipId and the role to add.
87
+ * @returns {Promise<MembershipResponse>} The updated membership object.
88
+ */
89
+ async addRole(data) {
90
+ if (!data || !data.membershipId || !data.role) {
91
+ throw new Error('membershipId and role are required.');
92
+ }
93
+ return client._request({
94
+ method: 'POST',
95
+ endpoint: '/v1/memberships/add-role',
96
+ body: data,
97
+ sendJWT: true,
98
+ });
99
+ },
100
+ /**
101
+ * Removes a role from an existing membership record.
102
+ * Requires permission to remove roles. Cannot remove ownership roles.
103
+ * @param {AddRemoveRoleData} data - Object containing membershipId and the role to remove.
104
+ * @returns {Promise<MembershipResponse>} The updated membership object.
105
+ */
106
+ async removeRole(data) {
107
+ if (!data || !data.membershipId || !data.role) {
108
+ throw new Error('membershipId and role are required.');
109
+ }
110
+ return client._request({
111
+ method: 'POST',
112
+ endpoint: '/v1/memberships/remove-role',
113
+ body: data,
114
+ sendJWT: true,
115
+ });
116
+ },
117
+ /**
118
+ * Retrieves a list of users mentionable within a project based on visibility.
119
+ * Requires permission to get mentionable users.
120
+ * @param {string} projectId - The ID of the project.
121
+ * @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).
122
+ * @returns {Promise<MentionableUserResponse[]>} An array of mentionable user objects.
123
+ */
124
+ async getProjectMentionableUsers(projectId, visibility) {
125
+ if (!projectId)
126
+ throw new Error('projectId is required.');
127
+ if (!visibility)
128
+ throw new Error('visibility is required.');
129
+ return client._request({
130
+ method: 'GET',
131
+ endpoint: `/v1/memberships/mentionable/project/${projectId}/${visibility}`,
132
+ sendJWT: true,
133
+ });
134
+ },
135
+ /**
136
+ * Retrieves resource-specific last seen timestamps for multiple users in a workspace.
137
+ * Requires permission to get workspace members.
138
+ * @param {string} workspaceId - The ID of the workspace.
139
+ * @param {GetLastSeenData} data - Object containing array of user IDs (1-100).
140
+ * @returns {Promise<GetLastSeenResponse>} Object with results array containing last seen data.
141
+ */
142
+ async getWorkspaceLastSeen(workspaceId, data) {
143
+ if (!workspaceId)
144
+ throw new Error('workspaceId is required.');
145
+ if (!data || !data.userIds || !Array.isArray(data.userIds) || data.userIds.length === 0) {
146
+ throw new Error('userIds array is required and must contain at least one user ID.');
147
+ }
148
+ if (data.userIds.length > 100) {
149
+ throw new Error('userIds array cannot contain more than 100 user IDs.');
150
+ }
151
+ return client._request({
152
+ method: 'POST',
153
+ endpoint: `/v1/memberships/workspace/${workspaceId}/last-seen`,
154
+ body: data,
155
+ sendJWT: true,
156
+ });
157
+ },
158
+ /**
159
+ * Retrieves resource-specific last seen timestamps for multiple users in a project.
160
+ * Requires permission to get project members.
161
+ * @param {string} projectId - The ID of the project.
162
+ * @param {GetLastSeenData} data - Object containing array of user IDs (1-100).
163
+ * @returns {Promise<GetLastSeenResponse>} Object with results array containing last seen data.
164
+ */
165
+ async getProjectLastSeen(projectId, data) {
166
+ if (!projectId)
167
+ throw new Error('projectId is required.');
168
+ if (!data || !data.userIds || !Array.isArray(data.userIds) || data.userIds.length === 0) {
169
+ throw new Error('userIds array is required and must contain at least one user ID.');
170
+ }
171
+ if (data.userIds.length > 100) {
172
+ throw new Error('userIds array cannot contain more than 100 user IDs.');
173
+ }
174
+ return client._request({
175
+ method: 'POST',
176
+ endpoint: `/v1/memberships/project/${projectId}/last-seen`,
177
+ body: data,
178
+ sendJWT: true,
179
+ });
180
+ },
181
+ };
182
+ }
183
+ //# sourceMappingURL=membership.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"membership.js","sourceRoot":"","sources":["../../src/routes/membership.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ import NuramaClient from '../NuramaClient.js';
2
+ import { type Notification, 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
+ cursor?: string;
9
+ paginateReverse?: boolean;
10
+ includeCounts?: boolean;
11
+ includeCursorRecord?: boolean;
12
+ startAt?: string;
13
+ includeStartAtRecord?: boolean;
14
+ page?: number;
15
+ }
16
+ export interface SortParams {
17
+ sort?: Record<string, 1 | -1>;
18
+ }
19
+ export interface BaseNotificationParams {
20
+ channels: string[];
21
+ types?: string[];
22
+ }
23
+ export interface GetNotificationsData extends BaseNotificationParams, PaginationParams, SortParams {
24
+ paginate?: 'cursor' | 'index';
25
+ createdAfter?: number;
26
+ createdBefore?: number;
27
+ }
28
+ export interface GetNewNotificationsData extends BaseNotificationParams, PaginationParams {
29
+ paginate?: 'cursor' | 'index';
30
+ updateLastSeen?: boolean;
31
+ }
32
+ export interface GetNewNotificationCountData extends BaseNotificationParams {
33
+ }
34
+ export interface ChannelQuery {
35
+ channels: string[];
36
+ types?: string[];
37
+ }
38
+ export interface GetNewNotificationCountBulkData {
39
+ channelQueries: ChannelQuery[];
40
+ }
41
+ export interface GetUsersLastNotificationsSeenData extends BaseNotificationParams {
42
+ }
43
+ export interface UpdateUsersLastSeenData extends BaseNotificationParams {
44
+ }
45
+ export type PaginatedNotificationResponse = PaginatedResponse<Notification>;
46
+ export type NotificationCountResponse = {
47
+ count: number;
48
+ };
49
+ export type NotificationCountBulkResponse = ({
50
+ channels: string[];
51
+ types?: string[];
52
+ count: number;
53
+ })[];
54
+ export type LastSeenResponse = {
55
+ channels: string[];
56
+ lastSeen: number;
57
+ types?: string[];
58
+ };
59
+ /**
60
+ * Defines notification-related methods for the NuramaClient.
61
+ * @param {NuramaClient} client - The NuramaClient instance.
62
+ * @returns {object} An object containing the notification-related methods.
63
+ */
64
+ export default function createNotificationMethods(client: NuramaClient): {
65
+ /**
66
+ * Retrieves notifications for specified channels, with optional filtering and pagination.
67
+ * @param {GetNotificationsData} data - Request body containing channels, types, and pagination/sorting options.
68
+ * @returns {Promise<PaginatedNotificationResponse>} Paginated list of notifications.
69
+ */
70
+ getNotifications(data: GetNotificationsData): Promise<PaginatedNotificationResponse>;
71
+ /**
72
+ * Retrieves new notifications since the user's last viewed timestamp for the specified channels.
73
+ * Optionally updates the last viewed timestamp.
74
+ * @param {GetNewNotificationsData} data - Request body containing channels, types, pagination, and update flag.
75
+ * @returns {Promise<PaginatedNotificationResponse>} Paginated list of new notifications.
76
+ */
77
+ getNewNotifications(data: GetNewNotificationsData): Promise<PaginatedNotificationResponse>;
78
+ /**
79
+ * Gets the count of new (unread) notifications for the specified channels.
80
+ * @param {GetNewNotificationCountData} data - Request body containing channels and optional types.
81
+ * @returns {Promise<NotificationCountResponse>} Object containing the count of new notifications.
82
+ */
83
+ getNewNotificationCount(data: GetNewNotificationCountData): Promise<NotificationCountResponse>;
84
+ /**
85
+ * Gets the count of new notifications for multiple channel/type queries in a single request.
86
+ * @param {GetNewNotificationCountBulkData} data - Request body containing an array of channel queries.
87
+ * @returns {Promise<NotificationCountBulkResponse>} Array of objects, each containing channels, types (if provided), and count.
88
+ */
89
+ getNewNotificationCountBulk(data: GetNewNotificationCountBulkData): Promise<NotificationCountBulkResponse>;
90
+ /**
91
+ * Retrieves the last seen timestamp record for the specified channels and optional types.
92
+ * @param {GetUsersLastNotificationsSeenData} data - Request body containing channels and optional types.
93
+ * @returns {Promise<LastSeenResponse>} The last seen record object.
94
+ */
95
+ getUsersLastNotificationsSeen(data: GetUsersLastNotificationsSeenData): Promise<LastSeenResponse>;
96
+ /**
97
+ * Updates (or creates) the last seen timestamp for the user for the specified channels and optional types.
98
+ * @param {UpdateUsersLastSeenData} data - Request body containing channels and optional types.
99
+ * @returns {Promise<LastSeenResponse>} The updated (or created) last seen record object.
100
+ */
101
+ updateUsersLastSeen(data: UpdateUsersLastSeenData): Promise<LastSeenResponse>;
102
+ };
103
+ //# sourceMappingURL=notification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/routes/notification.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Defines notification-related methods for the NuramaClient.
3
+ * @param {NuramaClient} client - The NuramaClient instance.
4
+ * @returns {object} An object containing the notification-related methods.
5
+ */
6
+ export default function createNotificationMethods(client) {
7
+ return {
8
+ /**
9
+ * Retrieves notifications for specified channels, with optional filtering and pagination.
10
+ * @param {GetNotificationsData} data - Request body containing channels, types, and pagination/sorting options.
11
+ * @returns {Promise<PaginatedNotificationResponse>} Paginated list of notifications.
12
+ */
13
+ async getNotifications(data) {
14
+ return client._request({
15
+ method: 'POST',
16
+ endpoint: '/v1/notifications/',
17
+ body: data,
18
+ sendJWT: true,
19
+ });
20
+ },
21
+ /**
22
+ * Retrieves new notifications since the user's last viewed timestamp for the specified channels.
23
+ * Optionally updates the last viewed timestamp.
24
+ * @param {GetNewNotificationsData} data - Request body containing channels, types, pagination, and update flag.
25
+ * @returns {Promise<PaginatedNotificationResponse>} Paginated list of new notifications.
26
+ */
27
+ async getNewNotifications(data) {
28
+ return client._request({
29
+ method: 'POST',
30
+ endpoint: '/v1/notifications/new',
31
+ body: data,
32
+ sendJWT: true,
33
+ });
34
+ },
35
+ /**
36
+ * Gets the count of new (unread) notifications for the specified channels.
37
+ * @param {GetNewNotificationCountData} data - Request body containing channels and optional types.
38
+ * @returns {Promise<NotificationCountResponse>} Object containing the count of new notifications.
39
+ */
40
+ async getNewNotificationCount(data) {
41
+ return client._request({
42
+ method: 'POST',
43
+ endpoint: '/v1/notifications/count',
44
+ body: data,
45
+ sendJWT: true,
46
+ });
47
+ },
48
+ /**
49
+ * Gets the count of new notifications for multiple channel/type queries in a single request.
50
+ * @param {GetNewNotificationCountBulkData} data - Request body containing an array of channel queries.
51
+ * @returns {Promise<NotificationCountBulkResponse>} Array of objects, each containing channels, types (if provided), and count.
52
+ */
53
+ async getNewNotificationCountBulk(data) {
54
+ return client._request({
55
+ method: 'POST',
56
+ endpoint: '/v1/notifications/count/bulk',
57
+ body: data,
58
+ sendJWT: true,
59
+ });
60
+ },
61
+ /**
62
+ * Retrieves the last seen timestamp record for the specified channels and optional types.
63
+ * @param {GetUsersLastNotificationsSeenData} data - Request body containing channels and optional types.
64
+ * @returns {Promise<LastSeenResponse>} The last seen record object.
65
+ */
66
+ async getUsersLastNotificationsSeen(data) {
67
+ return client._request({
68
+ method: 'POST',
69
+ endpoint: '/v1/notifications/last-seen',
70
+ body: data,
71
+ sendJWT: true,
72
+ });
73
+ },
74
+ /**
75
+ * Updates (or creates) the last seen timestamp for the user for the specified channels and optional types.
76
+ * @param {UpdateUsersLastSeenData} data - Request body containing channels and optional types.
77
+ * @returns {Promise<LastSeenResponse>} The updated (or created) last seen record object.
78
+ */
79
+ async updateUsersLastSeen(data) {
80
+ return client._request({
81
+ method: 'PUT',
82
+ endpoint: '/v1/notifications/last-seen',
83
+ body: data,
84
+ sendJWT: true,
85
+ });
86
+ },
87
+ };
88
+ }
89
+ //# sourceMappingURL=notification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/routes/notification.ts"],"names":[],"mappings":"AAyEA;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,MAAoB;IACpE,OAAO;QACL;;;;eAIO;QACP,KAAK,CAAC,gBAAgB,CAAC,IAA0B;YAC/C,OAAO,MAAM,CAAC,QAAQ,CAAgC;gBACpD,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,oBAAoB;gBAC9B,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;;;eAKO;QACP,KAAK,CAAC,mBAAmB,CAAC,IAA6B;YACrD,OAAO,MAAM,CAAC,QAAQ,CAAgC;gBACpD,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,uBAAuB;gBACjC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;;eAIO;QACP,KAAK,CAAC,uBAAuB,CAAC,IAAiC;YAC7D,OAAO,MAAM,CAAC,QAAQ,CAA4B;gBAChD,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,yBAAyB;gBACnC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;;eAIO;QACP,KAAK,CAAC,2BAA2B,CAAC,IAAqC;YACrE,OAAO,MAAM,CAAC,QAAQ,CAAgC;gBACpD,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,8BAA8B;gBACxC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;;eAIO;QACP,KAAK,CAAC,6BAA6B,CAAC,IAAuC;YACzE,OAAO,MAAM,CAAC,QAAQ,CAAmB;gBACvC,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,6BAA6B;gBACvC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;;eAIO;QACP,KAAK,CAAC,mBAAmB,CAAC,IAA6B;YACrD,OAAO,MAAM,CAAC,QAAQ,CAAmB;gBACvC,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,6BAA6B;gBACvC,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,45 @@
1
+ import NuramaClient from '../NuramaClient.js';
2
+ /**
3
+ * One application a user has authorised over OAuth.
4
+ *
5
+ * A grant is the record of consent: the scopes approved, and the tie binding
6
+ * every token issued under it. Revoking one withdraws the application's
7
+ * access.
8
+ */
9
+ export interface OAuthGrantSummary {
10
+ /** Opaque identifier; pass to `revokeGrant`. */
11
+ grantId: string;
12
+ clientId: string | null;
13
+ /**
14
+ * The application's name.
15
+ *
16
+ * Chosen by the application itself when `verified` is false — treat it as
17
+ * display text from an untrusted source, never as identification.
18
+ */
19
+ clientName: string | null;
20
+ /**
21
+ * Whether Nurama configured this application.
22
+ *
23
+ * False for one that registered itself through Dynamic Client Registration:
24
+ * it picked its own name and nobody reviewed it.
25
+ */
26
+ verified: boolean;
27
+ /** Scopes the user approved, from the backend's token-scope registry. */
28
+ scopes: string[];
29
+ grantedAt: string;
30
+ expiresAt: string | null;
31
+ }
32
+ export default function createOAuthGrantMethods(client: NuramaClient): {
33
+ /**
34
+ * List the applications the caller has authorised, newest first.
35
+ * Expired grants are omitted by the server.
36
+ */
37
+ listGrants(): Promise<OAuthGrantSummary[]>;
38
+ /**
39
+ * Withdraw an application's access: the grant and every token issued
40
+ * under it. An access token already in flight stays valid until it
41
+ * expires, so revocation is not instantaneous for a request under way.
42
+ */
43
+ revokeGrant(grantId: string): Promise<void>;
44
+ };
45
+ //# sourceMappingURL=oauthGrant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthGrant.d.ts","sourceRoot":"","sources":["../../src/routes/oauthGrant.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;;OAKG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,yEAAyE;IACzE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,MAAM,EAAE,YAAY;IAEhE;;;OAGG;kBACiB,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAUhD;;;;OAIG;yBACwB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;EASpD"}
@@ -0,0 +1,32 @@
1
+ export default function createOAuthGrantMethods(client) {
2
+ return {
3
+ /**
4
+ * List the applications the caller has authorised, newest first.
5
+ * Expired grants are omitted by the server.
6
+ */
7
+ async listGrants() {
8
+ const res = await client._request({
9
+ method: 'GET',
10
+ endpoint: '/v1/oauth-grants',
11
+ sendJWT: true,
12
+ bypassCache: true,
13
+ });
14
+ return res.results;
15
+ },
16
+ /**
17
+ * Withdraw an application's access: the grant and every token issued
18
+ * under it. An access token already in flight stays valid until it
19
+ * expires, so revocation is not instantaneous for a request under way.
20
+ */
21
+ async revokeGrant(grantId) {
22
+ if (!grantId)
23
+ throw new Error('grantId is required.');
24
+ return client._request({
25
+ method: 'DELETE',
26
+ endpoint: `/v1/oauth-grants/${grantId}`,
27
+ sendJWT: true,
28
+ });
29
+ },
30
+ };
31
+ }
32
+ //# sourceMappingURL=oauthGrant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthGrant.js","sourceRoot":"","sources":["../../src/routes/oauthGrant.ts"],"names":[],"mappings":"AAiCA,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,MAAoB;IAClE,OAAO;QACL;;;WAGG;QACH,KAAK,CAAC,UAAU;YACd,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAmC;gBAClE,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,kBAAkB;gBAC5B,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,OAAO,CAAC;QACrB,CAAC;QAED;;;;WAIG;QACH,KAAK,CAAC,WAAW,CAAC,OAAe;YAC/B,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACtD,OAAO,MAAM,CAAC,QAAQ,CAAO;gBAC3B,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,oBAAoB,OAAO,EAAE;gBACvC,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,56 @@
1
+ import NuramaClient from '../NuramaClient.js';
2
+ export interface StripeCheckoutRequest {
3
+ resourceId: string;
4
+ productId: string;
5
+ currency: 'usd' | 'gbp';
6
+ billingPeriod: 'month' | 'year';
7
+ }
8
+ export interface ManualCheckoutRequest {
9
+ resourceId: string;
10
+ productId: string;
11
+ currency: 'usd' | 'gbp';
12
+ billingPeriod: 'month' | 'year';
13
+ }
14
+ export interface StripeCheckoutResponse {
15
+ url: string;
16
+ }
17
+ export interface StripeCustomerResponse {
18
+ customerId: string;
19
+ }
20
+ export interface StripePortalResponse {
21
+ url: string;
22
+ }
23
+ /**
24
+ * Defines payment-related methods for the NuramaClient.
25
+ * @param {NuramaClient} client - The NuramaClient instance.
26
+ * @returns {object} An object containing the payment-related methods.
27
+ */
28
+ export default function createPaymentMethods(client: NuramaClient): {
29
+ /**
30
+ * Create a Stripe subscription checkout session.
31
+ * Requires authentication and permission.
32
+ * @param {StripeCheckoutRequest} checkoutData - The checkout request data.
33
+ * @returns {Promise<StripeCheckoutResponse>} Object containing the Stripe checkout session URL.
34
+ */
35
+ createStripeCheckout(checkoutData: StripeCheckoutRequest): Promise<StripeCheckoutResponse>;
36
+ /**
37
+ * Create a manual subscription without Stripe processing.
38
+ * Requires authentication and permission.
39
+ * @param {ManualCheckoutRequest} checkoutData - The manual checkout request data.
40
+ * @returns {Promise<any>} The created subscription object.
41
+ */
42
+ createManualCheckout(checkoutData: ManualCheckoutRequest): Promise<any>;
43
+ /**
44
+ * Create a new Stripe customer for the authenticated user.
45
+ * Requires authentication and permission.
46
+ * @returns {Promise<StripeCustomerResponse>} Object containing the Stripe customer ID.
47
+ */
48
+ createStripeCustomer(): Promise<StripeCustomerResponse>;
49
+ /**
50
+ * Generate a URL for the Stripe customer portal for subscription management.
51
+ * Requires authentication and permission.
52
+ * @returns {Promise<StripePortalResponse>} Object containing the Stripe portal session URL.
53
+ */
54
+ getStripePortalUrl(): Promise<StripePortalResponse>;
55
+ };
56
+ //# sourceMappingURL=payment.d.ts.map