@dugjason/front-node 0.1.0-alpha.3 → 0.1.0-beta.2

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 (288) hide show
  1. package/README.md +110 -213
  2. package/dist/client.d.ts +8 -3
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +23 -11
  5. package/dist/client.js.map +1 -1
  6. package/dist/core/client.d.ts +36 -0
  7. package/dist/core/client.d.ts.map +1 -0
  8. package/dist/core/client.js +89 -0
  9. package/dist/core/client.js.map +1 -0
  10. package/dist/core/errors.d.ts +55 -0
  11. package/dist/core/errors.d.ts.map +1 -0
  12. package/dist/core/errors.js +124 -0
  13. package/dist/core/errors.js.map +1 -0
  14. package/dist/core/paginator.d.ts +88 -0
  15. package/dist/core/paginator.d.ts.map +1 -0
  16. package/dist/core/paginator.js +129 -0
  17. package/dist/core/paginator.js.map +1 -0
  18. package/dist/core/resource.d.ts +143 -0
  19. package/dist/core/resource.d.ts.map +1 -0
  20. package/dist/core/resource.js +132 -0
  21. package/dist/core/resource.js.map +1 -0
  22. package/dist/endpoints/accounts.d.ts +34 -0
  23. package/dist/endpoints/accounts.d.ts.map +1 -0
  24. package/dist/endpoints/accounts.js +85 -0
  25. package/dist/endpoints/accounts.js.map +1 -0
  26. package/dist/endpoints/analytics.d.ts +32 -0
  27. package/dist/endpoints/analytics.d.ts.map +1 -0
  28. package/dist/endpoints/analytics.js +48 -0
  29. package/dist/endpoints/analytics.js.map +1 -0
  30. package/dist/endpoints/applications.d.ts +15 -0
  31. package/dist/endpoints/applications.d.ts.map +1 -0
  32. package/dist/endpoints/applications.js +17 -0
  33. package/dist/endpoints/applications.js.map +1 -0
  34. package/dist/endpoints/attachments.d.ts +8 -0
  35. package/dist/endpoints/attachments.d.ts.map +1 -0
  36. package/dist/endpoints/attachments.js +10 -0
  37. package/dist/endpoints/attachments.js.map +1 -0
  38. package/dist/endpoints/channels.d.ts +41 -0
  39. package/dist/endpoints/channels.d.ts.map +1 -0
  40. package/dist/endpoints/channels.js +64 -0
  41. package/dist/endpoints/channels.js.map +1 -0
  42. package/dist/endpoints/comments.d.ts +30 -0
  43. package/dist/endpoints/comments.d.ts.map +1 -0
  44. package/dist/endpoints/comments.js +45 -0
  45. package/dist/endpoints/comments.js.map +1 -0
  46. package/dist/endpoints/contacts.d.ts +46 -0
  47. package/dist/endpoints/contacts.d.ts.map +1 -0
  48. package/dist/endpoints/contacts.js +99 -0
  49. package/dist/endpoints/contacts.js.map +1 -0
  50. package/dist/endpoints/conversations.d.ts +77 -0
  51. package/dist/endpoints/conversations.d.ts.map +1 -0
  52. package/dist/endpoints/conversations.js +221 -0
  53. package/dist/endpoints/conversations.js.map +1 -0
  54. package/dist/endpoints/drafts.d.ts +12 -0
  55. package/dist/endpoints/drafts.d.ts.map +1 -0
  56. package/dist/endpoints/drafts.js +26 -0
  57. package/dist/endpoints/drafts.js.map +1 -0
  58. package/dist/endpoints/events.d.ts +13 -0
  59. package/dist/endpoints/events.d.ts.map +1 -0
  60. package/dist/endpoints/events.js +21 -0
  61. package/dist/endpoints/events.js.map +1 -0
  62. package/dist/endpoints/inboxes.d.ts +42 -0
  63. package/dist/endpoints/inboxes.d.ts.map +1 -0
  64. package/dist/endpoints/inboxes.js +83 -0
  65. package/dist/endpoints/inboxes.js.map +1 -0
  66. package/dist/endpoints/knowledge-base-articles.d.ts +8 -0
  67. package/dist/endpoints/knowledge-base-articles.d.ts.map +1 -0
  68. package/dist/endpoints/knowledge-base-articles.js +10 -0
  69. package/dist/endpoints/knowledge-base-articles.js.map +1 -0
  70. package/dist/endpoints/knowledge-bases.d.ts +50 -0
  71. package/dist/endpoints/knowledge-bases.d.ts.map +1 -0
  72. package/dist/endpoints/knowledge-bases.js +131 -0
  73. package/dist/endpoints/knowledge-bases.js.map +1 -0
  74. package/dist/endpoints/links.d.ts +30 -0
  75. package/dist/endpoints/links.d.ts.map +1 -0
  76. package/dist/endpoints/links.js +67 -0
  77. package/dist/endpoints/links.js.map +1 -0
  78. package/dist/endpoints/message-template-folders.d.ts +38 -0
  79. package/dist/endpoints/message-template-folders.d.ts.map +1 -0
  80. package/dist/endpoints/message-template-folders.js +114 -0
  81. package/dist/endpoints/message-template-folders.js.map +1 -0
  82. package/dist/endpoints/message-templates.d.ts +30 -0
  83. package/dist/endpoints/message-templates.d.ts.map +1 -0
  84. package/dist/endpoints/message-templates.js +69 -0
  85. package/dist/endpoints/message-templates.js.map +1 -0
  86. package/dist/endpoints/messages.d.ts +21 -0
  87. package/dist/endpoints/messages.d.ts.map +1 -0
  88. package/dist/endpoints/messages.js +31 -0
  89. package/dist/endpoints/messages.js.map +1 -0
  90. package/dist/endpoints/rules.d.ts +16 -0
  91. package/dist/endpoints/rules.d.ts.map +1 -0
  92. package/dist/endpoints/rules.js +21 -0
  93. package/dist/endpoints/rules.js.map +1 -0
  94. package/dist/endpoints/shifts.d.ts +46 -0
  95. package/dist/endpoints/shifts.d.ts.map +1 -0
  96. package/dist/endpoints/shifts.js +70 -0
  97. package/dist/endpoints/shifts.js.map +1 -0
  98. package/dist/endpoints/signatures.d.ts +36 -0
  99. package/dist/endpoints/signatures.d.ts.map +1 -0
  100. package/dist/endpoints/signatures.js +52 -0
  101. package/dist/endpoints/signatures.js.map +1 -0
  102. package/dist/endpoints/statuses.d.ts +15 -0
  103. package/dist/endpoints/statuses.d.ts.map +1 -0
  104. package/dist/endpoints/statuses.js +22 -0
  105. package/dist/endpoints/statuses.js.map +1 -0
  106. package/dist/endpoints/tags.d.ts +30 -0
  107. package/dist/endpoints/tags.d.ts.map +1 -0
  108. package/dist/endpoints/tags.js +49 -0
  109. package/dist/endpoints/tags.js.map +1 -0
  110. package/dist/endpoints/teammate-groups.d.ts +47 -0
  111. package/dist/endpoints/teammate-groups.d.ts.map +1 -0
  112. package/dist/endpoints/teammate-groups.js +101 -0
  113. package/dist/endpoints/teammate-groups.js.map +1 -0
  114. package/dist/endpoints/teammates.d.ts +28 -0
  115. package/dist/endpoints/teammates.d.ts.map +1 -0
  116. package/dist/endpoints/teammates.js +59 -0
  117. package/dist/endpoints/teammates.js.map +1 -0
  118. package/dist/endpoints/teams.d.ts +37 -0
  119. package/dist/endpoints/teams.d.ts.map +1 -0
  120. package/dist/endpoints/teams.js +79 -0
  121. package/dist/endpoints/teams.js.map +1 -0
  122. package/dist/front.d.ts +85 -23
  123. package/dist/front.d.ts.map +1 -1
  124. package/dist/front.js +137 -36
  125. package/dist/front.js.map +1 -1
  126. package/dist/generated/client/client.gen.d.ts +3 -0
  127. package/dist/generated/client/client.gen.d.ts.map +1 -0
  128. package/dist/generated/client/client.gen.js +204 -0
  129. package/dist/generated/client/client.gen.js.map +1 -0
  130. package/dist/generated/client/index.d.ts +8 -0
  131. package/dist/generated/client/index.d.ts.map +1 -0
  132. package/dist/generated/client/index.js +6 -0
  133. package/dist/generated/client/index.js.map +1 -0
  134. package/dist/generated/client/types.gen.d.ts +125 -0
  135. package/dist/generated/client/types.gen.d.ts.map +1 -0
  136. package/dist/generated/client/types.gen.js +3 -0
  137. package/dist/generated/client/types.gen.js.map +1 -0
  138. package/dist/generated/client/utils.gen.d.ts +39 -0
  139. package/dist/generated/client/utils.gen.d.ts.map +1 -0
  140. package/dist/generated/client/utils.gen.js +230 -0
  141. package/dist/generated/client/utils.gen.js.map +1 -0
  142. package/dist/generated/client.gen.d.ts +13 -0
  143. package/dist/generated/client.gen.d.ts.map +1 -0
  144. package/dist/generated/client.gen.js +6 -0
  145. package/dist/generated/client.gen.js.map +1 -0
  146. package/dist/generated/core/auth.gen.d.ts +19 -0
  147. package/dist/generated/core/auth.gen.d.ts.map +1 -0
  148. package/dist/generated/core/auth.gen.js +15 -0
  149. package/dist/generated/core/auth.gen.js.map +1 -0
  150. package/dist/generated/core/bodySerializer.gen.d.ts +18 -0
  151. package/dist/generated/core/bodySerializer.gen.d.ts.map +1 -0
  152. package/dist/generated/core/bodySerializer.gen.js +58 -0
  153. package/dist/generated/core/bodySerializer.gen.js.map +1 -0
  154. package/dist/generated/core/params.gen.d.ts +34 -0
  155. package/dist/generated/core/params.gen.d.ts.map +1 -0
  156. package/dist/generated/core/params.gen.js +89 -0
  157. package/dist/generated/core/params.gen.js.map +1 -0
  158. package/dist/generated/core/pathSerializer.gen.d.ts +34 -0
  159. package/dist/generated/core/pathSerializer.gen.d.ts.map +1 -0
  160. package/dist/generated/core/pathSerializer.gen.js +115 -0
  161. package/dist/generated/core/pathSerializer.gen.js.map +1 -0
  162. package/dist/generated/core/serverSentEvents.gen.d.ts +72 -0
  163. package/dist/generated/core/serverSentEvents.gen.d.ts.map +1 -0
  164. package/dist/generated/core/serverSentEvents.gen.js +136 -0
  165. package/dist/generated/core/serverSentEvents.gen.js.map +1 -0
  166. package/dist/generated/core/types.gen.d.ts +79 -0
  167. package/dist/generated/core/types.gen.d.ts.map +1 -0
  168. package/dist/generated/core/types.gen.js +3 -0
  169. package/dist/generated/core/types.gen.js.map +1 -0
  170. package/dist/generated/core/utils.gen.d.ts +15 -0
  171. package/dist/generated/core/utils.gen.d.ts.map +1 -0
  172. package/dist/generated/core/utils.gen.js +70 -0
  173. package/dist/generated/core/utils.gen.js.map +1 -0
  174. package/dist/generated/sdk.gen.d.ts +1292 -0
  175. package/dist/generated/sdk.gen.d.ts.map +1 -0
  176. package/dist/generated/sdk.gen.js +4202 -0
  177. package/dist/generated/sdk.gen.js.map +1 -0
  178. package/dist/generated/types.gen.d.ts +8492 -0
  179. package/dist/generated/types.gen.d.ts.map +1 -0
  180. package/dist/generated/types.gen.js +149 -0
  181. package/dist/generated/types.gen.js.map +1 -0
  182. package/dist/index.d.ts +25 -8
  183. package/dist/index.d.ts.map +1 -1
  184. package/dist/index.js +1 -8
  185. package/dist/index.js.map +1 -1
  186. package/dist/resources/accounts.d.ts +14 -37
  187. package/dist/resources/accounts.d.ts.map +1 -1
  188. package/dist/resources/accounts.js +34 -54
  189. package/dist/resources/accounts.js.map +1 -1
  190. package/dist/resources/analytics.d.ts +36 -0
  191. package/dist/resources/analytics.d.ts.map +1 -0
  192. package/dist/resources/analytics.js +82 -0
  193. package/dist/resources/analytics.js.map +1 -0
  194. package/dist/resources/applications.d.ts +9 -0
  195. package/dist/resources/applications.d.ts.map +1 -0
  196. package/dist/resources/applications.js +13 -0
  197. package/dist/resources/applications.js.map +1 -0
  198. package/dist/resources/channels.d.ts +18 -0
  199. package/dist/resources/channels.d.ts.map +1 -0
  200. package/dist/resources/channels.js +35 -0
  201. package/dist/resources/channels.js.map +1 -0
  202. package/dist/resources/comments.d.ts +18 -0
  203. package/dist/resources/comments.d.ts.map +1 -0
  204. package/dist/resources/comments.js +36 -0
  205. package/dist/resources/comments.js.map +1 -0
  206. package/dist/resources/contacts.d.ts +14 -65
  207. package/dist/resources/contacts.d.ts.map +1 -1
  208. package/dist/resources/contacts.js +24 -84
  209. package/dist/resources/contacts.js.map +1 -1
  210. package/dist/resources/conversations.d.ts +22 -39
  211. package/dist/resources/conversations.d.ts.map +1 -1
  212. package/dist/resources/conversations.js +52 -52
  213. package/dist/resources/conversations.js.map +1 -1
  214. package/dist/resources/drafts.d.ts +13 -25
  215. package/dist/resources/drafts.d.ts.map +1 -1
  216. package/dist/resources/drafts.js +31 -34
  217. package/dist/resources/drafts.js.map +1 -1
  218. package/dist/resources/events.d.ts +23 -0
  219. package/dist/resources/events.d.ts.map +1 -0
  220. package/dist/resources/events.js +28 -0
  221. package/dist/resources/events.js.map +1 -0
  222. package/dist/resources/inboxes.d.ts +12 -0
  223. package/dist/resources/inboxes.d.ts.map +1 -0
  224. package/dist/resources/inboxes.js +25 -0
  225. package/dist/resources/inboxes.js.map +1 -0
  226. package/dist/resources/knowledge-base-articles.d.ts +15 -0
  227. package/dist/resources/knowledge-base-articles.d.ts.map +1 -0
  228. package/dist/resources/knowledge-base-articles.js +34 -0
  229. package/dist/resources/knowledge-base-articles.js.map +1 -0
  230. package/dist/resources/knowledge-base-categories.d.ts +16 -0
  231. package/dist/resources/knowledge-base-categories.d.ts.map +1 -0
  232. package/dist/resources/knowledge-base-categories.js +37 -0
  233. package/dist/resources/knowledge-base-categories.js.map +1 -0
  234. package/dist/resources/knowledge-bases.d.ts +15 -0
  235. package/dist/resources/knowledge-bases.d.ts.map +1 -0
  236. package/dist/resources/knowledge-bases.js +35 -0
  237. package/dist/resources/knowledge-bases.js.map +1 -0
  238. package/dist/resources/links.d.ts +12 -0
  239. package/dist/resources/links.d.ts.map +1 -0
  240. package/dist/resources/links.js +25 -0
  241. package/dist/resources/links.js.map +1 -0
  242. package/dist/resources/message-template-folders.d.ts +13 -0
  243. package/dist/resources/message-template-folders.d.ts.map +1 -0
  244. package/dist/resources/message-template-folders.js +41 -0
  245. package/dist/resources/message-template-folders.js.map +1 -0
  246. package/dist/resources/message-templates.d.ts +16 -0
  247. package/dist/resources/message-templates.d.ts.map +1 -0
  248. package/dist/resources/message-templates.js +50 -0
  249. package/dist/resources/message-templates.js.map +1 -0
  250. package/dist/resources/messages.d.ts +36 -0
  251. package/dist/resources/messages.d.ts.map +1 -0
  252. package/dist/resources/messages.js +55 -0
  253. package/dist/resources/messages.js.map +1 -0
  254. package/dist/resources/rules.d.ts +11 -0
  255. package/dist/resources/rules.d.ts.map +1 -0
  256. package/dist/resources/rules.js +22 -0
  257. package/dist/resources/rules.js.map +1 -0
  258. package/dist/resources/shifts.d.ts +14 -0
  259. package/dist/resources/shifts.d.ts.map +1 -0
  260. package/dist/resources/shifts.js +31 -0
  261. package/dist/resources/shifts.js.map +1 -0
  262. package/dist/resources/signatures.d.ts +17 -0
  263. package/dist/resources/signatures.d.ts.map +1 -0
  264. package/dist/resources/signatures.js +51 -0
  265. package/dist/resources/signatures.js.map +1 -0
  266. package/dist/resources/statuses.d.ts +13 -0
  267. package/dist/resources/statuses.d.ts.map +1 -0
  268. package/dist/resources/statuses.js +28 -0
  269. package/dist/resources/statuses.js.map +1 -0
  270. package/dist/resources/tags.d.ts +15 -61
  271. package/dist/resources/tags.d.ts.map +1 -1
  272. package/dist/resources/tags.js +50 -88
  273. package/dist/resources/tags.js.map +1 -1
  274. package/dist/resources/teammate-groups.d.ts +17 -0
  275. package/dist/resources/teammate-groups.d.ts.map +1 -0
  276. package/dist/resources/teammate-groups.js +25 -0
  277. package/dist/resources/teammate-groups.js.map +1 -0
  278. package/dist/resources/teammates.d.ts +15 -27
  279. package/dist/resources/teammates.d.ts.map +1 -1
  280. package/dist/resources/teammates.js +37 -34
  281. package/dist/resources/teammates.js.map +1 -1
  282. package/dist/resources/teams.d.ts +11 -0
  283. package/dist/resources/teams.d.ts.map +1 -0
  284. package/dist/resources/teams.js +28 -0
  285. package/dist/resources/teams.js.map +1 -0
  286. package/dist/types.d.ts +13 -327
  287. package/dist/types.d.ts.map +1 -1
  288. package/package.json +11 -5
package/README.md CHANGED
@@ -7,34 +7,30 @@ A modern TypeScript SDK for the [Front.com API](https://dev.frontapp.com/referen
7
7
  ```bash
8
8
  npm install @dugjason/front-node
9
9
  # or
10
- pnpm install @dugjason/front-node
11
- # or
12
- yarn add @dugjason/front-node
10
+ pnpm add @dugjason/front-node
13
11
  ```
14
12
 
15
13
  ## Quick Start
16
14
 
17
15
  ```typescript
18
- import { Front } from '@dugjason/front-node';
16
+ import { Front } from " @dugjason/front-node"
19
17
 
20
18
  // Initialize with API key (required)
21
- const front = new Front({
22
- apiKey: process.env.FRONT_API_KEY || 'your-api-key'
23
- });
19
+ const front = new Front({ apiKey: "your-api-key" })
24
20
 
25
21
  // Get token details
26
- const tokenInfo = await front.me();
22
+ const tokenInfo = await front.me()
27
23
 
28
24
  // Fetch a conversation
29
- const conversation = await front.conversations.fetch('cnv_55c8c149');
25
+ const { conversation } = await front.conversations.fetch("cnv_12345")
30
26
 
31
27
  // List teammates
32
- const teammates = await front.teammates.list();
28
+ const { teammates } = await front.teammates.list()
33
29
 
34
30
  // Update a teammate
35
- await front.teammates.update(teammates._results[0].id, {
31
+ await front.teammates.update(teammates[0].id, {
36
32
  is_available: true
37
- });
33
+ })
38
34
  ```
39
35
 
40
36
  ## Authentication
@@ -48,34 +44,73 @@ OAuth provides automatic token refresh and is required for public integrations:
48
44
  ```typescript
49
45
  const front = new Front({
50
46
  oauth: {
51
- clientId: 'your-oauth-client-id',
52
- clientSecret: 'your-oauth-client-secret',
53
- accessToken: 'your-current-access-token',
54
- refreshToken: 'your-refresh-token',
47
+ clientId: "your-oauth-client-id",
48
+ clientSecret: "your-oauth-client-secret",
49
+ accessToken: "your-current-access-token",
50
+ refreshToken: "your-refresh-token",
55
51
 
56
52
  // Optional: Called when tokens are refreshed
57
53
  onTokenRefresh: async (tokens) => {
58
54
  // Save new tokens to your database
59
- await saveTokensToDatabase(tokens);
55
+ await saveTokensToDatabase(tokens)
60
56
  }
61
57
  }
62
- });
58
+ })
63
59
  ```
64
60
 
65
- The SDK automatically refreshes tokens when they expire (every hour) and calls your `onTokenRefresh` callback with the new tokens.
61
+ The SDK automatically refreshes tokens when they expire (Front issues OAuth access tokens with a 1hr TTL) and calls your `onTokenRefresh` callback with the new tokens.
66
62
 
67
63
  ### 2. API Key (Simple Setup)
68
64
 
69
65
  For testing or single-instance usage:
70
66
 
71
67
  ```typescript
72
- // Using environment variable (recommended)
73
- const front = new Front({
74
- apiKey: process.env.FRONT_API_KEY || 'your-api-key'
75
- });
68
+ // Specify your API key when initializing the client
69
+ const front = new Front({ apiKey: "your-api-key" })
70
+
71
+ // Or omit the auth, and we'll load it from `process.env.FRONT_API_KEY` automatically
72
+ const front = new Front()
73
+ ```
74
+
75
+ ## Response Signature
76
+
77
+ All requests have similar return object structure.
78
+ The response will contain;
79
+ * a `response` object containing the raw response from the API
80
+ * the returned object(s) as either an object, list or an iterable list
81
+
82
+ ### Single Object Responses
83
+
84
+ In cases where we're creating or fetching a single resource the response will contain an object matching the name of the resource. For example;
85
+ ```typescript
86
+ const { tag } = front.tags.create({ ... })
87
+ ```
88
+
89
+ ### List Responses
90
+
91
+ For lists of resources, we return a `page` containing `items`.
92
+ In some cases the Front API only returns a single page of resources (no pagination), but in others you can use the iterator to page through all results;
93
+
94
+ ```typescript
95
+ const { page } = await front.accounts.list()
96
+ for (const account of page.items) {
97
+ await doSomething(account)
98
+ }
99
+ ```
100
+
101
+ ## Resource Classes
102
+
103
+ Resources are returned as instances of classes, such as a `Teammate` or `Message`. This allows us to support class instance methods such as `.update()` or .delete() methods on class resources.
104
+ For example, we can fetch a tag then update it;
105
+
106
+ ```typescript
107
+ // Fetch the tag
108
+ let { tag } = await front.tags.get(tagId)
76
109
 
77
- // Or provide directly
78
- const front = new Front({ apiKey: 'your-api-key' });
110
+ // Then we can update it either using the class instance
111
+ tag = await tag.update({ highlight: "red" })
112
+ // or using the same `front.tags...` method
113
+ tag = await front.tags.update(tagId, { highlight: "red" })
79
114
  ```
80
115
 
81
116
  ## API Reference
@@ -84,58 +119,50 @@ const front = new Front({ apiKey: 'your-api-key' });
84
119
 
85
120
  ```typescript
86
121
  // Get details about the current API token
87
- const tokenInfo = await front.me();
88
- console.log('Company name:', tokenInfo.name); // Company name
89
- console.log('Company ID:', tokenInfo.id); // Company ID (e.g., 'cmp_123')
122
+ const tokenInfo = await front.me()
123
+ console.log("Company name:", tokenInfo.name) // Company name
124
+ console.log("Company ID:", tokenInfo.id) // Company ID (e.g., 'cmp_123')
90
125
  ```
91
126
 
92
127
  ### Conversations
93
128
 
94
129
  ```typescript
95
130
  // List conversations
96
- const conversations = await front.conversations.list({
131
+ const { page: conversations } = await front.conversations.list({
132
+ q: "status:unassigned"
97
133
  limit: 50,
98
- q: 'status:unassigned'
99
- });
134
+ })
100
135
 
101
136
  // Fetch a specific conversation
102
- const conversation = await front.conversations.fetch('cnv_123');
137
+ const { conversation } = await front.conversations.fetch("cnv_123")
103
138
 
104
139
  // Update a conversation
105
- await front.conversations.update('cnv_123', {
106
- status: 'archived'
107
- });
140
+ await front.conversations.update("cnv_123", {
141
+ status: "archived"
142
+ })
108
143
 
109
144
  // Get conversation messages
110
- const messages = await front.conversations.getMessages('cnv_123');
145
+ const { page: messages } = await front.conversations.listMessages("cnv_123")
111
146
 
112
147
  // Get conversation events
113
- const events = await front.conversations.getEvents('cnv_123');
148
+ const { page: events } = await front.conversations.listEvents("cnv_123")
114
149
  ```
115
150
 
116
151
  ### Teammates
117
152
 
118
153
  ```typescript
119
154
  // List all teammates
120
- const teammates = await front.teammates.list();
155
+ const { page: teammates } = await front.teammates.list()
121
156
 
122
157
  // Fetch a specific teammate
123
- const teammate = await front.teammates.fetch('tea_123');
158
+ const { teammate } = await front.teammates.fetch("tea_123")
124
159
 
125
160
  // Update a teammate
126
- await front.teammates.update('tea_123', {
127
- first_name: 'John',
128
- last_name: 'Doe',
161
+ await front.teammates.update("tea_123", {
162
+ first_name: "John",
163
+ last_name: "Doe",
129
164
  is_available: true
130
- });
131
-
132
- // Get teammate's inboxes
133
- const inboxes = await front.teammates.getInboxes('tea_123');
134
-
135
- // Get teammate's conversations
136
- const conversations = await front.teammates.getConversations('tea_123', {
137
- limit: 10
138
- });
165
+ })
139
166
  ```
140
167
 
141
168
  ### Drafts
@@ -144,163 +171,23 @@ The drafts API allows you to create, edit, list, and delete draft messages. Draf
144
171
 
145
172
  ```typescript
146
173
  // Create a new draft in a channel (starts a new conversation)
147
- const newDraft = await front.drafts.create('cha_123', {
148
- body: 'This is a new draft message',
149
- subject: 'Draft Subject',
150
- to: ['customer@example.com'],
151
- cc: ['manager@company.com'],
152
- author_id: 'tea_123',
153
- mode: 'private', // 'private' or 'shared'
174
+ const { draft } = await front.drafts.create("cha_123", {
175
+ body: "This is a new draft message",
176
+ subject: "Draft Subject",
177
+ to: ["customer@example.com"],
178
+ cc: ["manager@company.com"],
179
+ author_id: "tea_123",
180
+ mode: "private", // 'private' or 'shared'
154
181
  should_add_default_signature: true
155
- });
182
+ })
156
183
 
157
184
  // Create a draft reply to an existing conversation
158
- const replyDraft = await front.drafts.createReply('cnv_123', {
159
- body: 'This is a draft reply',
160
- channel_id: 'cha_123',
161
- author_id: 'tea_123',
162
- mode: 'shared'
163
- });
164
-
165
- // List drafts in a conversation
166
- const drafts = await front.drafts.list('cnv_123', {
167
- limit: 10
168
- });
169
-
170
- // Edit/update a draft
171
- const updatedDraft = await front.drafts.edit('msg_123', {
172
- body: 'Updated draft content',
173
- subject: 'Updated Subject',
174
- channel_id: 'cha_123',
175
- version: 'draft-version-token', // Required for safe updates
176
- mode: 'shared'
177
- });
178
-
179
- // Delete a draft
180
- await front.drafts.delete('msg_123', {
181
- version: 'draft-version-token' // Required for safe deletion
182
- });
183
- ```
184
-
185
- **Important Notes about Drafts:**
186
- - The `version` field is required for editing and deleting drafts to ensure safe concurrent operations
187
- - Draft modes: `private` (visible to author only) or `shared` (visible to all teammates with access)
188
- - When creating drafts in channels, you're starting a new conversation
189
- - When creating draft replies, you're adding to an existing conversation
190
- - Attachments can be included when creating drafts using base64-encoded data
191
-
192
- ## OAuth Token Management
193
-
194
- When using OAuth, the SDK provides several utilities for token management:
195
-
196
- ```typescript
197
- // Check if using OAuth
198
- const isOAuth = front.isUsingOAuth();
199
-
200
- // Get OAuth manager for advanced operations
201
- const oauthManager = front.getOAuthManager();
202
- if (oauthManager) {
203
- // Force token refresh
204
- const newToken = oauthManager.getAccessToken();
205
- }
206
-
207
- // Update OAuth configuration (e.g., after manual token refresh)
208
- front.updateOAuthConfig({
209
- accessToken: 'new-access-token',
210
- refreshToken: 'new-refresh-token',
211
- });
212
- ```
213
-
214
- ### Token Refresh Callback
215
-
216
- The `onTokenRefresh` callback is crucial for OAuth implementations - it allows the SDK to notify your application when tokens are automatically refreshed, so you can save the updated tokens to your database or storage system.
217
-
218
- **Example with database storage:**
219
- ```typescript
220
- // Function to save tokens to your database
221
- async function saveTokensToDatabase(userId: string, tokens: OAuthTokens) {
222
- await db.users.update(userId, {
223
- frontAccessToken: tokens.access_token,
224
- frontRefreshToken: tokens.refresh_token,
225
- updatedAt: new Date()
226
- });
227
- }
228
-
229
- const front = new Front({
230
- oauth: {
231
- clientId: 'your-client-id',
232
- clientSecret: 'your-client-secret',
233
- accessToken: 'current-access-token',
234
- refreshToken: 'current-refresh-token',
235
-
236
- // SDK calls this whenever tokens are refreshed
237
- onTokenRefresh: async (tokens) => {
238
- console.log('Front SDK refreshed tokens, saving to database...');
239
- await saveTokensToDatabase(currentUserId, tokens);
240
- console.log('Tokens saved successfully');
241
- }
242
- }
243
- });
244
-
245
- // When any API call triggers a token refresh, your callback will be called
246
- const conversations = await front.conversations.list(); // May trigger refresh + callback
247
- ```
248
-
249
- ### Concurrent Token Refresh Protection
250
-
251
- The SDK uses an internal `refreshPromise` mechanism to prevent multiple simultaneous token refresh attempts. This ensures that if multiple API calls happen simultaneously when a token is expired, only one refresh request is made to the OAuth server, and your `onTokenRefresh` callback is only called once.
252
-
253
- **How it works:**
254
- - When the first API call detects an expired token, it starts the refresh process
255
- - Any subsequent API calls that also detect the expired token will wait for the same refresh promise to complete
256
- - Once the refresh is complete, `onTokenRefresh` is called once with the new tokens
257
- - All waiting calls then proceed with the refreshed token
258
-
259
- **Practical Example:**
260
- ```typescript
261
- let refreshCount = 0;
262
-
263
- const front = new Front({
264
- oauth: {
265
- clientId: 'your-client-id',
266
- clientSecret: 'your-client-secret',
267
- accessToken: 'expired-token',
268
- refreshToken: 'your-refresh-token',
269
- onTokenRefresh: async (tokens) => {
270
- refreshCount++;
271
- console.log(`Token refresh #${refreshCount}:`, tokens);
272
- await saveTokensToDatabase(currentUserId, tokens);
273
- }
274
- }
275
- });
276
-
277
- // These calls happen simultaneously when token is expired
278
- // Only ONE refresh request will be made, callback called once
279
- const [conversations, teammates, accounts] = await Promise.all([
280
- front.conversations.list(), // Triggers token refresh
281
- front.teammates.list(), // Waits for existing refresh
282
- front.accounts.list() // Waits for existing refresh
283
- ]);
284
-
285
- console.log(`Refresh count: ${refreshCount}`); // Will be 1, not 3
286
- ```
287
-
288
- This prevents rate limiting issues with the OAuth provider and ensures your database isn't hit with duplicate token updates.
289
-
290
- ## Configuration
291
-
292
- ```typescript
293
- const front = new Front({
294
- apiKey: 'your-api-key', // For API key auth
295
- baseUrl: 'https://api2.frontapp.com', // optional, defaults to Front's API
296
- oauth: { // For OAuth auth
297
- clientId: 'your-client-id',
298
- clientSecret: 'your-client-secret',
299
- accessToken: 'current-access-token',
300
- refreshToken: 'current-refresh-token',
301
- onTokenRefresh: async (tokens) => { /* save tokens */ }
302
- }
303
- });
185
+ const { draft: reply } = await front.drafts.createReply("cnv_123", {
186
+ body: "This is a draft reply",
187
+ channel_id: "cha_123",
188
+ author_id: "tea_123",
189
+ mode: "shared"
190
+ })
304
191
  ```
305
192
 
306
193
  ## Error Handling
@@ -309,11 +196,13 @@ The SDK throws structured errors with helpful information:
309
196
 
310
197
  ```typescript
311
198
  try {
312
- const conversation = await front.conversations.fetch('invalid-id');
199
+ const { conversation } = await front.conversations.fetch("invalid-id")
313
200
  } catch (error) {
314
- console.error('Status:', error.status);
315
- console.error('Message:', error.message);
316
- console.error('Code:', error.code);
201
+ if (error instanceof FrontError) {
202
+ console.error("Status:", error.status)
203
+ console.error("Message:", error.message)
204
+ console.error("Code:", error.code)
205
+ }
317
206
  }
318
207
  ```
319
208
 
@@ -322,15 +211,23 @@ try {
322
211
  The SDK is built with TypeScript and provides full type definitions:
323
212
 
324
213
  ```typescript
325
- import { Front, Conversation, Teammate } from '@dugjason/front-node';
214
+ import { Front, type Account, type Contact } from "@dugjason/front-node"
326
215
 
327
- const front = new Front({ apiKey: 'your-api-key' });
216
+ const front = new Front({ apiKey: "your-api-key" })
328
217
 
329
218
  // Full type safety
330
- const conversation: Conversation = await front.conversations.fetch('cnv_123');
331
- const teammates: Teammate[] = (await front.teammates.list())._results;
219
+ let account: Account
220
+ let contacts: Array<Contact>
221
+ const accountRes = await front.accounts.fetch("acc_123")
222
+ account = accountRes.account
223
+ const contactsRes = front.accounts.listContacts("acc_123")
224
+ contacts = contactsRes.page.items
332
225
  ```
333
226
 
227
+ ## Pagination
228
+
229
+ The SDK supports robust pagination using iterators.
230
+
334
231
  ## Releases
335
232
 
336
233
  This package uses automated publishing with manual version management. When changes are merged to the main branch, the current version in `package.json` is automatically published to npm.
package/dist/client.d.ts CHANGED
@@ -1,11 +1,16 @@
1
1
  import { OAuthTokenManager } from "./oauth";
2
- import type { FrontConfig, RequestOptions } from "./types";
2
+ import type { FrontConfig } from "./types";
3
3
  export declare class FrontClient {
4
4
  private apiKey?;
5
- private baseUrl;
6
5
  private oauthManager?;
7
6
  constructor(config: FrontConfig);
8
- request<T>(options: RequestOptions): Promise<T>;
7
+ private setApiKey;
8
+ request<T>(options: {
9
+ method: string;
10
+ path: string;
11
+ body?: unknown;
12
+ params?: Record<string, unknown>;
13
+ }): Promise<T>;
9
14
  private requestWithRetry;
10
15
  /**
11
16
  * Calculate retry delay based on retry-after header and exponential backoff
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAc,cAAc,EAAE,MAAM,SAAS,CAAA;AAUtE,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,CAAQ;IACvB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,YAAY,CAAC,CAAmB;gBAE5B,MAAM,EAAE,WAAW;IAiBzB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;YAIvC,gBAAgB;IAwF9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAyBrB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAgBnC;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;YACW,cAAc;IAyBtB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhD,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlD,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIzD;;OAEG;IACH,eAAe,IAAI,iBAAiB,GAAG,SAAS;IAIhD;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI;CAMzE"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,SAAS,CAAA;AAUtD,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,CAAQ;IACvB,OAAO,CAAC,YAAY,CAAC,CAAmB;gBAE5B,MAAM,EAAE,WAAW;IAkB/B,OAAO,CAAC,SAAS;IASX,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE;QACxB,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KACjC,GAAG,OAAO,CAAC,CAAC,CAAC;YAIA,gBAAgB;IAgG9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAyBrB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAgBnC;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;YACW,cAAc;IAyBtB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIjD,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhD,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlD,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;IAIzD;;OAEG;IACH,eAAe,IAAI,iBAAiB,GAAG,SAAS;IAIhD;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI;CAMzE"}
package/dist/client.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { client } from "./generated/client.gen";
1
2
  import { OAuthTokenManager } from "./oauth";
2
3
  // Rate limiting configuration
3
4
  const RATE_LIMIT_CONFIG = {
@@ -8,29 +9,40 @@ const RATE_LIMIT_CONFIG = {
8
9
  };
9
10
  export class FrontClient {
10
11
  apiKey;
11
- baseUrl;
12
12
  oauthManager;
13
13
  constructor(config) {
14
- this.baseUrl = config.baseUrl || "https://api2.frontapp.com";
15
- if ("oauth" in config && config.oauth) {
14
+ client.setConfig({
15
+ baseUrl: config.baseUrl || "https://api2.frontapp.com",
16
+ });
17
+ if (config.apiKey) {
18
+ this.setApiKey(config.apiKey);
19
+ }
20
+ if (config.oauth) {
16
21
  // OAuth configuration provided
17
22
  this.oauthManager = new OAuthTokenManager(config.oauth);
18
23
  }
19
- else {
20
- // API key configuration
21
- this.apiKey = config.apiKey || process.env.FRONT_API_KEY;
22
- if (!this.apiKey) {
23
- throw new Error("API key is required when not using OAuth. Provide apiKey via config or FRONT_API_KEY environment variable.");
24
- }
24
+ // Maybe exit here if no auth method is provided
25
+ if (!this.apiKey && !this.oauthManager) {
26
+ throw new Error("API key or OAuth configuration is required");
25
27
  }
26
28
  }
29
+ setApiKey(apiKey) {
30
+ this.apiKey = apiKey;
31
+ client.setConfig({
32
+ headers: {
33
+ Authorization: `Bearer ${apiKey}`,
34
+ },
35
+ });
36
+ }
27
37
  async request(options) {
28
38
  return this.requestWithRetry(options, 0);
29
39
  }
30
40
  async requestWithRetry(options, retryCount) {
31
41
  const { method, path, body, params } = options;
32
42
  // Build URL with query parameters
33
- const url = new URL(path, this.baseUrl);
43
+ const baseUrl = client.getConfig().baseUrl ??
44
+ "https://api2.frontapp.com";
45
+ const url = new URL(path, baseUrl);
34
46
  if (params) {
35
47
  Object.entries(params).forEach(([key, value]) => {
36
48
  if (value !== undefined && value !== null) {
@@ -59,7 +71,7 @@ export class FrontClient {
59
71
  fetchOptions.body = JSON.stringify(body);
60
72
  }
61
73
  try {
62
- const response = await fetch(url.toString(), fetchOptions);
74
+ const response = await fetch(url, fetchOptions);
63
75
  // Handle token expiration for OAuth
64
76
  if (response.status === 401 && this.oauthManager) {
65
77
  // Token might be expired, try to refresh and retry once
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { Client as GeneratedClient } from "../generated/client/types.gen";
2
+ import type { FrontConfig } from "../types";
3
+ /**
4
+ * Core HTTP client used by the SDK's handwritten resources.
5
+ *
6
+ * Responsibilities:
7
+ * - Configure and expose the generated HTTP client
8
+ * - Inject authentication (API key or OAuth) into every request
9
+ * - Refresh OAuth tokens on 401 responses and retry once
10
+ * - Normalize thrown errors into `FrontError` subclasses
11
+ */
12
+ export declare class APIClient {
13
+ private readonly gen;
14
+ private apiKey?;
15
+ private oauthManager?;
16
+ private readonly maxRetries;
17
+ /**
18
+ * Create a new API client.
19
+ *
20
+ * @param config - Front configuration including API key or OAuth settings and optional overrides
21
+ */
22
+ constructor(config?: FrontConfig & {
23
+ maxRetries?: number;
24
+ });
25
+ /**
26
+ * Access the configured generated client for low-level operations.
27
+ */
28
+ getGenClient(): GeneratedClient;
29
+ /**
30
+ * Resolve the current auth token used for requests.
31
+ *
32
+ * @throws FrontError when credentials are missing
33
+ */
34
+ private getAuthToken;
35
+ }
36
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAG9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAK3C;;;;;;;;GAQG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiB;IACrC,OAAO,CAAC,MAAM,CAAC,CAAQ;IACvB,OAAO,CAAC,YAAY,CAAC,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IAEnC;;;;OAIG;gBACS,MAAM,CAAC,EAAE,WAAW,GAAG;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAoD1D;;OAEG;IACH,YAAY,IAAI,eAAe;IAI/B;;;;OAIG;YACW,YAAY;CAK3B"}