@hasna/connectors 0.5.0 → 0.5.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 (223) hide show
  1. package/bin/index.js +147 -6
  2. package/bin/mcp.js +92 -1
  3. package/bin/serve.js +91 -0
  4. package/connectors/connect-ably/.env.example +11 -0
  5. package/connectors/connect-ably/CLAUDE.md +111 -0
  6. package/connectors/connect-ably/README.md +193 -0
  7. package/connectors/connect-ably/package.json +54 -0
  8. package/connectors/connect-ably/scripts/release.ts +179 -0
  9. package/connectors/connect-ably/src/api/channels.ts +33 -0
  10. package/connectors/connect-ably/src/api/client.ts +203 -0
  11. package/connectors/connect-ably/src/api/index.ts +59 -0
  12. package/connectors/connect-ably/src/api/messages.ts +48 -0
  13. package/connectors/connect-ably/src/api/presence.ts +39 -0
  14. package/connectors/connect-ably/src/api/stats.ts +29 -0
  15. package/connectors/connect-ably/src/cli/index.ts +397 -0
  16. package/connectors/connect-ably/src/index.ts +102 -0
  17. package/connectors/connect-ably/src/types/index.ts +294 -0
  18. package/connectors/connect-ably/src/utils/auth.ts +274 -0
  19. package/connectors/connect-ably/src/utils/bulk.ts +212 -0
  20. package/connectors/connect-ably/src/utils/config.ts +323 -0
  21. package/connectors/connect-ably/src/utils/output.ts +175 -0
  22. package/connectors/connect-ably/src/utils/settings.ts +114 -0
  23. package/connectors/connect-ably/src/utils/storage.ts +198 -0
  24. package/connectors/connect-ably/tsconfig.json +16 -0
  25. package/connectors/connect-box/.env.example +11 -0
  26. package/connectors/connect-box/CLAUDE.md +272 -0
  27. package/connectors/connect-box/README.md +193 -0
  28. package/connectors/connect-box/package.json +51 -0
  29. package/connectors/connect-box/scripts/release.ts +179 -0
  30. package/connectors/connect-box/src/api/client.ts +213 -0
  31. package/connectors/connect-box/src/api/example.ts +48 -0
  32. package/connectors/connect-box/src/api/index.ts +51 -0
  33. package/connectors/connect-box/src/cli/index.ts +254 -0
  34. package/connectors/connect-box/src/index.ts +103 -0
  35. package/connectors/connect-box/src/types/index.ts +237 -0
  36. package/connectors/connect-box/src/utils/auth.ts +274 -0
  37. package/connectors/connect-box/src/utils/bulk.ts +212 -0
  38. package/connectors/connect-box/src/utils/config.ts +326 -0
  39. package/connectors/connect-box/src/utils/output.ts +175 -0
  40. package/connectors/connect-box/src/utils/settings.ts +114 -0
  41. package/connectors/connect-box/src/utils/storage.ts +198 -0
  42. package/connectors/connect-box/tsconfig.json +16 -0
  43. package/connectors/connect-clearbit/.env.example +11 -0
  44. package/connectors/connect-clearbit/CLAUDE.md +272 -0
  45. package/connectors/connect-clearbit/README.md +193 -0
  46. package/connectors/connect-clearbit/package.json +51 -0
  47. package/connectors/connect-clearbit/scripts/release.ts +179 -0
  48. package/connectors/connect-clearbit/src/api/client.ts +213 -0
  49. package/connectors/connect-clearbit/src/api/example.ts +48 -0
  50. package/connectors/connect-clearbit/src/api/index.ts +51 -0
  51. package/connectors/connect-clearbit/src/cli/index.ts +254 -0
  52. package/connectors/connect-clearbit/src/index.ts +103 -0
  53. package/connectors/connect-clearbit/src/types/index.ts +237 -0
  54. package/connectors/connect-clearbit/src/utils/auth.ts +274 -0
  55. package/connectors/connect-clearbit/src/utils/bulk.ts +212 -0
  56. package/connectors/connect-clearbit/src/utils/config.ts +326 -0
  57. package/connectors/connect-clearbit/src/utils/output.ts +175 -0
  58. package/connectors/connect-clearbit/src/utils/settings.ts +114 -0
  59. package/connectors/connect-clearbit/src/utils/storage.ts +198 -0
  60. package/connectors/connect-clearbit/tsconfig.json +16 -0
  61. package/connectors/connect-coda/.env.example +11 -0
  62. package/connectors/connect-coda/CLAUDE.md +272 -0
  63. package/connectors/connect-coda/README.md +193 -0
  64. package/connectors/connect-coda/package.json +51 -0
  65. package/connectors/connect-coda/scripts/release.ts +179 -0
  66. package/connectors/connect-coda/src/api/client.ts +213 -0
  67. package/connectors/connect-coda/src/api/example.ts +48 -0
  68. package/connectors/connect-coda/src/api/index.ts +51 -0
  69. package/connectors/connect-coda/src/cli/index.ts +254 -0
  70. package/connectors/connect-coda/src/index.ts +103 -0
  71. package/connectors/connect-coda/src/types/index.ts +237 -0
  72. package/connectors/connect-coda/src/utils/auth.ts +274 -0
  73. package/connectors/connect-coda/src/utils/bulk.ts +212 -0
  74. package/connectors/connect-coda/src/utils/config.ts +326 -0
  75. package/connectors/connect-coda/src/utils/output.ts +175 -0
  76. package/connectors/connect-coda/src/utils/settings.ts +114 -0
  77. package/connectors/connect-coda/src/utils/storage.ts +198 -0
  78. package/connectors/connect-coda/tsconfig.json +16 -0
  79. package/connectors/connect-dropbox/.env.example +11 -0
  80. package/connectors/connect-dropbox/CLAUDE.md +119 -0
  81. package/connectors/connect-dropbox/README.md +193 -0
  82. package/connectors/connect-dropbox/package.json +51 -0
  83. package/connectors/connect-dropbox/src/api/client.ts +222 -0
  84. package/connectors/connect-dropbox/src/api/index.ts +395 -0
  85. package/connectors/connect-dropbox/src/cli/index.ts +627 -0
  86. package/connectors/connect-dropbox/src/index.ts +20 -0
  87. package/connectors/connect-dropbox/src/types/index.ts +516 -0
  88. package/connectors/connect-dropbox/src/utils/config.ts +197 -0
  89. package/connectors/connect-dropbox/tsconfig.json +16 -0
  90. package/connectors/connect-linode/.env.example +11 -0
  91. package/connectors/connect-linode/CLAUDE.md +272 -0
  92. package/connectors/connect-linode/README.md +193 -0
  93. package/connectors/connect-linode/package.json +51 -0
  94. package/connectors/connect-linode/scripts/release.ts +179 -0
  95. package/connectors/connect-linode/src/api/client.ts +213 -0
  96. package/connectors/connect-linode/src/api/example.ts +48 -0
  97. package/connectors/connect-linode/src/api/index.ts +51 -0
  98. package/connectors/connect-linode/src/cli/index.ts +254 -0
  99. package/connectors/connect-linode/src/index.ts +103 -0
  100. package/connectors/connect-linode/src/types/index.ts +237 -0
  101. package/connectors/connect-linode/src/utils/auth.ts +274 -0
  102. package/connectors/connect-linode/src/utils/bulk.ts +212 -0
  103. package/connectors/connect-linode/src/utils/config.ts +326 -0
  104. package/connectors/connect-linode/src/utils/output.ts +175 -0
  105. package/connectors/connect-linode/src/utils/settings.ts +114 -0
  106. package/connectors/connect-linode/src/utils/storage.ts +198 -0
  107. package/connectors/connect-linode/tsconfig.json +16 -0
  108. package/connectors/connect-mailgun/.env.example +11 -0
  109. package/connectors/connect-mailgun/CLAUDE.md +272 -0
  110. package/connectors/connect-mailgun/README.md +193 -0
  111. package/connectors/connect-mailgun/package.json +51 -0
  112. package/connectors/connect-mailgun/scripts/release.ts +179 -0
  113. package/connectors/connect-mailgun/src/api/client.ts +213 -0
  114. package/connectors/connect-mailgun/src/api/example.ts +48 -0
  115. package/connectors/connect-mailgun/src/api/index.ts +51 -0
  116. package/connectors/connect-mailgun/src/cli/index.ts +254 -0
  117. package/connectors/connect-mailgun/src/index.ts +103 -0
  118. package/connectors/connect-mailgun/src/types/index.ts +237 -0
  119. package/connectors/connect-mailgun/src/utils/auth.ts +274 -0
  120. package/connectors/connect-mailgun/src/utils/bulk.ts +212 -0
  121. package/connectors/connect-mailgun/src/utils/config.ts +326 -0
  122. package/connectors/connect-mailgun/src/utils/output.ts +175 -0
  123. package/connectors/connect-mailgun/src/utils/settings.ts +114 -0
  124. package/connectors/connect-mailgun/src/utils/storage.ts +198 -0
  125. package/connectors/connect-mailgun/tsconfig.json +16 -0
  126. package/connectors/connect-messagebird/.env.example +11 -0
  127. package/connectors/connect-messagebird/CLAUDE.md +272 -0
  128. package/connectors/connect-messagebird/README.md +193 -0
  129. package/connectors/connect-messagebird/package.json +51 -0
  130. package/connectors/connect-messagebird/scripts/release.ts +179 -0
  131. package/connectors/connect-messagebird/src/api/client.ts +213 -0
  132. package/connectors/connect-messagebird/src/api/example.ts +48 -0
  133. package/connectors/connect-messagebird/src/api/index.ts +51 -0
  134. package/connectors/connect-messagebird/src/cli/index.ts +254 -0
  135. package/connectors/connect-messagebird/src/index.ts +103 -0
  136. package/connectors/connect-messagebird/src/types/index.ts +237 -0
  137. package/connectors/connect-messagebird/src/utils/auth.ts +274 -0
  138. package/connectors/connect-messagebird/src/utils/bulk.ts +212 -0
  139. package/connectors/connect-messagebird/src/utils/config.ts +326 -0
  140. package/connectors/connect-messagebird/src/utils/output.ts +175 -0
  141. package/connectors/connect-messagebird/src/utils/settings.ts +114 -0
  142. package/connectors/connect-messagebird/src/utils/storage.ts +198 -0
  143. package/connectors/connect-messagebird/tsconfig.json +16 -0
  144. package/connectors/connect-miro/.env.example +11 -0
  145. package/connectors/connect-miro/CLAUDE.md +272 -0
  146. package/connectors/connect-miro/README.md +193 -0
  147. package/connectors/connect-miro/package.json +51 -0
  148. package/connectors/connect-miro/scripts/release.ts +179 -0
  149. package/connectors/connect-miro/src/api/client.ts +213 -0
  150. package/connectors/connect-miro/src/api/example.ts +48 -0
  151. package/connectors/connect-miro/src/api/index.ts +51 -0
  152. package/connectors/connect-miro/src/cli/index.ts +254 -0
  153. package/connectors/connect-miro/src/index.ts +103 -0
  154. package/connectors/connect-miro/src/types/index.ts +237 -0
  155. package/connectors/connect-miro/src/utils/auth.ts +274 -0
  156. package/connectors/connect-miro/src/utils/bulk.ts +212 -0
  157. package/connectors/connect-miro/src/utils/config.ts +326 -0
  158. package/connectors/connect-miro/src/utils/output.ts +175 -0
  159. package/connectors/connect-miro/src/utils/settings.ts +114 -0
  160. package/connectors/connect-miro/src/utils/storage.ts +198 -0
  161. package/connectors/connect-miro/tsconfig.json +16 -0
  162. package/connectors/connect-monday/.env.example +11 -0
  163. package/connectors/connect-monday/CLAUDE.md +128 -0
  164. package/connectors/connect-monday/README.md +193 -0
  165. package/connectors/connect-monday/package.json +52 -0
  166. package/connectors/connect-monday/src/api/client.ts +59 -0
  167. package/connectors/connect-monday/src/api/index.ts +539 -0
  168. package/connectors/connect-monday/src/cli/index.ts +479 -0
  169. package/connectors/connect-monday/src/index.ts +19 -0
  170. package/connectors/connect-monday/src/types/index.ts +274 -0
  171. package/connectors/connect-monday/src/utils/config.ts +197 -0
  172. package/connectors/connect-monday/src/utils/output.ts +119 -0
  173. package/connectors/connect-monday/tsconfig.json +16 -0
  174. package/connectors/connect-pipedrive/.env.example +11 -0
  175. package/connectors/connect-pipedrive/CLAUDE.md +128 -0
  176. package/connectors/connect-pipedrive/README.md +193 -0
  177. package/connectors/connect-pipedrive/package.json +52 -0
  178. package/connectors/connect-pipedrive/src/api/client.ts +121 -0
  179. package/connectors/connect-pipedrive/src/api/index.ts +306 -0
  180. package/connectors/connect-pipedrive/src/cli/index.ts +824 -0
  181. package/connectors/connect-pipedrive/src/index.ts +19 -0
  182. package/connectors/connect-pipedrive/src/types/index.ts +335 -0
  183. package/connectors/connect-pipedrive/src/utils/config.ts +171 -0
  184. package/connectors/connect-pipedrive/src/utils/output.ts +119 -0
  185. package/connectors/connect-pipedrive/tsconfig.json +16 -0
  186. package/connectors/connect-pusher/.env.example +11 -0
  187. package/connectors/connect-pusher/CLAUDE.md +272 -0
  188. package/connectors/connect-pusher/README.md +193 -0
  189. package/connectors/connect-pusher/package.json +51 -0
  190. package/connectors/connect-pusher/scripts/release.ts +179 -0
  191. package/connectors/connect-pusher/src/api/client.ts +213 -0
  192. package/connectors/connect-pusher/src/api/example.ts +48 -0
  193. package/connectors/connect-pusher/src/api/index.ts +51 -0
  194. package/connectors/connect-pusher/src/cli/index.ts +254 -0
  195. package/connectors/connect-pusher/src/index.ts +103 -0
  196. package/connectors/connect-pusher/src/types/index.ts +237 -0
  197. package/connectors/connect-pusher/src/utils/auth.ts +274 -0
  198. package/connectors/connect-pusher/src/utils/bulk.ts +212 -0
  199. package/connectors/connect-pusher/src/utils/config.ts +326 -0
  200. package/connectors/connect-pusher/src/utils/output.ts +175 -0
  201. package/connectors/connect-pusher/src/utils/settings.ts +114 -0
  202. package/connectors/connect-pusher/src/utils/storage.ts +198 -0
  203. package/connectors/connect-pusher/tsconfig.json +16 -0
  204. package/connectors/connect-vonage/.env.example +11 -0
  205. package/connectors/connect-vonage/CLAUDE.md +272 -0
  206. package/connectors/connect-vonage/README.md +193 -0
  207. package/connectors/connect-vonage/package.json +51 -0
  208. package/connectors/connect-vonage/scripts/release.ts +179 -0
  209. package/connectors/connect-vonage/src/api/client.ts +213 -0
  210. package/connectors/connect-vonage/src/api/example.ts +48 -0
  211. package/connectors/connect-vonage/src/api/index.ts +51 -0
  212. package/connectors/connect-vonage/src/cli/index.ts +254 -0
  213. package/connectors/connect-vonage/src/index.ts +103 -0
  214. package/connectors/connect-vonage/src/types/index.ts +237 -0
  215. package/connectors/connect-vonage/src/utils/auth.ts +274 -0
  216. package/connectors/connect-vonage/src/utils/bulk.ts +212 -0
  217. package/connectors/connect-vonage/src/utils/config.ts +326 -0
  218. package/connectors/connect-vonage/src/utils/output.ts +175 -0
  219. package/connectors/connect-vonage/src/utils/settings.ts +114 -0
  220. package/connectors/connect-vonage/src/utils/storage.ts +198 -0
  221. package/connectors/connect-vonage/tsconfig.json +16 -0
  222. package/dist/index.js +91 -0
  223. package/package.json +1 -1
@@ -0,0 +1,539 @@
1
+ // Monday.com Connector
2
+ // GraphQL API for workspaces, boards, items, and columns management
3
+
4
+ import { MondayClient } from './client';
5
+ import type {
6
+ MondayConfig,
7
+ User,
8
+ Workspace,
9
+ Board,
10
+ Group,
11
+ Item,
12
+ Update,
13
+ CreateBoardInput,
14
+ CreateGroupInput,
15
+ CreateItemInput,
16
+ } from '../types';
17
+
18
+ export { MondayClient } from './client';
19
+
20
+ interface UsersResponse {
21
+ users: User[];
22
+ }
23
+
24
+ interface MeResponse {
25
+ me: User;
26
+ }
27
+
28
+ interface WorkspacesResponse {
29
+ workspaces: Workspace[];
30
+ }
31
+
32
+ interface BoardsResponse {
33
+ boards: Board[];
34
+ }
35
+
36
+ interface ItemsResponse {
37
+ items: Item[];
38
+ }
39
+
40
+ interface CreateBoardResponse {
41
+ create_board: Board;
42
+ }
43
+
44
+ interface CreateGroupResponse {
45
+ create_group: Group;
46
+ }
47
+
48
+ interface CreateItemResponse {
49
+ create_item: Item;
50
+ }
51
+
52
+ interface ChangeColumnValueResponse {
53
+ change_column_value: Item;
54
+ }
55
+
56
+ interface DeleteItemResponse {
57
+ delete_item: { id: string };
58
+ }
59
+
60
+ interface CreateUpdateResponse {
61
+ create_update: Update;
62
+ }
63
+
64
+ export class Monday {
65
+ private client: MondayClient;
66
+
67
+ constructor(config: MondayConfig) {
68
+ this.client = new MondayClient(config);
69
+ }
70
+
71
+ // ============================================
72
+ // User Operations
73
+ // ============================================
74
+
75
+ async me(): Promise<User> {
76
+ const query = `
77
+ query {
78
+ me {
79
+ id
80
+ name
81
+ email
82
+ url
83
+ photo_original
84
+ title
85
+ birthday
86
+ country_code
87
+ location
88
+ time_zone_identifier
89
+ phone
90
+ mobile_phone
91
+ is_guest
92
+ is_pending
93
+ is_admin
94
+ is_view_only
95
+ created_at
96
+ account {
97
+ id
98
+ name
99
+ logo
100
+ slug
101
+ tier
102
+ }
103
+ }
104
+ }
105
+ `;
106
+ const result = await this.client.query<MeResponse>(query);
107
+ return result.me;
108
+ }
109
+
110
+ async listUsers(options?: {
111
+ limit?: number;
112
+ kind?: 'all' | 'non_guests' | 'guests' | 'non_pending';
113
+ }): Promise<User[]> {
114
+ const query = `
115
+ query($limit: Int, $kind: UserKind) {
116
+ users(limit: $limit, kind: $kind) {
117
+ id
118
+ name
119
+ email
120
+ url
121
+ photo_original
122
+ title
123
+ is_guest
124
+ is_pending
125
+ is_admin
126
+ is_view_only
127
+ created_at
128
+ }
129
+ }
130
+ `;
131
+ const result = await this.client.query<UsersResponse>(query, {
132
+ limit: options?.limit,
133
+ kind: options?.kind,
134
+ });
135
+ return result.users;
136
+ }
137
+
138
+ // ============================================
139
+ // Workspace Operations
140
+ // ============================================
141
+
142
+ async listWorkspaces(options?: { limit?: number }): Promise<Workspace[]> {
143
+ const query = `
144
+ query($limit: Int) {
145
+ workspaces(limit: $limit) {
146
+ id
147
+ name
148
+ kind
149
+ description
150
+ created_at
151
+ }
152
+ }
153
+ `;
154
+ const result = await this.client.query<WorkspacesResponse>(query, {
155
+ limit: options?.limit,
156
+ });
157
+ return result.workspaces;
158
+ }
159
+
160
+ // ============================================
161
+ // Board Operations
162
+ // ============================================
163
+
164
+ async listBoards(options?: {
165
+ limit?: number;
166
+ workspace_ids?: number[];
167
+ board_kind?: 'public' | 'private' | 'share';
168
+ state?: 'active' | 'archived' | 'deleted' | 'all';
169
+ order_by?: 'created_at' | 'used_at';
170
+ }): Promise<Board[]> {
171
+ const query = `
172
+ query($limit: Int, $workspace_ids: [ID!], $board_kind: BoardKind, $state: State, $order_by: BoardsOrderBy) {
173
+ boards(limit: $limit, workspace_ids: $workspace_ids, board_kind: $board_kind, state: $state, order_by: $order_by) {
174
+ id
175
+ name
176
+ description
177
+ board_folder_id
178
+ board_kind
179
+ state
180
+ permissions
181
+ workspace_id
182
+ updated_at
183
+ columns {
184
+ id
185
+ title
186
+ type
187
+ archived
188
+ description
189
+ settings_str
190
+ width
191
+ }
192
+ groups {
193
+ id
194
+ title
195
+ color
196
+ position
197
+ archived
198
+ deleted
199
+ }
200
+ owner {
201
+ id
202
+ name
203
+ email
204
+ }
205
+ }
206
+ }
207
+ `;
208
+ const result = await this.client.query<BoardsResponse>(query, {
209
+ limit: options?.limit,
210
+ workspace_ids: options?.workspace_ids,
211
+ board_kind: options?.board_kind,
212
+ state: options?.state,
213
+ order_by: options?.order_by,
214
+ });
215
+ return result.boards;
216
+ }
217
+
218
+ async getBoard(boardId: string | number): Promise<Board | null> {
219
+ const query = `
220
+ query($ids: [ID!]!) {
221
+ boards(ids: $ids) {
222
+ id
223
+ name
224
+ description
225
+ board_folder_id
226
+ board_kind
227
+ state
228
+ permissions
229
+ workspace_id
230
+ updated_at
231
+ columns {
232
+ id
233
+ title
234
+ type
235
+ archived
236
+ description
237
+ settings_str
238
+ width
239
+ }
240
+ groups {
241
+ id
242
+ title
243
+ color
244
+ position
245
+ archived
246
+ deleted
247
+ }
248
+ owner {
249
+ id
250
+ name
251
+ email
252
+ }
253
+ subscribers {
254
+ id
255
+ name
256
+ email
257
+ }
258
+ tags {
259
+ id
260
+ name
261
+ color
262
+ }
263
+ }
264
+ }
265
+ `;
266
+ const result = await this.client.query<BoardsResponse>(query, {
267
+ ids: [boardId.toString()],
268
+ });
269
+ return result.boards[0] || null;
270
+ }
271
+
272
+ async createBoard(input: CreateBoardInput): Promise<Board> {
273
+ const query = `
274
+ mutation($board_name: String!, $board_kind: BoardKind!, $workspace_id: ID, $template_id: ID) {
275
+ create_board(board_name: $board_name, board_kind: $board_kind, workspace_id: $workspace_id, template_id: $template_id) {
276
+ id
277
+ name
278
+ description
279
+ board_kind
280
+ state
281
+ workspace_id
282
+ }
283
+ }
284
+ `;
285
+ const result = await this.client.mutation<CreateBoardResponse>(query, {
286
+ board_name: input.board_name,
287
+ board_kind: input.board_kind,
288
+ workspace_id: input.workspace_id,
289
+ template_id: input.template_id,
290
+ });
291
+ return result.create_board;
292
+ }
293
+
294
+ // ============================================
295
+ // Group Operations
296
+ // ============================================
297
+
298
+ async createGroup(input: CreateGroupInput): Promise<Group> {
299
+ const query = `
300
+ mutation($board_id: ID!, $group_name: String!, $relative_to: String, $position_relative_method: PositionRelative) {
301
+ create_group(board_id: $board_id, group_name: $group_name, relative_to: $relative_to, position_relative_method: $position_relative_method) {
302
+ id
303
+ title
304
+ color
305
+ position
306
+ }
307
+ }
308
+ `;
309
+ const result = await this.client.mutation<CreateGroupResponse>(query, {
310
+ board_id: input.board_id,
311
+ group_name: input.group_name,
312
+ relative_to: input.relative_to,
313
+ position_relative_method: input.position_relative_method,
314
+ });
315
+ return result.create_group;
316
+ }
317
+
318
+ // ============================================
319
+ // Item Operations
320
+ // ============================================
321
+
322
+ async listItems(boardId: string | number, options?: {
323
+ limit?: number;
324
+ group_id?: string;
325
+ }): Promise<Item[]> {
326
+ const query = `
327
+ query($board_id: ID!, $limit: Int) {
328
+ boards(ids: [$board_id]) {
329
+ items_page(limit: $limit) {
330
+ items {
331
+ id
332
+ name
333
+ state
334
+ created_at
335
+ updated_at
336
+ creator_id
337
+ email
338
+ relative_link
339
+ group {
340
+ id
341
+ title
342
+ }
343
+ column_values {
344
+ id
345
+ text
346
+ type
347
+ value
348
+ }
349
+ subitems {
350
+ id
351
+ name
352
+ }
353
+ }
354
+ }
355
+ }
356
+ }
357
+ `;
358
+ const result = await this.client.query<BoardsResponse>(query, {
359
+ board_id: boardId.toString(),
360
+ limit: options?.limit,
361
+ });
362
+ const board = result.boards[0];
363
+ if (!board || !board.items_page) {
364
+ return [];
365
+ }
366
+ let items = board.items_page.items;
367
+ if (options?.group_id) {
368
+ items = items.filter(item => item.group?.id === options.group_id);
369
+ }
370
+ return items;
371
+ }
372
+
373
+ async getItem(itemId: string | number): Promise<Item | null> {
374
+ const query = `
375
+ query($ids: [ID!]!) {
376
+ items(ids: $ids) {
377
+ id
378
+ name
379
+ state
380
+ created_at
381
+ updated_at
382
+ creator_id
383
+ email
384
+ relative_link
385
+ board {
386
+ id
387
+ name
388
+ }
389
+ group {
390
+ id
391
+ title
392
+ }
393
+ column_values {
394
+ id
395
+ text
396
+ type
397
+ value
398
+ column {
399
+ id
400
+ title
401
+ type
402
+ }
403
+ }
404
+ subitems {
405
+ id
406
+ name
407
+ }
408
+ subscribers {
409
+ id
410
+ name
411
+ email
412
+ }
413
+ updates {
414
+ id
415
+ body
416
+ text_body
417
+ created_at
418
+ creator {
419
+ id
420
+ name
421
+ }
422
+ }
423
+ }
424
+ }
425
+ `;
426
+ const result = await this.client.query<ItemsResponse>(query, {
427
+ ids: [itemId.toString()],
428
+ });
429
+ return result.items[0] || null;
430
+ }
431
+
432
+ async createItem(input: CreateItemInput): Promise<Item> {
433
+ const query = `
434
+ mutation($board_id: ID!, $item_name: String!, $group_id: String, $column_values: JSON, $create_labels_if_missing: Boolean) {
435
+ create_item(board_id: $board_id, item_name: $item_name, group_id: $group_id, column_values: $column_values, create_labels_if_missing: $create_labels_if_missing) {
436
+ id
437
+ name
438
+ state
439
+ created_at
440
+ group {
441
+ id
442
+ title
443
+ }
444
+ column_values {
445
+ id
446
+ text
447
+ type
448
+ value
449
+ }
450
+ }
451
+ }
452
+ `;
453
+ const result = await this.client.mutation<CreateItemResponse>(query, {
454
+ board_id: input.board_id,
455
+ item_name: input.item_name,
456
+ group_id: input.group_id,
457
+ column_values: input.column_values,
458
+ create_labels_if_missing: input.create_labels_if_missing,
459
+ });
460
+ return result.create_item;
461
+ }
462
+
463
+ async updateItem(
464
+ boardId: string | number,
465
+ itemId: string | number,
466
+ columnId: string,
467
+ value: string
468
+ ): Promise<Item> {
469
+ const query = `
470
+ mutation($board_id: ID!, $item_id: ID!, $column_id: String!, $value: JSON!) {
471
+ change_column_value(board_id: $board_id, item_id: $item_id, column_id: $column_id, value: $value) {
472
+ id
473
+ name
474
+ column_values {
475
+ id
476
+ text
477
+ type
478
+ value
479
+ }
480
+ }
481
+ }
482
+ `;
483
+ const result = await this.client.mutation<ChangeColumnValueResponse>(query, {
484
+ board_id: boardId.toString(),
485
+ item_id: itemId.toString(),
486
+ column_id: columnId,
487
+ value: value,
488
+ });
489
+ return result.change_column_value;
490
+ }
491
+
492
+ async deleteItem(itemId: string | number): Promise<{ id: string }> {
493
+ const query = `
494
+ mutation($item_id: ID!) {
495
+ delete_item(item_id: $item_id) {
496
+ id
497
+ }
498
+ }
499
+ `;
500
+ const result = await this.client.mutation<DeleteItemResponse>(query, {
501
+ item_id: itemId.toString(),
502
+ });
503
+ return result.delete_item;
504
+ }
505
+
506
+ // ============================================
507
+ // Update (Comment) Operations
508
+ // ============================================
509
+
510
+ async createUpdate(itemId: string | number, body: string): Promise<Update> {
511
+ const query = `
512
+ mutation($item_id: ID!, $body: String!) {
513
+ create_update(item_id: $item_id, body: $body) {
514
+ id
515
+ body
516
+ text_body
517
+ created_at
518
+ creator {
519
+ id
520
+ name
521
+ }
522
+ }
523
+ }
524
+ `;
525
+ const result = await this.client.mutation<CreateUpdateResponse>(query, {
526
+ item_id: itemId.toString(),
527
+ body: body,
528
+ });
529
+ return result.create_update;
530
+ }
531
+
532
+ // ============================================
533
+ // Utility Methods
534
+ // ============================================
535
+
536
+ getClient(): MondayClient {
537
+ return this.client;
538
+ }
539
+ }