@sentdm/sentdm 0.3.5

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 (379) hide show
  1. package/CHANGELOG.md +103 -0
  2. package/LICENSE +201 -0
  3. package/README.md +393 -0
  4. package/api-promise.d.mts +2 -0
  5. package/api-promise.d.mts.map +1 -0
  6. package/api-promise.d.ts +2 -0
  7. package/api-promise.d.ts.map +1 -0
  8. package/api-promise.js +6 -0
  9. package/api-promise.js.map +1 -0
  10. package/api-promise.mjs +2 -0
  11. package/api-promise.mjs.map +1 -0
  12. package/client.d.mts +200 -0
  13. package/client.d.mts.map +1 -0
  14. package/client.d.ts +200 -0
  15. package/client.d.ts.map +1 -0
  16. package/client.js +486 -0
  17. package/client.js.map +1 -0
  18. package/client.mjs +482 -0
  19. package/client.mjs.map +1 -0
  20. package/core/api-promise.d.mts +46 -0
  21. package/core/api-promise.d.mts.map +1 -0
  22. package/core/api-promise.d.ts +46 -0
  23. package/core/api-promise.d.ts.map +1 -0
  24. package/core/api-promise.js +74 -0
  25. package/core/api-promise.js.map +1 -0
  26. package/core/api-promise.mjs +70 -0
  27. package/core/api-promise.mjs.map +1 -0
  28. package/core/error.d.mts +46 -0
  29. package/core/error.d.mts.map +1 -0
  30. package/core/error.d.ts +46 -0
  31. package/core/error.d.ts.map +1 -0
  32. package/core/error.js +113 -0
  33. package/core/error.js.map +1 -0
  34. package/core/error.mjs +97 -0
  35. package/core/error.mjs.map +1 -0
  36. package/core/resource.d.mts +6 -0
  37. package/core/resource.d.mts.map +1 -0
  38. package/core/resource.d.ts +6 -0
  39. package/core/resource.d.ts.map +1 -0
  40. package/core/resource.js +11 -0
  41. package/core/resource.js.map +1 -0
  42. package/core/resource.mjs +7 -0
  43. package/core/resource.mjs.map +1 -0
  44. package/core/uploads.d.mts +3 -0
  45. package/core/uploads.d.mts.map +1 -0
  46. package/core/uploads.d.ts +3 -0
  47. package/core/uploads.d.ts.map +1 -0
  48. package/core/uploads.js +6 -0
  49. package/core/uploads.js.map +1 -0
  50. package/core/uploads.mjs +2 -0
  51. package/core/uploads.mjs.map +1 -0
  52. package/error.d.mts +2 -0
  53. package/error.d.mts.map +1 -0
  54. package/error.d.ts +2 -0
  55. package/error.d.ts.map +1 -0
  56. package/error.js +6 -0
  57. package/error.js.map +1 -0
  58. package/error.mjs +2 -0
  59. package/error.mjs.map +1 -0
  60. package/index.d.mts +6 -0
  61. package/index.d.mts.map +1 -0
  62. package/index.d.ts +6 -0
  63. package/index.d.ts.map +1 -0
  64. package/index.js +30 -0
  65. package/index.js.map +1 -0
  66. package/index.mjs +7 -0
  67. package/index.mjs.map +1 -0
  68. package/internal/builtin-types.d.mts +73 -0
  69. package/internal/builtin-types.d.mts.map +1 -0
  70. package/internal/builtin-types.d.ts +73 -0
  71. package/internal/builtin-types.d.ts.map +1 -0
  72. package/internal/builtin-types.js +4 -0
  73. package/internal/builtin-types.js.map +1 -0
  74. package/internal/builtin-types.mjs +3 -0
  75. package/internal/builtin-types.mjs.map +1 -0
  76. package/internal/detect-platform.d.mts +15 -0
  77. package/internal/detect-platform.d.mts.map +1 -0
  78. package/internal/detect-platform.d.ts +15 -0
  79. package/internal/detect-platform.d.ts.map +1 -0
  80. package/internal/detect-platform.js +162 -0
  81. package/internal/detect-platform.js.map +1 -0
  82. package/internal/detect-platform.mjs +157 -0
  83. package/internal/detect-platform.mjs.map +1 -0
  84. package/internal/errors.d.mts +3 -0
  85. package/internal/errors.d.mts.map +1 -0
  86. package/internal/errors.d.ts +3 -0
  87. package/internal/errors.d.ts.map +1 -0
  88. package/internal/errors.js +41 -0
  89. package/internal/errors.js.map +1 -0
  90. package/internal/errors.mjs +36 -0
  91. package/internal/errors.mjs.map +1 -0
  92. package/internal/headers.d.mts +20 -0
  93. package/internal/headers.d.mts.map +1 -0
  94. package/internal/headers.d.ts +20 -0
  95. package/internal/headers.d.ts.map +1 -0
  96. package/internal/headers.js +79 -0
  97. package/internal/headers.js.map +1 -0
  98. package/internal/headers.mjs +74 -0
  99. package/internal/headers.mjs.map +1 -0
  100. package/internal/parse.d.mts +12 -0
  101. package/internal/parse.d.mts.map +1 -0
  102. package/internal/parse.d.ts +12 -0
  103. package/internal/parse.d.ts.map +1 -0
  104. package/internal/parse.js +35 -0
  105. package/internal/parse.js.map +1 -0
  106. package/internal/parse.mjs +32 -0
  107. package/internal/parse.mjs.map +1 -0
  108. package/internal/request-options.d.mts +75 -0
  109. package/internal/request-options.d.mts.map +1 -0
  110. package/internal/request-options.d.ts +75 -0
  111. package/internal/request-options.d.ts.map +1 -0
  112. package/internal/request-options.js +14 -0
  113. package/internal/request-options.js.map +1 -0
  114. package/internal/request-options.mjs +10 -0
  115. package/internal/request-options.mjs.map +1 -0
  116. package/internal/shim-types.d.mts +17 -0
  117. package/internal/shim-types.d.mts.map +1 -0
  118. package/internal/shim-types.d.ts +17 -0
  119. package/internal/shim-types.d.ts.map +1 -0
  120. package/internal/shim-types.js +4 -0
  121. package/internal/shim-types.js.map +1 -0
  122. package/internal/shim-types.mjs +3 -0
  123. package/internal/shim-types.mjs.map +1 -0
  124. package/internal/shims.d.mts +20 -0
  125. package/internal/shims.d.mts.map +1 -0
  126. package/internal/shims.d.ts +20 -0
  127. package/internal/shims.d.ts.map +1 -0
  128. package/internal/shims.js +92 -0
  129. package/internal/shims.js.map +1 -0
  130. package/internal/shims.mjs +85 -0
  131. package/internal/shims.mjs.map +1 -0
  132. package/internal/to-file.d.mts +45 -0
  133. package/internal/to-file.d.mts.map +1 -0
  134. package/internal/to-file.d.ts +45 -0
  135. package/internal/to-file.d.ts.map +1 -0
  136. package/internal/to-file.js +91 -0
  137. package/internal/to-file.js.map +1 -0
  138. package/internal/to-file.mjs +88 -0
  139. package/internal/to-file.mjs.map +1 -0
  140. package/internal/tslib.js +81 -0
  141. package/internal/tslib.mjs +17 -0
  142. package/internal/types.d.mts +69 -0
  143. package/internal/types.d.mts.map +1 -0
  144. package/internal/types.d.ts +69 -0
  145. package/internal/types.d.ts.map +1 -0
  146. package/internal/types.js +4 -0
  147. package/internal/types.js.map +1 -0
  148. package/internal/types.mjs +3 -0
  149. package/internal/types.mjs.map +1 -0
  150. package/internal/uploads.d.mts +42 -0
  151. package/internal/uploads.d.mts.map +1 -0
  152. package/internal/uploads.d.ts +42 -0
  153. package/internal/uploads.d.ts.map +1 -0
  154. package/internal/uploads.js +141 -0
  155. package/internal/uploads.js.map +1 -0
  156. package/internal/uploads.mjs +131 -0
  157. package/internal/uploads.mjs.map +1 -0
  158. package/internal/utils/base64.d.mts +3 -0
  159. package/internal/utils/base64.d.mts.map +1 -0
  160. package/internal/utils/base64.d.ts +3 -0
  161. package/internal/utils/base64.d.ts.map +1 -0
  162. package/internal/utils/base64.js +38 -0
  163. package/internal/utils/base64.js.map +1 -0
  164. package/internal/utils/base64.mjs +33 -0
  165. package/internal/utils/base64.mjs.map +1 -0
  166. package/internal/utils/bytes.d.mts +4 -0
  167. package/internal/utils/bytes.d.mts.map +1 -0
  168. package/internal/utils/bytes.d.ts +4 -0
  169. package/internal/utils/bytes.d.ts.map +1 -0
  170. package/internal/utils/bytes.js +31 -0
  171. package/internal/utils/bytes.js.map +1 -0
  172. package/internal/utils/bytes.mjs +26 -0
  173. package/internal/utils/bytes.mjs.map +1 -0
  174. package/internal/utils/env.d.mts +9 -0
  175. package/internal/utils/env.d.mts.map +1 -0
  176. package/internal/utils/env.d.ts +9 -0
  177. package/internal/utils/env.d.ts.map +1 -0
  178. package/internal/utils/env.js +22 -0
  179. package/internal/utils/env.js.map +1 -0
  180. package/internal/utils/env.mjs +18 -0
  181. package/internal/utils/env.mjs.map +1 -0
  182. package/internal/utils/log.d.mts +37 -0
  183. package/internal/utils/log.d.mts.map +1 -0
  184. package/internal/utils/log.d.ts +37 -0
  185. package/internal/utils/log.d.ts.map +1 -0
  186. package/internal/utils/log.js +87 -0
  187. package/internal/utils/log.js.map +1 -0
  188. package/internal/utils/log.mjs +81 -0
  189. package/internal/utils/log.mjs.map +1 -0
  190. package/internal/utils/path.d.mts +15 -0
  191. package/internal/utils/path.d.mts.map +1 -0
  192. package/internal/utils/path.d.ts +15 -0
  193. package/internal/utils/path.d.ts.map +1 -0
  194. package/internal/utils/path.js +79 -0
  195. package/internal/utils/path.js.map +1 -0
  196. package/internal/utils/path.mjs +74 -0
  197. package/internal/utils/path.mjs.map +1 -0
  198. package/internal/utils/sleep.d.mts +2 -0
  199. package/internal/utils/sleep.d.mts.map +1 -0
  200. package/internal/utils/sleep.d.ts +2 -0
  201. package/internal/utils/sleep.d.ts.map +1 -0
  202. package/internal/utils/sleep.js +7 -0
  203. package/internal/utils/sleep.js.map +1 -0
  204. package/internal/utils/sleep.mjs +3 -0
  205. package/internal/utils/sleep.mjs.map +1 -0
  206. package/internal/utils/uuid.d.mts +5 -0
  207. package/internal/utils/uuid.d.mts.map +1 -0
  208. package/internal/utils/uuid.d.ts +5 -0
  209. package/internal/utils/uuid.d.ts.map +1 -0
  210. package/internal/utils/uuid.js +19 -0
  211. package/internal/utils/uuid.js.map +1 -0
  212. package/internal/utils/uuid.mjs +15 -0
  213. package/internal/utils/uuid.mjs.map +1 -0
  214. package/internal/utils/values.d.mts +18 -0
  215. package/internal/utils/values.d.mts.map +1 -0
  216. package/internal/utils/values.d.ts +18 -0
  217. package/internal/utils/values.d.ts.map +1 -0
  218. package/internal/utils/values.js +112 -0
  219. package/internal/utils/values.js.map +1 -0
  220. package/internal/utils/values.mjs +94 -0
  221. package/internal/utils/values.mjs.map +1 -0
  222. package/internal/utils.d.mts +7 -0
  223. package/internal/utils.d.mts.map +1 -0
  224. package/internal/utils.d.ts +7 -0
  225. package/internal/utils.d.ts.map +1 -0
  226. package/internal/utils.js +11 -0
  227. package/internal/utils.js.map +1 -0
  228. package/internal/utils.mjs +8 -0
  229. package/internal/utils.mjs.map +1 -0
  230. package/package.json +137 -0
  231. package/resource.d.mts +2 -0
  232. package/resource.d.mts.map +1 -0
  233. package/resource.d.ts +2 -0
  234. package/resource.d.ts.map +1 -0
  235. package/resource.js +6 -0
  236. package/resource.js.map +1 -0
  237. package/resource.mjs +2 -0
  238. package/resource.mjs.map +1 -0
  239. package/resources/contacts.d.mts +103 -0
  240. package/resources/contacts.d.mts.map +1 -0
  241. package/resources/contacts.d.ts +103 -0
  242. package/resources/contacts.d.ts.map +1 -0
  243. package/resources/contacts.js +33 -0
  244. package/resources/contacts.js.map +1 -0
  245. package/resources/contacts.mjs +29 -0
  246. package/resources/contacts.mjs.map +1 -0
  247. package/resources/index.d.mts +6 -0
  248. package/resources/index.d.mts.map +1 -0
  249. package/resources/index.d.ts +6 -0
  250. package/resources/index.d.ts.map +1 -0
  251. package/resources/index.js +15 -0
  252. package/resources/index.js.map +1 -0
  253. package/resources/index.mjs +7 -0
  254. package/resources/index.mjs.map +1 -0
  255. package/resources/messages.d.mts +222 -0
  256. package/resources/messages.d.mts.map +1 -0
  257. package/resources/messages.d.ts +222 -0
  258. package/resources/messages.d.ts.map +1 -0
  259. package/resources/messages.js +90 -0
  260. package/resources/messages.js.map +1 -0
  261. package/resources/messages.mjs +86 -0
  262. package/resources/messages.mjs.map +1 -0
  263. package/resources/number-lookup.d.mts +59 -0
  264. package/resources/number-lookup.d.mts.map +1 -0
  265. package/resources/number-lookup.d.ts +59 -0
  266. package/resources/number-lookup.d.ts.map +1 -0
  267. package/resources/number-lookup.js +17 -0
  268. package/resources/number-lookup.js.map +1 -0
  269. package/resources/number-lookup.mjs +13 -0
  270. package/resources/number-lookup.mjs.map +1 -0
  271. package/resources/organizations/index.d.mts +3 -0
  272. package/resources/organizations/index.d.mts.map +1 -0
  273. package/resources/organizations/index.d.ts +3 -0
  274. package/resources/organizations/index.d.ts.map +1 -0
  275. package/resources/organizations/index.js +9 -0
  276. package/resources/organizations/index.js.map +1 -0
  277. package/resources/organizations/index.mjs +4 -0
  278. package/resources/organizations/index.mjs.map +1 -0
  279. package/resources/organizations/organizations.d.mts +63 -0
  280. package/resources/organizations/organizations.d.mts.map +1 -0
  281. package/resources/organizations/organizations.d.ts +63 -0
  282. package/resources/organizations/organizations.d.ts.map +1 -0
  283. package/resources/organizations/organizations.js +46 -0
  284. package/resources/organizations/organizations.js.map +1 -0
  285. package/resources/organizations/organizations.mjs +41 -0
  286. package/resources/organizations/organizations.mjs.map +1 -0
  287. package/resources/organizations/users.d.mts +126 -0
  288. package/resources/organizations/users.d.mts.map +1 -0
  289. package/resources/organizations/users.d.ts +126 -0
  290. package/resources/organizations/users.d.ts.map +1 -0
  291. package/resources/organizations/users.js +95 -0
  292. package/resources/organizations/users.js.map +1 -0
  293. package/resources/organizations/users.mjs +91 -0
  294. package/resources/organizations/users.mjs.map +1 -0
  295. package/resources/organizations.d.mts +2 -0
  296. package/resources/organizations.d.mts.map +1 -0
  297. package/resources/organizations.d.ts +2 -0
  298. package/resources/organizations.d.ts.map +1 -0
  299. package/resources/organizations.js +6 -0
  300. package/resources/organizations.js.map +1 -0
  301. package/resources/organizations.mjs +3 -0
  302. package/resources/organizations.mjs.map +1 -0
  303. package/resources/templates.d.mts +333 -0
  304. package/resources/templates.d.mts.map +1 -0
  305. package/resources/templates.d.ts +333 -0
  306. package/resources/templates.d.ts.map +1 -0
  307. package/resources/templates.js +84 -0
  308. package/resources/templates.js.map +1 -0
  309. package/resources/templates.mjs +80 -0
  310. package/resources/templates.mjs.map +1 -0
  311. package/resources.d.mts +2 -0
  312. package/resources.d.mts.map +1 -0
  313. package/resources.d.ts +2 -0
  314. package/resources.d.ts.map +1 -0
  315. package/resources.js +5 -0
  316. package/resources.js.map +1 -0
  317. package/resources.mjs +2 -0
  318. package/resources.mjs.map +1 -0
  319. package/src/api-promise.ts +2 -0
  320. package/src/client.ts +832 -0
  321. package/src/core/README.md +3 -0
  322. package/src/core/api-promise.ts +92 -0
  323. package/src/core/error.ts +130 -0
  324. package/src/core/resource.ts +11 -0
  325. package/src/core/uploads.ts +2 -0
  326. package/src/error.ts +2 -0
  327. package/src/index.ts +22 -0
  328. package/src/internal/README.md +3 -0
  329. package/src/internal/builtin-types.ts +93 -0
  330. package/src/internal/detect-platform.ts +196 -0
  331. package/src/internal/errors.ts +33 -0
  332. package/src/internal/headers.ts +97 -0
  333. package/src/internal/parse.ts +50 -0
  334. package/src/internal/request-options.ts +91 -0
  335. package/src/internal/shim-types.ts +26 -0
  336. package/src/internal/shims.ts +107 -0
  337. package/src/internal/to-file.ts +154 -0
  338. package/src/internal/types.ts +95 -0
  339. package/src/internal/uploads.ts +187 -0
  340. package/src/internal/utils/base64.ts +40 -0
  341. package/src/internal/utils/bytes.ts +32 -0
  342. package/src/internal/utils/env.ts +18 -0
  343. package/src/internal/utils/log.ts +128 -0
  344. package/src/internal/utils/path.ts +88 -0
  345. package/src/internal/utils/sleep.ts +3 -0
  346. package/src/internal/utils/uuid.ts +17 -0
  347. package/src/internal/utils/values.ts +105 -0
  348. package/src/internal/utils.ts +8 -0
  349. package/src/lib/.keep +4 -0
  350. package/src/resource.ts +2 -0
  351. package/src/resources/contacts.ts +142 -0
  352. package/src/resources/index.ts +38 -0
  353. package/src/resources/messages.ts +283 -0
  354. package/src/resources/number-lookup.ts +80 -0
  355. package/src/resources/organizations/index.ts +18 -0
  356. package/src/resources/organizations/organizations.ts +116 -0
  357. package/src/resources/organizations/users.ts +189 -0
  358. package/src/resources/organizations.ts +3 -0
  359. package/src/resources/templates.ts +430 -0
  360. package/src/resources.ts +1 -0
  361. package/src/tsconfig.json +11 -0
  362. package/src/uploads.ts +2 -0
  363. package/src/version.ts +1 -0
  364. package/uploads.d.mts +2 -0
  365. package/uploads.d.mts.map +1 -0
  366. package/uploads.d.ts +2 -0
  367. package/uploads.d.ts.map +1 -0
  368. package/uploads.js +6 -0
  369. package/uploads.js.map +1 -0
  370. package/uploads.mjs +2 -0
  371. package/uploads.mjs.map +1 -0
  372. package/version.d.mts +2 -0
  373. package/version.d.mts.map +1 -0
  374. package/version.d.ts +2 -0
  375. package/version.d.ts.map +1 -0
  376. package/version.js +5 -0
  377. package/version.js.map +1 -0
  378. package/version.mjs +2 -0
  379. package/version.mjs.map +1 -0
@@ -0,0 +1,189 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { APIResource } from '../../core/resource';
4
+ import { APIPromise } from '../../core/api-promise';
5
+ import { buildHeaders } from '../../internal/headers';
6
+ import { RequestOptions } from '../../internal/request-options';
7
+ import { path } from '../../internal/utils/path';
8
+
9
+ export class Users extends APIResource {
10
+ /**
11
+ * Retrieves a specific user by their ID. Requires appropriate permissions. The
12
+ * customerId can be either an organization ID or a profile ID.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const customerUser =
17
+ * await client.organizations.users.retrieve(
18
+ * '650e8400-e29b-41d4-a716-446655440000',
19
+ * { customerId: '550e8400-e29b-41d4-a716-446655440000' },
20
+ * );
21
+ * ```
22
+ */
23
+ retrieve(userID: string, params: UserRetrieveParams, options?: RequestOptions): APIPromise<CustomerUser> {
24
+ const { customerId } = params;
25
+ return this._client.get(path`/v2/organizations/${customerId}/users/${userID}`, options);
26
+ }
27
+
28
+ /**
29
+ * Retrieves all users associated with an organization or sender profile. Requires
30
+ * appropriate permissions. Supports pagination.
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * const users = await client.organizations.users.list(
35
+ * '550e8400-e29b-41d4-a716-446655440000',
36
+ * { page: 0, pageSize: 0 },
37
+ * );
38
+ * ```
39
+ */
40
+ list(customerID: string, query: UserListParams, options?: RequestOptions): APIPromise<UserListResponse> {
41
+ return this._client.get(path`/v2/organizations/${customerID}/users`, { query, ...options });
42
+ }
43
+
44
+ /**
45
+ * Removes a user from an organization or sender profile. Requires admin
46
+ * permissions. This action permanently deletes the user association.
47
+ *
48
+ * @example
49
+ * ```ts
50
+ * await client.organizations.users.delete(
51
+ * '650e8400-e29b-41d4-a716-446655440000',
52
+ * { customerId: '550e8400-e29b-41d4-a716-446655440000' },
53
+ * );
54
+ * ```
55
+ */
56
+ delete(userID: string, params: UserDeleteParams, options?: RequestOptions): APIPromise<void> {
57
+ const { customerId } = params;
58
+ return this._client.delete(path`/v2/organizations/${customerId}/users/${userID}`, {
59
+ ...options,
60
+ headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),
61
+ });
62
+ }
63
+
64
+ /**
65
+ * Invites a user to an organization or sender profile with a specified role.
66
+ * Requires appropriate permissions. The customerId can be either an organization
67
+ * ID or a profile ID.
68
+ *
69
+ * @example
70
+ * ```ts
71
+ * const customerUser =
72
+ * await client.organizations.users.invite(
73
+ * '550e8400-e29b-41d4-a716-446655440000',
74
+ * );
75
+ * ```
76
+ */
77
+ invite(customerID: string, body: UserInviteParams, options?: RequestOptions): APIPromise<CustomerUser> {
78
+ return this._client.post(path`/v2/organizations/${customerID}/users`, { body, ...options });
79
+ }
80
+
81
+ /**
82
+ * Updates a user's role within an organization or sender profile. Requires admin
83
+ * permissions. Valid roles are: admin, billing, developer.
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * const customerUser =
88
+ * await client.organizations.users.updateRole(
89
+ * '650e8400-e29b-41d4-a716-446655440000',
90
+ * { customerId: '550e8400-e29b-41d4-a716-446655440000' },
91
+ * );
92
+ * ```
93
+ */
94
+ updateRole(
95
+ userID: string,
96
+ params: UserUpdateRoleParams,
97
+ options?: RequestOptions,
98
+ ): APIPromise<CustomerUser> {
99
+ const { customerId, ...body } = params;
100
+ return this._client.put(path`/v2/organizations/${customerId}/users/${userID}`, { body, ...options });
101
+ }
102
+ }
103
+
104
+ export interface CustomerUser {
105
+ /**
106
+ * Unique identifier
107
+ */
108
+ id?: string;
109
+
110
+ createdAt?: string;
111
+
112
+ customerId?: string;
113
+
114
+ email?: string;
115
+
116
+ invitationSentAt?: string | null;
117
+
118
+ invitationToken?: string | null;
119
+
120
+ invitationTokenExpiresAt?: string | null;
121
+
122
+ lastLoginAt?: string | null;
123
+
124
+ name?: string;
125
+
126
+ role?: string;
127
+
128
+ status?: string;
129
+
130
+ updatedAt?: string | null;
131
+ }
132
+
133
+ export interface UserListResponse {
134
+ page?: number;
135
+
136
+ pageSize?: number;
137
+
138
+ totalCount?: number;
139
+
140
+ users?: Array<CustomerUser>;
141
+ }
142
+
143
+ export interface UserRetrieveParams {
144
+ customerId: string;
145
+ }
146
+
147
+ export interface UserListParams {
148
+ page: number;
149
+
150
+ pageSize: number;
151
+ }
152
+
153
+ export interface UserDeleteParams {
154
+ customerId: string;
155
+ }
156
+
157
+ export interface UserInviteParams {
158
+ email?: string;
159
+
160
+ invitedBy?: string | null;
161
+
162
+ name?: string;
163
+
164
+ role?: string;
165
+ }
166
+
167
+ export interface UserUpdateRoleParams {
168
+ /**
169
+ * Path param
170
+ */
171
+ customerId: string;
172
+
173
+ /**
174
+ * Body param
175
+ */
176
+ role?: string;
177
+ }
178
+
179
+ export declare namespace Users {
180
+ export {
181
+ type CustomerUser as CustomerUser,
182
+ type UserListResponse as UserListResponse,
183
+ type UserRetrieveParams as UserRetrieveParams,
184
+ type UserListParams as UserListParams,
185
+ type UserDeleteParams as UserDeleteParams,
186
+ type UserInviteParams as UserInviteParams,
187
+ type UserUpdateRoleParams as UserUpdateRoleParams,
188
+ };
189
+ }
@@ -0,0 +1,3 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ export * from './organizations/index';
@@ -0,0 +1,430 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { APIResource } from '../core/resource';
4
+ import * as TemplatesAPI from './templates';
5
+ import { APIPromise } from '../core/api-promise';
6
+ import { buildHeaders } from '../internal/headers';
7
+ import { RequestOptions } from '../internal/request-options';
8
+ import { path } from '../internal/utils/path';
9
+
10
+ export class Templates extends APIResource {
11
+ /**
12
+ * Creates a new message template for the authenticated customer with comprehensive
13
+ * template definitions including headers, body, footer, and interactive buttons.
14
+ * Supports automatic metadata generation using AI (display name, language,
15
+ * category). Optionally submits the template for WhatsApp review. The customer ID
16
+ * is extracted from the authentication token.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const templateResponse = await client.templates.create({
21
+ * definition: { body: {} },
22
+ * });
23
+ * ```
24
+ */
25
+ create(body: TemplateCreateParams, options?: RequestOptions): APIPromise<TemplateResponse> {
26
+ return this._client.post('/v2/templates', { body, ...options });
27
+ }
28
+
29
+ /**
30
+ * Retrieves a specific message template by its unique identifier for the
31
+ * authenticated customer with comprehensive template definitions including
32
+ * headers, body, footer, and interactive buttons. The customer ID is extracted
33
+ * from the authentication token.
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * const templateResponse = await client.templates.retrieve(
38
+ * '7ba7b820-9dad-11d1-80b4-00c04fd430c8',
39
+ * );
40
+ * ```
41
+ */
42
+ retrieve(id: string, options?: RequestOptions): APIPromise<TemplateResponse> {
43
+ return this._client.get(path`/v2/templates/${id}`, options);
44
+ }
45
+
46
+ /**
47
+ * Retrieves all message templates available for the authenticated customer with
48
+ * comprehensive template definitions including headers, body, footer, and
49
+ * interactive buttons. Supports advanced filtering by search term, status, and
50
+ * category, plus pagination. The customer ID is extracted from the authentication
51
+ * token.
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * const templates = await client.templates.list({
56
+ * page: 0,
57
+ * pageSize: 0,
58
+ * });
59
+ * ```
60
+ */
61
+ list(query: TemplateListParams, options?: RequestOptions): APIPromise<TemplateListResponse> {
62
+ return this._client.get('/v2/templates', { query, ...options });
63
+ }
64
+
65
+ /**
66
+ * Deletes a specific message template by its unique identifier for the
67
+ * authenticated customer with smart deletion strategy. Deletion behavior: - If
68
+ * template has NO messages: Permanently deleted from database (hard delete). - If
69
+ * template has messages: Marked as deleted but preserved for message history (soft
70
+ * delete with snapshot). The template must exist and belong to the authenticated
71
+ * customer to be deleted successfully. The customer ID is extracted from the
72
+ * authentication token.
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * await client.templates.delete(
77
+ * '7ba7b820-9dad-11d1-80b4-00c04fd430c8',
78
+ * );
79
+ * ```
80
+ */
81
+ delete(id: string, options?: RequestOptions): APIPromise<void> {
82
+ return this._client.delete(path`/v2/templates/${id}`, {
83
+ ...options,
84
+ headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),
85
+ });
86
+ }
87
+ }
88
+
89
+ export interface TemplateBodyContent {
90
+ template?: string;
91
+
92
+ type?: string | null;
93
+
94
+ variables?: Array<TemplateVariable> | null;
95
+ }
96
+
97
+ /**
98
+ * Complete definition of a message template including header, body, footer, and
99
+ * buttons
100
+ */
101
+ export interface TemplateDefinition {
102
+ /**
103
+ * Required template body with content for different channels (multi-channel,
104
+ * SMS-specific, or WhatsApp-specific)
105
+ */
106
+ body: TemplateDefinition.Body;
107
+
108
+ /**
109
+ * Configuration specific to AUTHENTICATION category templates (optional)
110
+ */
111
+ authenticationConfig?: TemplateDefinition.AuthenticationConfig | null;
112
+
113
+ /**
114
+ * Optional list of interactive buttons (e.g., quick replies, URLs, phone numbers)
115
+ */
116
+ buttons?: Array<TemplateDefinition.Button> | null;
117
+
118
+ /**
119
+ * The version of the template definition format
120
+ */
121
+ definitionVersion?: string | null;
122
+
123
+ /**
124
+ * Optional template footer with optional variables
125
+ */
126
+ footer?: TemplateDefinition.Footer | null;
127
+
128
+ /**
129
+ * Optional template header with optional variables
130
+ */
131
+ header?: TemplateDefinition.Header | null;
132
+ }
133
+
134
+ export namespace TemplateDefinition {
135
+ /**
136
+ * Required template body with content for different channels (multi-channel,
137
+ * SMS-specific, or WhatsApp-specific)
138
+ */
139
+ export interface Body {
140
+ /**
141
+ * Content that will be used for all channels (SMS and WhatsApp) unless
142
+ * channel-specific content is provided
143
+ */
144
+ multiChannel?: TemplatesAPI.TemplateBodyContent | null;
145
+
146
+ /**
147
+ * SMS-specific content that overrides multi-channel content for SMS messages
148
+ */
149
+ sms?: TemplatesAPI.TemplateBodyContent | null;
150
+
151
+ /**
152
+ * WhatsApp-specific content that overrides multi-channel content for WhatsApp
153
+ * messages
154
+ */
155
+ whatsapp?: TemplatesAPI.TemplateBodyContent | null;
156
+ }
157
+
158
+ /**
159
+ * Configuration specific to AUTHENTICATION category templates (optional)
160
+ */
161
+ export interface AuthenticationConfig {
162
+ /**
163
+ * Whether to add the security recommendation text: "For your security, do not
164
+ * share this code."
165
+ */
166
+ addSecurityRecommendation?: boolean;
167
+
168
+ /**
169
+ * Code expiration time in minutes (1-90). If set, adds footer: "This code expires
170
+ * in X minutes."
171
+ */
172
+ codeExpirationMinutes?: number | null;
173
+ }
174
+
175
+ /**
176
+ * Interactive button in a message template
177
+ */
178
+ export interface Button {
179
+ /**
180
+ * The unique identifier of the button (1-based index)
181
+ */
182
+ id?: number;
183
+
184
+ /**
185
+ * Properties specific to the button type
186
+ */
187
+ props?: Button.Props;
188
+
189
+ /**
190
+ * The type of button (e.g., QUICK_REPLY, URL, PHONE_NUMBER, VOICE_CALL, COPY_CODE)
191
+ */
192
+ type?: string;
193
+ }
194
+
195
+ export namespace Button {
196
+ /**
197
+ * Properties specific to the button type
198
+ */
199
+ export interface Props {
200
+ activeFor?: number | null;
201
+
202
+ autofillText?: string | null;
203
+
204
+ countryCode?: string | null;
205
+
206
+ offerCode?: string | null;
207
+
208
+ otpType?: string | null;
209
+
210
+ packageName?: string | null;
211
+
212
+ phoneNumber?: string | null;
213
+
214
+ quickReplyType?: string | null;
215
+
216
+ signatureHash?: string | null;
217
+
218
+ text?: string | null;
219
+
220
+ url?: string | null;
221
+
222
+ urlType?: string | null;
223
+ }
224
+ }
225
+
226
+ /**
227
+ * Optional template footer with optional variables
228
+ */
229
+ export interface Footer {
230
+ /**
231
+ * The footer template text with optional variable placeholders
232
+ */
233
+ template?: string;
234
+
235
+ /**
236
+ * The type of footer (typically "text")
237
+ */
238
+ type?: string | null;
239
+
240
+ /**
241
+ * List of variables used in the footer template
242
+ */
243
+ variables?: Array<TemplatesAPI.TemplateVariable> | null;
244
+ }
245
+
246
+ /**
247
+ * Optional template header with optional variables
248
+ */
249
+ export interface Header {
250
+ /**
251
+ * The header template text with optional variable placeholders (e.g., "Welcome to
252
+ * {{0:variable}}")
253
+ */
254
+ template?: string;
255
+
256
+ /**
257
+ * The type of header (e.g., "text", "image", "video", "document")
258
+ */
259
+ type?: string | null;
260
+
261
+ /**
262
+ * List of variables used in the header template
263
+ */
264
+ variables?: Array<TemplatesAPI.TemplateVariable> | null;
265
+ }
266
+ }
267
+
268
+ /**
269
+ * Represents a message template with comprehensive metadata including definition
270
+ * structure
271
+ */
272
+ export interface TemplateResponse {
273
+ /**
274
+ * The unique identifier of the template
275
+ */
276
+ id?: string;
277
+
278
+ /**
279
+ * The template category (e.g., MARKETING, UTILITY, AUTHENTICATION)
280
+ */
281
+ category?: string;
282
+
283
+ /**
284
+ * The date and time when the template was created
285
+ */
286
+ createdAt?: string;
287
+
288
+ /**
289
+ * The complete template definition including header, body, footer, and buttons
290
+ */
291
+ definition?: TemplateDefinition;
292
+
293
+ /**
294
+ * The display name of the template (auto-generated if not provided)
295
+ */
296
+ displayName?: string;
297
+
298
+ /**
299
+ * Indicates whether the template is published and available for use
300
+ */
301
+ isPublished?: boolean;
302
+
303
+ /**
304
+ * The template language code (e.g., en_US, es_ES)
305
+ */
306
+ language?: string;
307
+
308
+ /**
309
+ * The approval status of the template (e.g., APPROVED, PENDING, REJECTED, DRAFT)
310
+ */
311
+ status?: string;
312
+
313
+ /**
314
+ * The date and time when the template was last updated
315
+ */
316
+ updatedAt?: string | null;
317
+
318
+ /**
319
+ * The WhatsApp Business API template ID from Meta
320
+ */
321
+ whatsappTemplateId?: string;
322
+
323
+ /**
324
+ * The WhatsApp template name as registered with Meta
325
+ */
326
+ whatsappTemplateName?: string;
327
+ }
328
+
329
+ export interface TemplateVariable {
330
+ id?: number;
331
+
332
+ name?: string;
333
+
334
+ props?: TemplateVariable.Props;
335
+
336
+ type?: string;
337
+ }
338
+
339
+ export namespace TemplateVariable {
340
+ export interface Props {
341
+ alt?: string | null;
342
+
343
+ mediaType?: string | null;
344
+
345
+ sample?: string | null;
346
+
347
+ shortUrl?: string | null;
348
+
349
+ url?: string | null;
350
+
351
+ variableType?: string | null;
352
+ }
353
+ }
354
+
355
+ export interface TemplateListResponse {
356
+ items?: Array<TemplateResponse>;
357
+
358
+ page?: number;
359
+
360
+ pageSize?: number;
361
+
362
+ totalCount?: number;
363
+
364
+ totalPages?: number;
365
+ }
366
+
367
+ export interface TemplateCreateParams {
368
+ /**
369
+ * Template definition containing header, body, footer, and buttons
370
+ */
371
+ definition: TemplateDefinition;
372
+
373
+ /**
374
+ * The template category (e.g., MARKETING, UTILITY, AUTHENTICATION). Can only be
375
+ * set when creating a new template. If not provided, will be auto-generated using
376
+ * AI.
377
+ */
378
+ category?: string | null;
379
+
380
+ /**
381
+ * The template language code (e.g., en_US, es_ES). Can only be set when creating a
382
+ * new template. If not provided, will be auto-detected using AI.
383
+ */
384
+ language?: string | null;
385
+
386
+ /**
387
+ * When false, the template will be saved as draft. When true, the template will be
388
+ * submitted for review.
389
+ */
390
+ submitForReview?: boolean;
391
+ }
392
+
393
+ export interface TemplateListParams {
394
+ /**
395
+ * The page number (zero-indexed). Default is 0.
396
+ */
397
+ page: number;
398
+
399
+ /**
400
+ * The number of items per page (1-1000). Default is 100.
401
+ */
402
+ pageSize: number;
403
+
404
+ /**
405
+ * Optional filter by template category (e.g., MARKETING, UTILITY, AUTHENTICATION)
406
+ */
407
+ category?: string | null;
408
+
409
+ /**
410
+ * Optional search term to filter templates by name or content
411
+ */
412
+ search?: string | null;
413
+
414
+ /**
415
+ * Optional filter by template status (e.g., APPROVED, PENDING, REJECTED, DRAFT)
416
+ */
417
+ status?: string | null;
418
+ }
419
+
420
+ export declare namespace Templates {
421
+ export {
422
+ type TemplateBodyContent as TemplateBodyContent,
423
+ type TemplateDefinition as TemplateDefinition,
424
+ type TemplateResponse as TemplateResponse,
425
+ type TemplateVariable as TemplateVariable,
426
+ type TemplateListResponse as TemplateListResponse,
427
+ type TemplateCreateParams as TemplateCreateParams,
428
+ type TemplateListParams as TemplateListParams,
429
+ };
430
+ }
@@ -0,0 +1 @@
1
+ export * from './resources/index';
@@ -0,0 +1,11 @@
1
+ {
2
+ // this config is included in the published src directory to prevent TS errors
3
+ // from appearing when users go to source, and VSCode opens the source .ts file
4
+ // via declaration maps
5
+ "include": ["index.ts"],
6
+ "compilerOptions": {
7
+ "target": "ES2015",
8
+ "lib": ["DOM", "DOM.Iterable", "ES2018"],
9
+ "moduleResolution": "node"
10
+ }
11
+ }
package/src/uploads.ts ADDED
@@ -0,0 +1,2 @@
1
+ /** @deprecated Import from ./core/uploads instead */
2
+ export * from './core/uploads';
package/src/version.ts ADDED
@@ -0,0 +1 @@
1
+ export const VERSION = '0.3.5'; // x-release-please-version
package/uploads.d.mts ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./core/uploads.mjs";
2
+ //# sourceMappingURL=uploads.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploads.d.mts","sourceRoot":"","sources":["src/uploads.ts"],"names":[],"mappings":""}
package/uploads.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./core/uploads.js";
2
+ //# sourceMappingURL=uploads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploads.d.ts","sourceRoot":"","sources":["src/uploads.ts"],"names":[],"mappings":""}
package/uploads.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("./internal/tslib.js");
4
+ /** @deprecated Import from ./core/uploads instead */
5
+ tslib_1.__exportStar(require("./core/uploads.js"), exports);
6
+ //# sourceMappingURL=uploads.js.map
package/uploads.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploads.js","sourceRoot":"","sources":["src/uploads.ts"],"names":[],"mappings":";;;AAAA,qDAAqD;AACrD,4DAA+B"}
package/uploads.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./core/uploads.mjs";
2
+ //# sourceMappingURL=uploads.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploads.mjs","sourceRoot":"","sources":["src/uploads.ts"],"names":[],"mappings":""}
package/version.d.mts ADDED
@@ -0,0 +1,2 @@
1
+ export declare const VERSION = "0.3.5";
2
+ //# sourceMappingURL=version.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.mts","sourceRoot":"","sources":["src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC"}
package/version.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare const VERSION = "0.3.5";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC"}
package/version.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VERSION = void 0;
4
+ exports.VERSION = '0.3.5'; // x-release-please-version
5
+ //# sourceMappingURL=version.js.map