@geonheeye/dooray-mcp 0.1.13

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 (287) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +149 -0
  3. package/dist/api/client.d.ts +85 -0
  4. package/dist/api/client.d.ts.map +1 -0
  5. package/dist/api/client.js +272 -0
  6. package/dist/api/client.js.map +1 -0
  7. package/dist/api/common.d.ts +14 -0
  8. package/dist/api/common.d.ts.map +1 -0
  9. package/dist/api/common.js +25 -0
  10. package/dist/api/common.js.map +1 -0
  11. package/dist/api/drive.d.ts +22 -0
  12. package/dist/api/drive.d.ts.map +1 -0
  13. package/dist/api/drive.js +86 -0
  14. package/dist/api/drive.js.map +1 -0
  15. package/dist/api/messenger.d.ts +56 -0
  16. package/dist/api/messenger.d.ts.map +1 -0
  17. package/dist/api/messenger.js +49 -0
  18. package/dist/api/messenger.js.map +1 -0
  19. package/dist/api/projects.d.ts +147 -0
  20. package/dist/api/projects.d.ts.map +1 -0
  21. package/dist/api/projects.js +485 -0
  22. package/dist/api/projects.js.map +1 -0
  23. package/dist/api/wiki.d.ts +38 -0
  24. package/dist/api/wiki.d.ts.map +1 -0
  25. package/dist/api/wiki.js +139 -0
  26. package/dist/api/wiki.js.map +1 -0
  27. package/dist/index.d.ts +7 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +736 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/tools/common/get-my-member-info.d.ts +29 -0
  32. package/dist/tools/common/get-my-member-info.d.ts.map +1 -0
  33. package/dist/tools/common/get-my-member-info.js +95 -0
  34. package/dist/tools/common/get-my-member-info.js.map +1 -0
  35. package/dist/tools/drive/copy-drive-file.d.ts +62 -0
  36. package/dist/tools/drive/copy-drive-file.d.ts.map +1 -0
  37. package/dist/tools/drive/copy-drive-file.js +91 -0
  38. package/dist/tools/drive/copy-drive-file.js.map +1 -0
  39. package/dist/tools/drive/create-drive-folder.d.ts +55 -0
  40. package/dist/tools/drive/create-drive-folder.d.ts.map +1 -0
  41. package/dist/tools/drive/create-drive-folder.js +91 -0
  42. package/dist/tools/drive/create-drive-folder.js.map +1 -0
  43. package/dist/tools/drive/delete-drive-file.d.ts +48 -0
  44. package/dist/tools/drive/delete-drive-file.d.ts.map +1 -0
  45. package/dist/tools/drive/delete-drive-file.js +87 -0
  46. package/dist/tools/drive/delete-drive-file.js.map +1 -0
  47. package/dist/tools/drive/download-drive-file.d.ts +55 -0
  48. package/dist/tools/drive/download-drive-file.d.ts.map +1 -0
  49. package/dist/tools/drive/download-drive-file.js +160 -0
  50. package/dist/tools/drive/download-drive-file.js.map +1 -0
  51. package/dist/tools/drive/get-drive-file-list.d.ts +77 -0
  52. package/dist/tools/drive/get-drive-file-list.d.ts.map +1 -0
  53. package/dist/tools/drive/get-drive-file-list.js +89 -0
  54. package/dist/tools/drive/get-drive-file-list.js.map +1 -0
  55. package/dist/tools/drive/get-drive-file-meta.d.ts +41 -0
  56. package/dist/tools/drive/get-drive-file-meta.d.ts.map +1 -0
  57. package/dist/tools/drive/get-drive-file-meta.js +74 -0
  58. package/dist/tools/drive/get-drive-file-meta.js.map +1 -0
  59. package/dist/tools/drive/get-drive-list.d.ts +63 -0
  60. package/dist/tools/drive/get-drive-list.d.ts.map +1 -0
  61. package/dist/tools/drive/get-drive-list.js +84 -0
  62. package/dist/tools/drive/get-drive-list.js.map +1 -0
  63. package/dist/tools/drive/move-drive-file.d.ts +55 -0
  64. package/dist/tools/drive/move-drive-file.d.ts.map +1 -0
  65. package/dist/tools/drive/move-drive-file.js +92 -0
  66. package/dist/tools/drive/move-drive-file.js.map +1 -0
  67. package/dist/tools/drive/rename-drive-file.d.ts +55 -0
  68. package/dist/tools/drive/rename-drive-file.d.ts.map +1 -0
  69. package/dist/tools/drive/rename-drive-file.js +88 -0
  70. package/dist/tools/drive/rename-drive-file.js.map +1 -0
  71. package/dist/tools/drive/update-drive-file.d.ts +55 -0
  72. package/dist/tools/drive/update-drive-file.d.ts.map +1 -0
  73. package/dist/tools/drive/update-drive-file.js +119 -0
  74. package/dist/tools/drive/update-drive-file.js.map +1 -0
  75. package/dist/tools/drive/upload-drive-file.d.ts +55 -0
  76. package/dist/tools/drive/upload-drive-file.d.ts.map +1 -0
  77. package/dist/tools/drive/upload-drive-file.js +118 -0
  78. package/dist/tools/drive/upload-drive-file.js.map +1 -0
  79. package/dist/tools/messenger/get-channel-messages.d.ts +55 -0
  80. package/dist/tools/messenger/get-channel-messages.d.ts.map +1 -0
  81. package/dist/tools/messenger/get-channel-messages.js +115 -0
  82. package/dist/tools/messenger/get-channel-messages.js.map +1 -0
  83. package/dist/tools/messenger/get-channels.d.ts +30 -0
  84. package/dist/tools/messenger/get-channels.d.ts.map +1 -0
  85. package/dist/tools/messenger/get-channels.js +87 -0
  86. package/dist/tools/messenger/get-channels.js.map +1 -0
  87. package/dist/tools/messenger/send-channel-message.d.ts +48 -0
  88. package/dist/tools/messenger/send-channel-message.d.ts.map +1 -0
  89. package/dist/tools/messenger/send-channel-message.js +108 -0
  90. package/dist/tools/messenger/send-channel-message.js.map +1 -0
  91. package/dist/tools/messenger/send-direct-message.d.ts +48 -0
  92. package/dist/tools/messenger/send-direct-message.d.ts.map +1 -0
  93. package/dist/tools/messenger/send-direct-message.js +112 -0
  94. package/dist/tools/messenger/send-direct-message.js.map +1 -0
  95. package/dist/tools/projects/create-project-template.d.ts +305 -0
  96. package/dist/tools/projects/create-project-template.d.ts.map +1 -0
  97. package/dist/tools/projects/create-project-template.js +262 -0
  98. package/dist/tools/projects/create-project-template.js.map +1 -0
  99. package/dist/tools/projects/create-tag.d.ts +55 -0
  100. package/dist/tools/projects/create-tag.d.ts.map +1 -0
  101. package/dist/tools/projects/create-tag.js +134 -0
  102. package/dist/tools/projects/create-tag.js.map +1 -0
  103. package/dist/tools/projects/create-task-comment.d.ts +92 -0
  104. package/dist/tools/projects/create-task-comment.d.ts.map +1 -0
  105. package/dist/tools/projects/create-task-comment.js +171 -0
  106. package/dist/tools/projects/create-task-comment.js.map +1 -0
  107. package/dist/tools/projects/create-task.d.ts +198 -0
  108. package/dist/tools/projects/create-task.d.ts.map +1 -0
  109. package/dist/tools/projects/create-task.js +230 -0
  110. package/dist/tools/projects/create-task.js.map +1 -0
  111. package/dist/tools/projects/delete-attachment.d.ts +55 -0
  112. package/dist/tools/projects/delete-attachment.d.ts.map +1 -0
  113. package/dist/tools/projects/delete-attachment.js +115 -0
  114. package/dist/tools/projects/delete-attachment.js.map +1 -0
  115. package/dist/tools/projects/delete-project-template.d.ts +48 -0
  116. package/dist/tools/projects/delete-project-template.d.ts.map +1 -0
  117. package/dist/tools/projects/delete-project-template.js +108 -0
  118. package/dist/tools/projects/delete-project-template.js.map +1 -0
  119. package/dist/tools/projects/download-attachment.d.ts +62 -0
  120. package/dist/tools/projects/download-attachment.d.ts.map +1 -0
  121. package/dist/tools/projects/download-attachment.js +195 -0
  122. package/dist/tools/projects/download-attachment.js.map +1 -0
  123. package/dist/tools/projects/get-attachment-list.d.ts +48 -0
  124. package/dist/tools/projects/get-attachment-list.d.ts.map +1 -0
  125. package/dist/tools/projects/get-attachment-list.js +118 -0
  126. package/dist/tools/projects/get-attachment-list.js.map +1 -0
  127. package/dist/tools/projects/get-attachment-metadata.d.ts +55 -0
  128. package/dist/tools/projects/get-attachment-metadata.d.ts.map +1 -0
  129. package/dist/tools/projects/get-attachment-metadata.js +120 -0
  130. package/dist/tools/projects/get-attachment-metadata.js.map +1 -0
  131. package/dist/tools/projects/get-milestone-list.d.ts +49 -0
  132. package/dist/tools/projects/get-milestone-list.d.ts.map +1 -0
  133. package/dist/tools/projects/get-milestone-list.js +112 -0
  134. package/dist/tools/projects/get-milestone-list.js.map +1 -0
  135. package/dist/tools/projects/get-project-list.d.ts +50 -0
  136. package/dist/tools/projects/get-project-list.d.ts.map +1 -0
  137. package/dist/tools/projects/get-project-list.js +113 -0
  138. package/dist/tools/projects/get-project-list.js.map +1 -0
  139. package/dist/tools/projects/get-project-member-group-list.d.ts +55 -0
  140. package/dist/tools/projects/get-project-member-group-list.d.ts.map +1 -0
  141. package/dist/tools/projects/get-project-member-group-list.js +127 -0
  142. package/dist/tools/projects/get-project-member-group-list.js.map +1 -0
  143. package/dist/tools/projects/get-project-member-list.d.ts +66 -0
  144. package/dist/tools/projects/get-project-member-list.d.ts.map +1 -0
  145. package/dist/tools/projects/get-project-member-list.js +159 -0
  146. package/dist/tools/projects/get-project-member-list.js.map +1 -0
  147. package/dist/tools/projects/get-project-template-list.d.ts +55 -0
  148. package/dist/tools/projects/get-project-template-list.d.ts.map +1 -0
  149. package/dist/tools/projects/get-project-template-list.js +127 -0
  150. package/dist/tools/projects/get-project-template-list.js.map +1 -0
  151. package/dist/tools/projects/get-project-template.d.ts +48 -0
  152. package/dist/tools/projects/get-project-template.d.ts.map +1 -0
  153. package/dist/tools/projects/get-project-template.js +132 -0
  154. package/dist/tools/projects/get-project-template.js.map +1 -0
  155. package/dist/tools/projects/get-project-workflow-list.d.ts +41 -0
  156. package/dist/tools/projects/get-project-workflow-list.d.ts.map +1 -0
  157. package/dist/tools/projects/get-project-workflow-list.js +107 -0
  158. package/dist/tools/projects/get-project-workflow-list.js.map +1 -0
  159. package/dist/tools/projects/get-project.d.ts +41 -0
  160. package/dist/tools/projects/get-project.d.ts.map +1 -0
  161. package/dist/tools/projects/get-project.js +110 -0
  162. package/dist/tools/projects/get-project.js.map +1 -0
  163. package/dist/tools/projects/get-tag-list.d.ts +55 -0
  164. package/dist/tools/projects/get-tag-list.d.ts.map +1 -0
  165. package/dist/tools/projects/get-tag-list.js +145 -0
  166. package/dist/tools/projects/get-tag-list.js.map +1 -0
  167. package/dist/tools/projects/get-tag.d.ts +48 -0
  168. package/dist/tools/projects/get-tag.d.ts.map +1 -0
  169. package/dist/tools/projects/get-tag.js +124 -0
  170. package/dist/tools/projects/get-tag.js.map +1 -0
  171. package/dist/tools/projects/get-task-comment-list.d.ts +63 -0
  172. package/dist/tools/projects/get-task-comment-list.d.ts.map +1 -0
  173. package/dist/tools/projects/get-task-comment-list.js +136 -0
  174. package/dist/tools/projects/get-task-comment-list.js.map +1 -0
  175. package/dist/tools/projects/get-task-list.d.ts +184 -0
  176. package/dist/tools/projects/get-task-list.d.ts.map +1 -0
  177. package/dist/tools/projects/get-task-list.js +257 -0
  178. package/dist/tools/projects/get-task-list.js.map +1 -0
  179. package/dist/tools/projects/get-task.d.ts +48 -0
  180. package/dist/tools/projects/get-task.d.ts.map +1 -0
  181. package/dist/tools/projects/get-task.js +130 -0
  182. package/dist/tools/projects/get-task.js.map +1 -0
  183. package/dist/tools/projects/update-project-template.d.ts +312 -0
  184. package/dist/tools/projects/update-project-template.d.ts.map +1 -0
  185. package/dist/tools/projects/update-project-template.js +266 -0
  186. package/dist/tools/projects/update-project-template.js.map +1 -0
  187. package/dist/tools/projects/update-tag-group.d.ts +62 -0
  188. package/dist/tools/projects/update-tag-group.d.ts.map +1 -0
  189. package/dist/tools/projects/update-tag-group.js +162 -0
  190. package/dist/tools/projects/update-tag-group.js.map +1 -0
  191. package/dist/tools/projects/update-task-comment.d.ts +92 -0
  192. package/dist/tools/projects/update-task-comment.d.ts.map +1 -0
  193. package/dist/tools/projects/update-task-comment.js +176 -0
  194. package/dist/tools/projects/update-task-comment.js.map +1 -0
  195. package/dist/tools/projects/update-task.d.ts +203 -0
  196. package/dist/tools/projects/update-task.d.ts.map +1 -0
  197. package/dist/tools/projects/update-task.js +261 -0
  198. package/dist/tools/projects/update-task.js.map +1 -0
  199. package/dist/tools/projects/upload-attachment.d.ts +55 -0
  200. package/dist/tools/projects/upload-attachment.d.ts.map +1 -0
  201. package/dist/tools/projects/upload-attachment.js +143 -0
  202. package/dist/tools/projects/upload-attachment.js.map +1 -0
  203. package/dist/tools/wiki/create-wiki-comment.d.ts +55 -0
  204. package/dist/tools/wiki/create-wiki-comment.d.ts.map +1 -0
  205. package/dist/tools/wiki/create-wiki-comment.js +72 -0
  206. package/dist/tools/wiki/create-wiki-comment.js.map +1 -0
  207. package/dist/tools/wiki/create-wiki-page.d.ts +127 -0
  208. package/dist/tools/wiki/create-wiki-page.d.ts.map +1 -0
  209. package/dist/tools/wiki/create-wiki-page.js +116 -0
  210. package/dist/tools/wiki/create-wiki-page.js.map +1 -0
  211. package/dist/tools/wiki/delete-wiki-comment.d.ts +55 -0
  212. package/dist/tools/wiki/delete-wiki-comment.d.ts.map +1 -0
  213. package/dist/tools/wiki/delete-wiki-comment.js +72 -0
  214. package/dist/tools/wiki/delete-wiki-comment.js.map +1 -0
  215. package/dist/tools/wiki/delete-wiki-page-file.d.ts +55 -0
  216. package/dist/tools/wiki/delete-wiki-page-file.d.ts.map +1 -0
  217. package/dist/tools/wiki/delete-wiki-page-file.js +115 -0
  218. package/dist/tools/wiki/delete-wiki-page-file.js.map +1 -0
  219. package/dist/tools/wiki/download-wiki-attach-file.d.ts +55 -0
  220. package/dist/tools/wiki/download-wiki-attach-file.d.ts.map +1 -0
  221. package/dist/tools/wiki/download-wiki-attach-file.js +176 -0
  222. package/dist/tools/wiki/download-wiki-attach-file.js.map +1 -0
  223. package/dist/tools/wiki/download-wiki-page-file.d.ts +62 -0
  224. package/dist/tools/wiki/download-wiki-page-file.d.ts.map +1 -0
  225. package/dist/tools/wiki/download-wiki-page-file.js +189 -0
  226. package/dist/tools/wiki/download-wiki-page-file.js.map +1 -0
  227. package/dist/tools/wiki/get-wiki-comment-list.d.ts +62 -0
  228. package/dist/tools/wiki/get-wiki-comment-list.d.ts.map +1 -0
  229. package/dist/tools/wiki/get-wiki-comment-list.js +74 -0
  230. package/dist/tools/wiki/get-wiki-comment-list.js.map +1 -0
  231. package/dist/tools/wiki/get-wiki-comment.d.ts +55 -0
  232. package/dist/tools/wiki/get-wiki-comment.d.ts.map +1 -0
  233. package/dist/tools/wiki/get-wiki-comment.js +72 -0
  234. package/dist/tools/wiki/get-wiki-comment.js.map +1 -0
  235. package/dist/tools/wiki/get-wiki-list.d.ts +47 -0
  236. package/dist/tools/wiki/get-wiki-list.d.ts.map +1 -0
  237. package/dist/tools/wiki/get-wiki-list.js +76 -0
  238. package/dist/tools/wiki/get-wiki-list.js.map +1 -0
  239. package/dist/tools/wiki/get-wiki-page-list.d.ts +48 -0
  240. package/dist/tools/wiki/get-wiki-page-list.d.ts.map +1 -0
  241. package/dist/tools/wiki/get-wiki-page-list.js +70 -0
  242. package/dist/tools/wiki/get-wiki-page-list.js.map +1 -0
  243. package/dist/tools/wiki/get-wiki-page.d.ts +48 -0
  244. package/dist/tools/wiki/get-wiki-page.d.ts.map +1 -0
  245. package/dist/tools/wiki/get-wiki-page.js +78 -0
  246. package/dist/tools/wiki/get-wiki-page.js.map +1 -0
  247. package/dist/tools/wiki/update-wiki-comment.d.ts +62 -0
  248. package/dist/tools/wiki/update-wiki-comment.d.ts.map +1 -0
  249. package/dist/tools/wiki/update-wiki-comment.js +74 -0
  250. package/dist/tools/wiki/update-wiki-comment.js.map +1 -0
  251. package/dist/tools/wiki/update-wiki-page.d.ts +117 -0
  252. package/dist/tools/wiki/update-wiki-page.d.ts.map +1 -0
  253. package/dist/tools/wiki/update-wiki-page.js +111 -0
  254. package/dist/tools/wiki/update-wiki-page.js.map +1 -0
  255. package/dist/tools/wiki/upload-wiki-file.d.ts +49 -0
  256. package/dist/tools/wiki/upload-wiki-file.d.ts.map +1 -0
  257. package/dist/tools/wiki/upload-wiki-file.js +145 -0
  258. package/dist/tools/wiki/upload-wiki-file.js.map +1 -0
  259. package/dist/tools/wiki/upload-wiki-page-file.d.ts +55 -0
  260. package/dist/tools/wiki/upload-wiki-page-file.d.ts.map +1 -0
  261. package/dist/tools/wiki/upload-wiki-page-file.js +147 -0
  262. package/dist/tools/wiki/upload-wiki-page-file.js.map +1 -0
  263. package/dist/types/config.d.ts +18 -0
  264. package/dist/types/config.d.ts.map +1 -0
  265. package/dist/types/config.js +6 -0
  266. package/dist/types/config.js.map +1 -0
  267. package/dist/types/dooray-api.d.ts +717 -0
  268. package/dist/types/dooray-api.d.ts.map +1 -0
  269. package/dist/types/dooray-api.js +7 -0
  270. package/dist/types/dooray-api.js.map +1 -0
  271. package/dist/utils/errors.d.ts +28 -0
  272. package/dist/utils/errors.d.ts.map +1 -0
  273. package/dist/utils/errors.js +60 -0
  274. package/dist/utils/errors.js.map +1 -0
  275. package/dist/utils/logger.d.ts +22 -0
  276. package/dist/utils/logger.d.ts.map +1 -0
  277. package/dist/utils/logger.js +50 -0
  278. package/dist/utils/logger.js.map +1 -0
  279. package/dist/utils/member-transform.d.ts +20 -0
  280. package/dist/utils/member-transform.d.ts.map +1 -0
  281. package/dist/utils/member-transform.js +48 -0
  282. package/dist/utils/member-transform.js.map +1 -0
  283. package/dist/utils/response-filters.d.ts +105 -0
  284. package/dist/utils/response-filters.d.ts.map +1 -0
  285. package/dist/utils/response-filters.js +152 -0
  286. package/dist/utils/response-filters.js.map +1 -0
  287. package/package.json +54 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Jae Hyung Lee
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,149 @@
1
+ # Dooray MCP Server
2
+
3
+ MCP server for [Dooray!](https://dooray.com) - enabling AI assistants to interact with Dooray projects, tasks, wikis, and more.
4
+
5
+ ## 설치
6
+
7
+ ### NPM (권장)
8
+ ```bash
9
+ npm install -g @geonheeye/dooray-mcp
10
+ ```
11
+
12
+ ## 설정
13
+
14
+ ### 1. API 토큰 발급 (필수)
15
+ 두레이 개인설정 > API > 개인 인증 토큰 메뉴에서 생성할 수 있습니다. [가이드](https://helpdesk.dooray.com/share/pages/9wWo-xwiR66BO5LGshgVTg/2939987647631384419#%EA%B0%9C%EC%9D%B8-API-%EC%9D%B8%EC%A6%9D-%ED%86%A0%ED%81%B0-%EB%B0%9C%EA%B8%89-%EA%B3%BC%EC%A0%95)
16
+
17
+ ### 2. 환경변수 등록 (필수)
18
+ ```bash
19
+ export DOORAY_API_TOKEN=<발급 받은 API 토큰>
20
+ ```
21
+
22
+ ## MCP 등록
23
+
24
+ ### 1. Claude Code 등록
25
+ ```bash
26
+ claude mcp add -s user dooray-mcp npx @geonheeye/dooray-mcp@latest
27
+ ```
28
+
29
+ ### 2. Claude Desktop 설정
30
+
31
+ 설정 파일 위치: `~/Library/Application Support/Claude/claude_desktop_config.json`
32
+
33
+ ```json
34
+ {
35
+ "mcpServers": {
36
+ "dooray": {
37
+ "command": "npx @geonheeye/dooray-mcp@latest",
38
+ "env": { "DOORAY_API_TOKEN": "발급받은_토큰" }
39
+ }
40
+ }
41
+ }
42
+ ```
43
+
44
+ ## Tool 목록
45
+
46
+ ### 공통
47
+ - `get-my-member-info` - 사용자 정보 조회
48
+
49
+ ### 프로젝트
50
+ - `get-project-list` - 프로젝트 목록
51
+ - `get-project` - 프로젝트 상세정보
52
+ - `get-project-workflow-list` - 업무 상태 목록
53
+ - `get-task-list` - 업무 검색/필터링
54
+ - `get-task` - 업무 상세정보
55
+ - `create-task` - 업무 생성
56
+ - `update-task` - 업무 수정
57
+ - `create-task-comment` - 댓글 작성
58
+ - `get-task-comment-list` - 댓글 목록
59
+ - `update-task-comment` - 댓글 수정 (이메일 댓글 수정 불가)
60
+ - `get-milestone-list` - 마일스톤 목록
61
+ - `get-tag-list` - 태그 목록
62
+ - `get-tag` - 태그 상세정보
63
+ - `create-tag` - 태그 생성 (개별/그룹 태그)
64
+ - `update-tag-group` - 태그 그룹 설정 수정
65
+ - `get-project-template-list` - 템플릿 목록
66
+ - `get-project-template` - 템플릿 상세정보
67
+ - `create-project-template` - 템플릿 생성
68
+ - `update-project-template` - 템플릿 수정
69
+ - `delete-project-template` - 템플릿 삭제
70
+ - `get-project-member-list` - 프로젝트 멤버 목록
71
+ - `get-project-member-group-list` - 멤버 그룹 목록
72
+
73
+ ### 첨부파일
74
+ - `upload-attachment` - 파일 업로드
75
+ - `get-attachment-list` - 첨부파일 목록
76
+ - `get-attachment-metadata` - 첨부파일 메타데이터
77
+ - `download-attachment` - 파일 다운로드 (savePath 옵션으로 로컬 저장 지원)
78
+ - `delete-attachment` - 첨부파일 삭제
79
+
80
+ ### 드라이브
81
+ - `get-drive-list` - 드라이브 목록 (개인/프로젝트)
82
+ - `get-drive-file-list` - 파일/폴더 목록 조회
83
+ - `get-drive-file-meta` - 파일 메타정보 조회 (file ID만으로)
84
+ - `create-drive-folder` - 폴더 생성
85
+ - `rename-drive-file` - 파일/폴더 이름 변경
86
+ - `move-drive-file` - 파일/폴더 이동 (휴지통 이동 포함)
87
+ - `copy-drive-file` - 파일 복사
88
+ - `delete-drive-file` - 휴지통 파일 영구삭제
89
+ - `upload-drive-file` - 파일 업로드
90
+ - `download-drive-file` - 파일 다운로드 (savePath 옵션으로 로컬 저장 지원)
91
+ - `update-drive-file` - 파일 새버전 업로드
92
+
93
+ ### 위키
94
+ - `get-wiki-list` - 위키 목록
95
+ - `get-wiki-page-list` - 위키 페이지 목록
96
+ - `get-wiki-page` - 위키 페이지 상세정보
97
+ - `create-wiki-page` - 위키 페이지 생성
98
+ - `update-wiki-page` - 위키 페이지 수정
99
+ - `get-wiki-page-comment-list` - 위키 페이지 댓글 목록
100
+ - `get-wiki-page-comment` - 위키 페이지 댓글 상세정보
101
+ - `create-wiki-page-comment` - 위키 페이지 댓글 작성
102
+ - `update-wiki-page-comment` - 위키 페이지 댓글 수정
103
+ - `delete-wiki-page-comment` - 위키 페이지 댓글 삭제
104
+
105
+ ### 위키 파일
106
+ - `upload-wiki-file` - 위키에 파일 업로드 (페이지 생성 전 pre-upload용, attachFileId 반환)
107
+ - `upload-wiki-page-file` - 기존 위키 페이지에 파일 업로드
108
+ - `download-wiki-page-file` - 위키 페이지 첨부파일 다운로드 (fileId 사용, savePath 옵션으로 로컬 저장 지원)
109
+ - `download-wiki-attach-file` - 위키 첨부파일 다운로드 (attachFileId 사용, savePath 옵션으로 로컬 저장 지원)
110
+ - `delete-wiki-page-file` - 위키 페이지 첨부파일 삭제
111
+
112
+ ## 개발
113
+
114
+ ```bash
115
+ npm run build # 빌드
116
+ npm run dev # 개발 모드
117
+ npm run watch # Watch 모드
118
+ ```
119
+
120
+ ## Prompts (프롬프트)
121
+
122
+ 사전 정의된 프롬프트 템플릿을 제공합니다:
123
+
124
+ | Prompt | 설명 |
125
+ |--------|------|
126
+ | `create-task-with-template` | 구조화된 템플릿으로 새 업무 생성 (bug, feature, improvement, general) |
127
+ | `weekly-task-summary` | 주간 업무 요약 생성 |
128
+ | `project-status-report` | 프로젝트 상태 리포트 생성 |
129
+ | `task-review-checklist` | 업무 검토 체크리스트 생성 |
130
+
131
+ ## Resources (리소스)
132
+
133
+ 컨텍스트 데이터를 제공하는 리소스:
134
+
135
+ | URI | 설명 |
136
+ |-----|------|
137
+ | `dooray://api/info` | Dooray API 정보 및 사용 가능한 도구 목록 |
138
+ | `dooray://workflows/reference` | 워크플로우 상태 참조 가이드 (backlog, registered, working, closed) |
139
+ | `dooray://priority/reference` | 업무 우선순위 참조 가이드 |
140
+
141
+ ## 라이선스
142
+
143
+ MIT
144
+
145
+ ## 참고
146
+
147
+ - [Dooray](https://dooray.com)
148
+ - [Model Context Protocol](https://modelcontextprotocol.io)
149
+ - [Dooray API 문서](https://dooray.com/docs/api)
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Dooray API HTTP Client
3
+ * Handles authentication and HTTP requests to Dooray API
4
+ */
5
+ import { AxiosInstance } from 'axios';
6
+ import { DoorayConfig, DoorayHeaders } from '../types/config.js';
7
+ /**
8
+ * Dooray API Client
9
+ * Provides authenticated HTTP client for Dooray API calls
10
+ */
11
+ export declare class DoorayClient {
12
+ private client;
13
+ private config;
14
+ constructor(config: DoorayConfig);
15
+ /**
16
+ * Make a GET request
17
+ */
18
+ get<T>(url: string, params?: Record<string, unknown>, headers?: DoorayHeaders): Promise<T>;
19
+ /**
20
+ * Make a POST request
21
+ */
22
+ post<T>(url: string, data?: unknown, headers?: DoorayHeaders): Promise<T>;
23
+ /**
24
+ * Make a PUT request
25
+ */
26
+ put<T>(url: string, data?: unknown, headers?: DoorayHeaders): Promise<T>;
27
+ /**
28
+ * Make a PATCH request
29
+ */
30
+ patch<T>(url: string, data?: unknown, headers?: DoorayHeaders): Promise<T>;
31
+ /**
32
+ * Make a DELETE request
33
+ */
34
+ delete<T>(url: string, headers?: DoorayHeaders): Promise<T>;
35
+ /**
36
+ * Upload a file with 307 Redirect handling
37
+ * Dooray file API uses a two-step process:
38
+ * 1. First request returns 307 with Location header
39
+ * 2. Second request to Location URL performs actual upload
40
+ */
41
+ uploadFile(url: string, formData: FormData, headers?: DoorayHeaders): Promise<any>;
42
+ /**
43
+ * Extract result from Dooray API response
44
+ */
45
+ private extractResult;
46
+ /**
47
+ * Extract paginated result from Dooray API response
48
+ * Dooray paginated responses have: { header, result: [], totalCount }
49
+ * This method combines result and totalCount into PaginatedResponse format
50
+ */
51
+ private extractPaginatedResult;
52
+ /**
53
+ * GET request that returns paginated result
54
+ * For endpoints that return { header, result: [], totalCount }
55
+ */
56
+ getPaginated<T>(url: string, params?: Record<string, unknown>): Promise<{
57
+ totalCount: number;
58
+ data: T[];
59
+ }>;
60
+ /**
61
+ * Download a file as binary data with 307 Redirect handling
62
+ * Dooray file API uses a two-step process:
63
+ * 1. First request returns 307 with Location header
64
+ * 2. Second request to Location URL performs actual download
65
+ */
66
+ downloadFile(url: string, params?: Record<string, unknown>): Promise<{
67
+ data: ArrayBuffer;
68
+ contentType: string;
69
+ contentDisposition?: string;
70
+ contentLength?: number;
71
+ }>;
72
+ /**
73
+ * Get the raw axios instance for advanced use cases
74
+ */
75
+ getRawClient(): AxiosInstance;
76
+ }
77
+ /**
78
+ * Initialize the Dooray client with configuration
79
+ */
80
+ export declare function initializeClient(config: DoorayConfig): DoorayClient;
81
+ /**
82
+ * Get the initialized Dooray client
83
+ */
84
+ export declare function getClient(): DoorayClient;
85
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EAAE,aAAa,EAAqC,MAAM,OAAO,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOjE;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,YAAY;IAsDhC;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAQhG;;OAEG;IACG,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAO/E;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAO9E;;OAEG;IACG,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAOhF;;OAEG;IACG,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;IAOjE;;;;;OAKG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC;IA+CxF;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAmB9B;;;OAGG;IACG,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,EAAE,CAAA;KAAE,CAAC;IAQhH;;;;;OAKG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QACzE,IAAI,EAAE,WAAW,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IA2DF;;OAEG;IACH,YAAY,IAAI,aAAa;CAG9B;AAID;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAGnE;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,YAAY,CAKxC"}
@@ -0,0 +1,272 @@
1
+ "use strict";
2
+ /**
3
+ * Dooray API HTTP Client
4
+ * Handles authentication and HTTP requests to Dooray API
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.DoorayClient = void 0;
11
+ exports.initializeClient = initializeClient;
12
+ exports.getClient = getClient;
13
+ const axios_1 = __importDefault(require("axios"));
14
+ const errors_js_1 = require("../utils/errors.js");
15
+ const logger_js_1 = require("../utils/logger.js");
16
+ const DEFAULT_BASE_URL = 'https://api.dooray.com';
17
+ /**
18
+ * Dooray API Client
19
+ * Provides authenticated HTTP client for Dooray API calls
20
+ */
21
+ class DoorayClient {
22
+ client;
23
+ config;
24
+ constructor(config) {
25
+ if (!config.apiToken) {
26
+ throw new errors_js_1.AuthenticationError('DOORAY_API_TOKEN is required as environment variable');
27
+ }
28
+ this.config = config;
29
+ const baseUrl = config.baseUrl || DEFAULT_BASE_URL;
30
+ this.client = axios_1.default.create({
31
+ baseURL: baseUrl,
32
+ timeout: 30000,
33
+ headers: {
34
+ 'Content-Type': 'application/json',
35
+ },
36
+ });
37
+ // Request interceptor - add authentication
38
+ this.client.interceptors.request.use((config) => {
39
+ config.headers.Authorization = `dooray-api ${this.config.apiToken}`;
40
+ logger_js_1.logger.debug(`Request: ${config.method?.toUpperCase()} ${config.url}`);
41
+ return config;
42
+ }, (error) => {
43
+ logger_js_1.logger.error('Request interceptor error:', error);
44
+ return Promise.reject(error);
45
+ });
46
+ // Response interceptor - handle errors
47
+ this.client.interceptors.response.use((response) => {
48
+ logger_js_1.logger.debug(`Response: ${response.status} ${response.config.url}`);
49
+ return response;
50
+ }, (error) => {
51
+ if (error.response) {
52
+ const { status, data, config } = error.response;
53
+ logger_js_1.logger.error(`API Error: ${status} ${config?.url}`, data);
54
+ if (status === 401) {
55
+ throw new errors_js_1.AuthenticationError('Invalid or expired API token');
56
+ }
57
+ const message = data?.header?.resultMessage || data?.message || 'API request failed';
58
+ throw new errors_js_1.DoorayAPIError(message, status, data);
59
+ }
60
+ logger_js_1.logger.error('Network error:', error.message);
61
+ throw new errors_js_1.DoorayAPIError('Network error: ' + error.message);
62
+ });
63
+ }
64
+ /**
65
+ * Make a GET request
66
+ */
67
+ async get(url, params, headers) {
68
+ const response = await this.client.get(url, {
69
+ params,
70
+ headers: headers,
71
+ });
72
+ return this.extractResult(response);
73
+ }
74
+ /**
75
+ * Make a POST request
76
+ */
77
+ async post(url, data, headers) {
78
+ const response = await this.client.post(url, data, {
79
+ headers: headers,
80
+ });
81
+ return this.extractResult(response);
82
+ }
83
+ /**
84
+ * Make a PUT request
85
+ */
86
+ async put(url, data, headers) {
87
+ const response = await this.client.put(url, data, {
88
+ headers: headers,
89
+ });
90
+ return this.extractResult(response);
91
+ }
92
+ /**
93
+ * Make a PATCH request
94
+ */
95
+ async patch(url, data, headers) {
96
+ const response = await this.client.patch(url, data, {
97
+ headers: headers,
98
+ });
99
+ return this.extractResult(response);
100
+ }
101
+ /**
102
+ * Make a DELETE request
103
+ */
104
+ async delete(url, headers) {
105
+ const response = await this.client.delete(url, {
106
+ headers: headers,
107
+ });
108
+ return this.extractResult(response);
109
+ }
110
+ /**
111
+ * Upload a file with 307 Redirect handling
112
+ * Dooray file API uses a two-step process:
113
+ * 1. First request returns 307 with Location header
114
+ * 2. Second request to Location URL performs actual upload
115
+ */
116
+ async uploadFile(url, formData, headers) {
117
+ const baseUrl = this.config.baseUrl || DEFAULT_BASE_URL;
118
+ const fullUrl = url.startsWith('http') ? url : `${baseUrl}${url}`;
119
+ const authHeader = `dooray-api ${this.config.apiToken}`;
120
+ // Step 1: Make initial request with redirect disabled to get 307
121
+ const initialClient = axios_1.default.create({
122
+ timeout: 60000,
123
+ maxRedirects: 0, // Disable automatic redirect following
124
+ validateStatus: (status) => status === 307 || (status >= 200 && status < 300),
125
+ });
126
+ logger_js_1.logger.debug(`File upload step 1: POST ${fullUrl}`);
127
+ const initialResponse = await initialClient.post(fullUrl, formData, {
128
+ headers: {
129
+ Authorization: authHeader,
130
+ ...headers,
131
+ },
132
+ });
133
+ // If we got a direct success response (not 307), return it
134
+ if (initialResponse.status !== 307) {
135
+ logger_js_1.logger.debug('File upload completed without redirect');
136
+ return initialResponse.data;
137
+ }
138
+ // Step 2: Extract Location header and make second request
139
+ const locationUrl = initialResponse.headers['location'];
140
+ if (!locationUrl) {
141
+ throw new errors_js_1.DoorayAPIError('307 redirect received but no Location header found');
142
+ }
143
+ logger_js_1.logger.debug(`File upload step 2: POST ${locationUrl}`);
144
+ const uploadClient = axios_1.default.create({
145
+ timeout: 60000,
146
+ });
147
+ const response = await uploadClient.post(locationUrl, formData, {
148
+ headers: {
149
+ Authorization: authHeader,
150
+ ...headers,
151
+ },
152
+ });
153
+ return response.data;
154
+ }
155
+ /**
156
+ * Extract result from Dooray API response
157
+ */
158
+ extractResult(response) {
159
+ const { header, result } = response.data;
160
+ if (!header.isSuccessful) {
161
+ throw new errors_js_1.DoorayAPIError(header.resultMessage || 'API request failed', response.status, response.data);
162
+ }
163
+ return result;
164
+ }
165
+ /**
166
+ * Extract paginated result from Dooray API response
167
+ * Dooray paginated responses have: { header, result: [], totalCount }
168
+ * This method combines result and totalCount into PaginatedResponse format
169
+ */
170
+ extractPaginatedResult(response) {
171
+ const { header, result, totalCount } = response.data;
172
+ if (!header.isSuccessful) {
173
+ throw new errors_js_1.DoorayAPIError(header.resultMessage || 'API request failed', response.status, response.data);
174
+ }
175
+ return {
176
+ totalCount,
177
+ data: result,
178
+ };
179
+ }
180
+ /**
181
+ * GET request that returns paginated result
182
+ * For endpoints that return { header, result: [], totalCount }
183
+ */
184
+ async getPaginated(url, params) {
185
+ const response = await this.client.get(url, {
186
+ params,
187
+ });
188
+ return this.extractPaginatedResult(response);
189
+ }
190
+ /**
191
+ * Download a file as binary data with 307 Redirect handling
192
+ * Dooray file API uses a two-step process:
193
+ * 1. First request returns 307 with Location header
194
+ * 2. Second request to Location URL performs actual download
195
+ */
196
+ async downloadFile(url, params) {
197
+ const baseUrl = this.config.baseUrl || DEFAULT_BASE_URL;
198
+ const fullUrl = url.startsWith('http') ? url : `${baseUrl}${url}`;
199
+ const authHeader = `dooray-api ${this.config.apiToken}`;
200
+ // Step 1: Make initial request with redirect disabled to get 307
201
+ const initialClient = axios_1.default.create({
202
+ timeout: 60000,
203
+ maxRedirects: 0,
204
+ validateStatus: (status) => status === 307 || (status >= 200 && status < 300),
205
+ });
206
+ logger_js_1.logger.debug(`File download step 1: GET ${fullUrl}`);
207
+ const initialResponse = await initialClient.get(fullUrl, {
208
+ params,
209
+ headers: {
210
+ Authorization: authHeader,
211
+ },
212
+ responseType: 'arraybuffer',
213
+ });
214
+ // If we got a direct success response (not 307), return it
215
+ if (initialResponse.status !== 307) {
216
+ logger_js_1.logger.debug('File download completed without redirect');
217
+ return {
218
+ data: initialResponse.data,
219
+ contentType: initialResponse.headers['content-type'] || 'application/octet-stream',
220
+ contentDisposition: initialResponse.headers['content-disposition'],
221
+ contentLength: parseInt(initialResponse.headers['content-length'] || '0', 10),
222
+ };
223
+ }
224
+ // Step 2: Extract Location header and make second request
225
+ const locationUrl = initialResponse.headers['location'];
226
+ if (!locationUrl) {
227
+ throw new errors_js_1.DoorayAPIError('307 redirect received but no Location header found');
228
+ }
229
+ logger_js_1.logger.debug(`File download step 2: GET ${locationUrl}`);
230
+ const downloadClient = axios_1.default.create({
231
+ timeout: 60000,
232
+ });
233
+ const response = await downloadClient.get(locationUrl, {
234
+ params,
235
+ headers: {
236
+ Authorization: authHeader,
237
+ },
238
+ responseType: 'arraybuffer',
239
+ });
240
+ return {
241
+ data: response.data,
242
+ contentType: response.headers['content-type'] || 'application/octet-stream',
243
+ contentDisposition: response.headers['content-disposition'],
244
+ contentLength: parseInt(response.headers['content-length'] || '0', 10),
245
+ };
246
+ }
247
+ /**
248
+ * Get the raw axios instance for advanced use cases
249
+ */
250
+ getRawClient() {
251
+ return this.client;
252
+ }
253
+ }
254
+ exports.DoorayClient = DoorayClient;
255
+ let clientInstance = null;
256
+ /**
257
+ * Initialize the Dooray client with configuration
258
+ */
259
+ function initializeClient(config) {
260
+ clientInstance = new DoorayClient(config);
261
+ return clientInstance;
262
+ }
263
+ /**
264
+ * Get the initialized Dooray client
265
+ */
266
+ function getClient() {
267
+ if (!clientInstance) {
268
+ throw new Error('Dooray client not initialized. Call initializeClient() first.');
269
+ }
270
+ return clientInstance;
271
+ }
272
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Dooray Common API
3
+ * Handles common/shared operations like member info
4
+ */
5
+ import { MyMemberInfo, MemberDetails } from '../types/dooray-api.js';
6
+ /**
7
+ * Get information about the authenticated user
8
+ */
9
+ export declare function getMyMemberInfo(): Promise<MyMemberInfo>;
10
+ /**
11
+ * Get detailed information about a specific member
12
+ */
13
+ export declare function getMemberDetails(memberId: string): Promise<MemberDetails>;
14
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/api/common.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAIrE;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAG7D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAG/E"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ /**
3
+ * Dooray Common API
4
+ * Handles common/shared operations like member info
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.getMyMemberInfo = getMyMemberInfo;
8
+ exports.getMemberDetails = getMemberDetails;
9
+ const client_js_1 = require("./client.js");
10
+ const COMMON_BASE = '/common/v1';
11
+ /**
12
+ * Get information about the authenticated user
13
+ */
14
+ async function getMyMemberInfo() {
15
+ const client = (0, client_js_1.getClient)();
16
+ return client.get(`${COMMON_BASE}/members/me`);
17
+ }
18
+ /**
19
+ * Get detailed information about a specific member
20
+ */
21
+ async function getMemberDetails(memberId) {
22
+ const client = (0, client_js_1.getClient)();
23
+ return client.get(`${COMMON_BASE}/members/${memberId}`);
24
+ }
25
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/api/common.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAUH,0CAGC;AAKD,4CAGC;AAnBD,2CAAwC;AAGxC,MAAM,WAAW,GAAG,YAAY,CAAC;AAEjC;;GAEG;AACI,KAAK,UAAU,eAAe;IACnC,MAAM,MAAM,GAAG,IAAA,qBAAS,GAAE,CAAC;IAC3B,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,aAAa,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,MAAM,MAAM,GAAG,IAAA,qBAAS,GAAE,CAAC;IAC3B,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,YAAY,QAAQ,EAAE,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Dooray Drive API
3
+ * Handles drive file and folder operations
4
+ */
5
+ import { Drive, DriveListParams, DriveFile, DriveFileListParams, CreateDriveFolderParams, RenameDriveFileParams, MoveDriveFileParams, CopyDriveFileParams, PaginatedResponse } from '../types/dooray-api.js';
6
+ export declare function getDrives(params?: DriveListParams): Promise<PaginatedResponse<Drive>>;
7
+ export declare function getDriveFiles(params: DriveFileListParams): Promise<PaginatedResponse<DriveFile>>;
8
+ export declare function getDriveFileMeta(fileId: string): Promise<DriveFile>;
9
+ export declare function createDriveFolder(params: CreateDriveFolderParams): Promise<{
10
+ id: string;
11
+ }>;
12
+ export declare function renameDriveFile(params: RenameDriveFileParams): Promise<void>;
13
+ export declare function moveDriveFile(params: MoveDriveFileParams): Promise<void>;
14
+ export declare function copyDriveFile(params: CopyDriveFileParams): Promise<void>;
15
+ export declare function deleteDriveFile(driveId: string, fileId: string): Promise<void>;
16
+ export declare function downloadDriveFile(driveId: string, fileId: string): Promise<{
17
+ data: ArrayBuffer;
18
+ contentType: string;
19
+ contentDisposition?: string;
20
+ contentLength?: number;
21
+ }>;
22
+ //# sourceMappingURL=drive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive.d.ts","sourceRoot":"","sources":["../../src/api/drive.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,KAAK,EACL,eAAe,EACf,SAAS,EACT,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAKhC,wBAAsB,SAAS,CAAC,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAQ3F;AAGD,wBAAsB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAStG;AAGD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAGzE;AAGD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAMhG;AAGD,wBAAsB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMlF;AAGD,wBAAsB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9E;AAGD,wBAAsB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAS9E;AAGD,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGpF;AAGD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAChF,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC,CAGD"}