@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,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,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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["../../src/routes/payment.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAG9C,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,GAAG,KAAK,CAAC;IACxB,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,GAAG,KAAK,CAAC;IACxB,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC;CACjC;AAGD,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,MAAM,EAAE,YAAY;IAE7D;;;;;OAKG;uCACsC,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAchG;;;;;OAKG;uCACsC,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC;IAc7E;;;;OAIG;4BAC2B,OAAO,CAAC,sBAAsB,CAAC;IAQ7D;;;;OAIG;0BACyB,OAAO,CAAC,oBAAoB,CAAC;EAQ5D"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Defines payment-related methods for the NuramaClient.
3
+ * @param {NuramaClient} client - The NuramaClient instance.
4
+ * @returns {object} An object containing the payment-related methods.
5
+ */
6
+ export default function createPaymentMethods(client) {
7
+ return {
8
+ /**
9
+ * Create a Stripe subscription checkout session.
10
+ * Requires authentication and permission.
11
+ * @param {StripeCheckoutRequest} checkoutData - The checkout request data.
12
+ * @returns {Promise<StripeCheckoutResponse>} Object containing the Stripe checkout session URL.
13
+ */
14
+ async createStripeCheckout(checkoutData) {
15
+ if (!checkoutData.resourceId)
16
+ throw new Error('resourceId is required.');
17
+ if (!checkoutData.productId)
18
+ throw new Error('productId is required.');
19
+ if (!checkoutData.currency)
20
+ throw new Error('currency is required.');
21
+ if (!checkoutData.billingPeriod)
22
+ throw new Error('billingPeriod is required.');
23
+ return client._request({
24
+ method: 'POST',
25
+ endpoint: '/v1/payments/stripe/checkout',
26
+ body: checkoutData,
27
+ sendJWT: true,
28
+ });
29
+ },
30
+ /**
31
+ * Create a manual subscription without Stripe processing.
32
+ * Requires authentication and permission.
33
+ * @param {ManualCheckoutRequest} checkoutData - The manual checkout request data.
34
+ * @returns {Promise<any>} The created subscription object.
35
+ */
36
+ async createManualCheckout(checkoutData) {
37
+ if (!checkoutData.resourceId)
38
+ throw new Error('resourceId is required.');
39
+ if (!checkoutData.productId)
40
+ throw new Error('productId is required.');
41
+ if (!checkoutData.currency)
42
+ throw new Error('currency is required.');
43
+ if (!checkoutData.billingPeriod)
44
+ throw new Error('billingPeriod is required.');
45
+ return client._request({
46
+ method: 'POST',
47
+ endpoint: '/v1/payments/manual/checkout',
48
+ body: checkoutData,
49
+ sendJWT: true,
50
+ });
51
+ },
52
+ /**
53
+ * Create a new Stripe customer for the authenticated user.
54
+ * Requires authentication and permission.
55
+ * @returns {Promise<StripeCustomerResponse>} Object containing the Stripe customer ID.
56
+ */
57
+ async createStripeCustomer() {
58
+ return client._request({
59
+ method: 'POST',
60
+ endpoint: '/v1/payments/stripe/customer',
61
+ sendJWT: true,
62
+ });
63
+ },
64
+ /**
65
+ * Generate a URL for the Stripe customer portal for subscription management.
66
+ * Requires authentication and permission.
67
+ * @returns {Promise<StripePortalResponse>} Object containing the Stripe portal session URL.
68
+ */
69
+ async getStripePortalUrl() {
70
+ return client._request({
71
+ method: 'GET',
72
+ endpoint: '/v1/payments/stripe/portal',
73
+ sendJWT: true,
74
+ });
75
+ },
76
+ };
77
+ }
78
+ //# sourceMappingURL=payment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment.js","sourceRoot":"","sources":["../../src/routes/payment.ts"],"names":[],"mappings":"AA8BA;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,MAAoB;IAC/D,OAAO;QACL;;;;;WAKG;QACH,KAAK,CAAC,oBAAoB,CAAC,YAAmC;YAC5D,IAAI,CAAC,YAAY,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACzE,IAAI,CAAC,YAAY,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACvE,IAAI,CAAC,YAAY,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACrE,IAAI,CAAC,YAAY,CAAC,aAAa;gBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAE/E,OAAO,MAAM,CAAC,QAAQ,CAAyB;gBAC7C,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,8BAA8B;gBACxC,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;;;WAKG;QACH,KAAK,CAAC,oBAAoB,CAAC,YAAmC;YAC5D,IAAI,CAAC,YAAY,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACzE,IAAI,CAAC,YAAY,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACvE,IAAI,CAAC,YAAY,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACrE,IAAI,CAAC,YAAY,CAAC,aAAa;gBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAE/E,OAAO,MAAM,CAAC,QAAQ,CAAM;gBAC1B,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,8BAA8B;gBACxC,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;;WAIG;QACH,KAAK,CAAC,oBAAoB;YACxB,OAAO,MAAM,CAAC,QAAQ,CAAyB;gBAC7C,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,8BAA8B;gBACxC,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;;WAIG;QACH,KAAK,CAAC,kBAAkB;YACtB,OAAO,MAAM,CAAC,QAAQ,CAAuB;gBAC3C,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,4BAA4B;gBACtC,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,43 @@
1
+ import NuramaClient from '../NuramaClient.js';
2
+ import { type Product } from '@nurama/types';
3
+ export interface GetWorkspaceProductsParams {
4
+ productType?: 'basePlan' | 'addSeat' | 'addStorage' | 'addCredits' | 'enableBoards';
5
+ paymentProvider?: 'stripe' | 'manualInvoice';
6
+ }
7
+ export type ProductResponse = Product;
8
+ /**
9
+ * Defines product-related methods for the NuramaClient.
10
+ * @param {NuramaClient} client - The NuramaClient instance.
11
+ * @returns {object} An object containing the product-related methods.
12
+ */
13
+ export default function createProductMethods(client: NuramaClient): {
14
+ /**
15
+ * Retrieves available products for a specific workspace, considering restrictions.
16
+ * Requires authentication and permission.
17
+ * @param {string} workspaceId - The ID of the workspace.
18
+ * @param {GetWorkspaceProductsParams} [params] - Optional query parameters.
19
+ * @returns {Promise<ProductResponse[]>} An array of available product objects.
20
+ */
21
+ getWorkspaceProducts(workspaceId: string, params?: GetWorkspaceProductsParams): Promise<ProductResponse[]>;
22
+ /**
23
+ * List active starter-package "plans" available to the caller,
24
+ * scoped by user-level restrictions but NOT bound to a workspace.
25
+ * Used by the post-signup plan-selection overlay before any
26
+ * workspace exists.
27
+ * @returns {Promise<ProductResponse[]>} Active starter-package plans.
28
+ */
29
+ listPlans(): Promise<ProductResponse[]>;
30
+ /**
31
+ * Suggested billing currency for the caller, derived server-side from
32
+ * the CDN geo header. A *default* for the currency selector only — the
33
+ * user can override. Falls back to `usd` with no geo header.
34
+ */
35
+ getSuggestedCurrency(): Promise<{
36
+ currency: SupportedCurrency;
37
+ country: string | null;
38
+ locked?: boolean;
39
+ supported: SupportedCurrency[];
40
+ }>;
41
+ };
42
+ export type SupportedCurrency = 'gbp' | 'usd' | 'eur';
43
+ //# sourceMappingURL=product.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product.d.ts","sourceRoot":"","sources":["../../src/routes/product.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,MAAM,WAAW,0BAA0B;IACzC,WAAW,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,YAAY,GAAG,cAAc,CAAC;IACpF,eAAe,CAAC,EAAE,QAAQ,GAAG,eAAe,CAAC;CAC9C;AAGD,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC;AAEtC;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,MAAM,EAAE,YAAY;IAE7D;;;;;;OAMG;sCACqC,MAAM,WAAW,0BAA0B,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAUhH;;;;;;OAMG;iBACgB,OAAO,CAAC,eAAe,EAAE,CAAC;IAQ7C;;;;OAIG;4BAC2B,OAAO,CAAC;QAAE,QAAQ,EAAE,iBAAiB,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,iBAAiB,EAAE,CAAA;KAAE,CAAC;EAQnJ;AAED,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Defines product-related methods for the NuramaClient.
3
+ * @param {NuramaClient} client - The NuramaClient instance.
4
+ * @returns {object} An object containing the product-related methods.
5
+ */
6
+ export default function createProductMethods(client) {
7
+ return {
8
+ /**
9
+ * Retrieves available products for a specific workspace, considering restrictions.
10
+ * Requires authentication and permission.
11
+ * @param {string} workspaceId - The ID of the workspace.
12
+ * @param {GetWorkspaceProductsParams} [params] - Optional query parameters.
13
+ * @returns {Promise<ProductResponse[]>} An array of available product objects.
14
+ */
15
+ async getWorkspaceProducts(workspaceId, params) {
16
+ if (!workspaceId)
17
+ throw new Error('workspaceId is required.');
18
+ return client._request({
19
+ method: 'GET',
20
+ endpoint: `/v1/products/workspace/${workspaceId}`,
21
+ params,
22
+ sendJWT: true,
23
+ });
24
+ },
25
+ /**
26
+ * List active starter-package "plans" available to the caller,
27
+ * scoped by user-level restrictions but NOT bound to a workspace.
28
+ * Used by the post-signup plan-selection overlay before any
29
+ * workspace exists.
30
+ * @returns {Promise<ProductResponse[]>} Active starter-package plans.
31
+ */
32
+ async listPlans() {
33
+ return client._request({
34
+ method: 'GET',
35
+ endpoint: '/v1/products/plans',
36
+ sendJWT: true,
37
+ });
38
+ },
39
+ /**
40
+ * Suggested billing currency for the caller, derived server-side from
41
+ * the CDN geo header. A *default* for the currency selector only — the
42
+ * user can override. Falls back to `usd` with no geo header.
43
+ */
44
+ async getSuggestedCurrency() {
45
+ return client._request({
46
+ method: 'GET',
47
+ endpoint: '/v1/products/suggested-currency',
48
+ sendJWT: true,
49
+ });
50
+ },
51
+ };
52
+ }
53
+ //# sourceMappingURL=product.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product.js","sourceRoot":"","sources":["../../src/routes/product.ts"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,MAAoB;IAC/D,OAAO;QACL;;;;;;WAMG;QACH,KAAK,CAAC,oBAAoB,CAAC,WAAmB,EAAE,MAAmC;YACjF,IAAI,CAAC,WAAW;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9D,OAAO,MAAM,CAAC,QAAQ,CAAoB;gBACxC,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,0BAA0B,WAAW,EAAE;gBACjD,MAAM;gBACN,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;;;;WAMG;QACH,KAAK,CAAC,SAAS;YACb,OAAO,MAAM,CAAC,QAAQ,CAAoB;gBACxC,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,oBAAoB;gBAC9B,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAED;;;;WAIG;QACH,KAAK,CAAC,oBAAoB;YACxB,OAAO,MAAM,CAAC,QAAQ,CAA0F;gBAC9G,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,iCAAiC;gBAC3C,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}