@agentuity/core 1.0.41 → 1.0.42

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 (254) hide show
  1. package/dist/services/api-reference.d.ts +68 -0
  2. package/dist/services/api-reference.d.ts.map +1 -0
  3. package/dist/services/api-reference.js +91 -0
  4. package/dist/services/api-reference.js.map +1 -0
  5. package/dist/services/apikey/api-reference.d.ts +4 -0
  6. package/dist/services/apikey/api-reference.d.ts.map +1 -0
  7. package/dist/services/apikey/api-reference.js +96 -0
  8. package/dist/services/apikey/api-reference.js.map +1 -0
  9. package/dist/services/db/api-reference.d.ts +4 -0
  10. package/dist/services/db/api-reference.d.ts.map +1 -0
  11. package/dist/services/db/api-reference.js +149 -0
  12. package/dist/services/db/api-reference.js.map +1 -0
  13. package/dist/services/db/types.d.ts +7 -0
  14. package/dist/services/db/types.d.ts.map +1 -0
  15. package/dist/services/db/types.js +9 -0
  16. package/dist/services/db/types.js.map +1 -0
  17. package/dist/services/email/api-reference.d.ts +4 -0
  18. package/dist/services/email/api-reference.d.ts.map +1 -0
  19. package/dist/services/email/api-reference.js +342 -0
  20. package/dist/services/email/api-reference.js.map +1 -0
  21. package/dist/services/email/service.d.ts.map +1 -1
  22. package/dist/services/email/service.js +1 -2
  23. package/dist/services/email/service.js.map +1 -1
  24. package/dist/services/email/types.d.ts +13 -0
  25. package/dist/services/email/types.d.ts.map +1 -0
  26. package/dist/services/email/types.js +11 -0
  27. package/dist/services/email/types.js.map +1 -0
  28. package/dist/services/eval/api-reference.d.ts +4 -0
  29. package/dist/services/eval/api-reference.d.ts.map +1 -0
  30. package/dist/services/eval/api-reference.js +121 -0
  31. package/dist/services/eval/api-reference.js.map +1 -0
  32. package/dist/services/index.d.ts +2 -0
  33. package/dist/services/index.d.ts.map +1 -1
  34. package/dist/services/index.js +2 -0
  35. package/dist/services/index.js.map +1 -1
  36. package/dist/services/keyvalue/api-reference.d.ts +4 -0
  37. package/dist/services/keyvalue/api-reference.d.ts.map +1 -0
  38. package/dist/services/keyvalue/api-reference.js +270 -0
  39. package/dist/services/keyvalue/api-reference.js.map +1 -0
  40. package/dist/services/keyvalue/types.d.ts +18 -0
  41. package/dist/services/keyvalue/types.d.ts.map +1 -0
  42. package/dist/services/keyvalue/types.js +19 -0
  43. package/dist/services/keyvalue/types.js.map +1 -0
  44. package/dist/services/machine/api-reference.d.ts +4 -0
  45. package/dist/services/machine/api-reference.d.ts.map +1 -0
  46. package/dist/services/machine/api-reference.js +152 -0
  47. package/dist/services/machine/api-reference.js.map +1 -0
  48. package/dist/services/machine/types.d.ts +18 -0
  49. package/dist/services/machine/types.d.ts.map +1 -0
  50. package/dist/services/machine/types.js +15 -0
  51. package/dist/services/machine/types.js.map +1 -0
  52. package/dist/services/monitoring/index.d.ts +3 -0
  53. package/dist/services/monitoring/index.d.ts.map +1 -0
  54. package/dist/services/monitoring/index.js +3 -0
  55. package/dist/services/monitoring/index.js.map +1 -0
  56. package/dist/services/monitoring/service.d.ts +55 -0
  57. package/dist/services/monitoring/service.d.ts.map +1 -0
  58. package/dist/services/monitoring/service.js +503 -0
  59. package/dist/services/monitoring/service.js.map +1 -0
  60. package/dist/services/monitoring/types.d.ts +173 -0
  61. package/dist/services/monitoring/types.d.ts.map +1 -0
  62. package/dist/services/monitoring/types.js +2 -0
  63. package/dist/services/monitoring/types.js.map +1 -0
  64. package/dist/services/oauth/activity.d.ts +5 -0
  65. package/dist/services/oauth/activity.d.ts.map +1 -0
  66. package/dist/services/oauth/activity.js +17 -0
  67. package/dist/services/oauth/activity.js.map +1 -0
  68. package/dist/services/oauth/api-reference.d.ts +4 -0
  69. package/dist/services/oauth/api-reference.d.ts.map +1 -0
  70. package/dist/services/oauth/api-reference.js +344 -0
  71. package/dist/services/oauth/api-reference.js.map +1 -0
  72. package/dist/services/oauth/clients.d.ts +18 -0
  73. package/dist/services/oauth/clients.d.ts.map +1 -0
  74. package/dist/services/oauth/clients.js +66 -0
  75. package/dist/services/oauth/clients.js.map +1 -0
  76. package/dist/services/oauth/consent.d.ts +7 -0
  77. package/dist/services/oauth/consent.d.ts.map +1 -0
  78. package/dist/services/oauth/consent.js +17 -0
  79. package/dist/services/oauth/consent.js.map +1 -0
  80. package/dist/services/oauth/index.d.ts +9 -0
  81. package/dist/services/oauth/index.d.ts.map +1 -0
  82. package/dist/services/oauth/index.js +9 -0
  83. package/dist/services/oauth/index.js.map +1 -0
  84. package/dist/services/oauth/keys.d.ts +5 -0
  85. package/dist/services/oauth/keys.d.ts.map +1 -0
  86. package/dist/services/oauth/keys.js +10 -0
  87. package/dist/services/oauth/keys.js.map +1 -0
  88. package/dist/services/oauth/members.d.ts +4 -0
  89. package/dist/services/oauth/members.d.ts.map +1 -0
  90. package/dist/services/oauth/members.js +10 -0
  91. package/dist/services/oauth/members.js.map +1 -0
  92. package/dist/services/oauth/scopes.d.ts +4 -0
  93. package/dist/services/oauth/scopes.d.ts.map +1 -0
  94. package/dist/services/oauth/scopes.js +10 -0
  95. package/dist/services/oauth/scopes.js.map +1 -0
  96. package/dist/services/oauth/types.d.ts +587 -0
  97. package/dist/services/oauth/types.d.ts.map +1 -0
  98. package/dist/services/oauth/types.js +160 -0
  99. package/dist/services/oauth/types.js.map +1 -0
  100. package/dist/services/oauth/util.d.ts +23 -0
  101. package/dist/services/oauth/util.d.ts.map +1 -0
  102. package/dist/services/oauth/util.js +3 -0
  103. package/dist/services/oauth/util.js.map +1 -0
  104. package/dist/services/org/api-reference.d.ts +4 -0
  105. package/dist/services/org/api-reference.d.ts.map +1 -0
  106. package/dist/services/org/api-reference.js +145 -0
  107. package/dist/services/org/api-reference.js.map +1 -0
  108. package/dist/services/org/types.d.ts +8 -0
  109. package/dist/services/org/types.d.ts.map +1 -0
  110. package/dist/services/org/types.js +7 -0
  111. package/dist/services/org/types.js.map +1 -0
  112. package/dist/services/project/api-reference.d.ts +4 -0
  113. package/dist/services/project/api-reference.d.ts.map +1 -0
  114. package/dist/services/project/api-reference.js +618 -0
  115. package/dist/services/project/api-reference.js.map +1 -0
  116. package/dist/services/project/types.d.ts +29 -0
  117. package/dist/services/project/types.d.ts.map +1 -0
  118. package/dist/services/project/types.js +40 -0
  119. package/dist/services/project/types.js.map +1 -0
  120. package/dist/services/queue/api-reference.d.ts +4 -0
  121. package/dist/services/queue/api-reference.d.ts.map +1 -0
  122. package/dist/services/queue/api-reference.js +713 -0
  123. package/dist/services/queue/api-reference.js.map +1 -0
  124. package/dist/services/queue/types.d.ts +281 -0
  125. package/dist/services/queue/types.d.ts.map +1 -1
  126. package/dist/services/queue/types.js +81 -0
  127. package/dist/services/queue/types.js.map +1 -1
  128. package/dist/services/region/api-reference.d.ts +4 -0
  129. package/dist/services/region/api-reference.d.ts.map +1 -0
  130. package/dist/services/region/api-reference.js +98 -0
  131. package/dist/services/region/api-reference.js.map +1 -0
  132. package/dist/services/region/types.d.ts +18 -0
  133. package/dist/services/region/types.d.ts.map +1 -0
  134. package/dist/services/region/types.js +18 -0
  135. package/dist/services/region/types.js.map +1 -0
  136. package/dist/services/sandbox/api-reference.d.ts +4 -0
  137. package/dist/services/sandbox/api-reference.d.ts.map +1 -0
  138. package/dist/services/sandbox/api-reference.js +1006 -0
  139. package/dist/services/sandbox/api-reference.js.map +1 -0
  140. package/dist/services/sandbox/run.d.ts +1 -1
  141. package/dist/services/sandbox/types.d.ts +64 -1
  142. package/dist/services/sandbox/types.d.ts.map +1 -1
  143. package/dist/services/sandbox/types.js +87 -0
  144. package/dist/services/sandbox/types.js.map +1 -1
  145. package/dist/services/schedule/api-reference.d.ts +4 -0
  146. package/dist/services/schedule/api-reference.d.ts.map +1 -0
  147. package/dist/services/schedule/api-reference.js +216 -0
  148. package/dist/services/schedule/api-reference.js.map +1 -0
  149. package/dist/services/schedule/types.d.ts +36 -0
  150. package/dist/services/schedule/types.d.ts.map +1 -0
  151. package/dist/services/schedule/types.js +20 -0
  152. package/dist/services/schedule/types.js.map +1 -0
  153. package/dist/services/session/api-reference.d.ts +4 -0
  154. package/dist/services/session/api-reference.d.ts.map +1 -0
  155. package/dist/services/session/api-reference.js +154 -0
  156. package/dist/services/session/api-reference.js.map +1 -0
  157. package/dist/services/storage/api-reference.d.ts +4 -0
  158. package/dist/services/storage/api-reference.d.ts.map +1 -0
  159. package/dist/services/storage/api-reference.js +196 -0
  160. package/dist/services/storage/api-reference.js.map +1 -0
  161. package/dist/services/storage/types.d.ts.map +1 -1
  162. package/dist/services/storage/types.js +9 -3
  163. package/dist/services/storage/types.js.map +1 -1
  164. package/dist/services/stream/api-reference.d.ts +4 -0
  165. package/dist/services/stream/api-reference.d.ts.map +1 -0
  166. package/dist/services/stream/api-reference.js +153 -0
  167. package/dist/services/stream/api-reference.js.map +1 -0
  168. package/dist/services/stream/types.d.ts +49 -0
  169. package/dist/services/stream/types.d.ts.map +1 -0
  170. package/dist/services/stream/types.js +49 -0
  171. package/dist/services/stream/types.js.map +1 -0
  172. package/dist/services/task/api-reference.d.ts +4 -0
  173. package/dist/services/task/api-reference.d.ts.map +1 -0
  174. package/dist/services/task/api-reference.js +802 -0
  175. package/dist/services/task/api-reference.js.map +1 -0
  176. package/dist/services/task/service.d.ts.map +1 -1
  177. package/dist/services/task/service.js +35 -39
  178. package/dist/services/task/service.js.map +1 -1
  179. package/dist/services/task/types.d.ts +48 -0
  180. package/dist/services/task/types.d.ts.map +1 -0
  181. package/dist/services/task/types.js +55 -0
  182. package/dist/services/task/types.js.map +1 -0
  183. package/dist/services/thread/api-reference.d.ts +4 -0
  184. package/dist/services/thread/api-reference.d.ts.map +1 -0
  185. package/dist/services/thread/api-reference.js +89 -0
  186. package/dist/services/thread/api-reference.js.map +1 -0
  187. package/dist/services/user/api-reference.d.ts +4 -0
  188. package/dist/services/user/api-reference.d.ts.map +1 -0
  189. package/dist/services/user/api-reference.js +27 -0
  190. package/dist/services/user/api-reference.js.map +1 -0
  191. package/dist/services/vector/api-reference.d.ts +4 -0
  192. package/dist/services/vector/api-reference.d.ts.map +1 -0
  193. package/dist/services/vector/api-reference.js +213 -0
  194. package/dist/services/vector/api-reference.js.map +1 -0
  195. package/dist/services/vector/types.d.ts +63 -0
  196. package/dist/services/vector/types.d.ts.map +1 -0
  197. package/dist/services/vector/types.js +90 -0
  198. package/dist/services/vector/types.js.map +1 -0
  199. package/dist/services/webhook/api-reference.d.ts +4 -0
  200. package/dist/services/webhook/api-reference.d.ts.map +1 -0
  201. package/dist/services/webhook/api-reference.js +388 -0
  202. package/dist/services/webhook/api-reference.js.map +1 -0
  203. package/package.json +2 -2
  204. package/src/services/api-reference.ts +198 -0
  205. package/src/services/apikey/api-reference.ts +99 -0
  206. package/src/services/db/api-reference.ts +152 -0
  207. package/src/services/db/types.ts +12 -0
  208. package/src/services/email/api-reference.ts +349 -0
  209. package/src/services/email/service.ts +1 -6
  210. package/src/services/email/types.ts +15 -0
  211. package/src/services/eval/api-reference.ts +124 -0
  212. package/src/services/index.ts +2 -0
  213. package/src/services/keyvalue/api-reference.ts +280 -0
  214. package/src/services/keyvalue/types.ts +25 -0
  215. package/src/services/machine/api-reference.ts +158 -0
  216. package/src/services/machine/types.ts +21 -0
  217. package/src/services/monitoring/index.ts +2 -0
  218. package/src/services/monitoring/service.ts +639 -0
  219. package/src/services/monitoring/types.ts +209 -0
  220. package/src/services/oauth/activity.ts +41 -0
  221. package/src/services/oauth/api-reference.ts +380 -0
  222. package/src/services/oauth/clients.ts +161 -0
  223. package/src/services/oauth/consent.ts +33 -0
  224. package/src/services/oauth/index.ts +8 -0
  225. package/src/services/oauth/keys.ts +13 -0
  226. package/src/services/oauth/members.ts +13 -0
  227. package/src/services/oauth/scopes.ts +13 -0
  228. package/src/services/oauth/types.ts +240 -0
  229. package/src/services/oauth/util.ts +3 -0
  230. package/src/services/org/api-reference.ts +148 -0
  231. package/src/services/org/types.ts +9 -0
  232. package/src/services/project/api-reference.ts +636 -0
  233. package/src/services/project/types.ts +47 -0
  234. package/src/services/queue/api-reference.ts +734 -0
  235. package/src/services/queue/types.ts +112 -0
  236. package/src/services/region/api-reference.ts +105 -0
  237. package/src/services/region/types.ts +27 -0
  238. package/src/services/sandbox/api-reference.ts +1042 -0
  239. package/src/services/sandbox/types.ts +100 -0
  240. package/src/services/schedule/api-reference.ts +228 -0
  241. package/src/services/schedule/types.ts +26 -0
  242. package/src/services/session/api-reference.ts +160 -0
  243. package/src/services/storage/api-reference.ts +207 -0
  244. package/src/services/storage/types.ts +9 -3
  245. package/src/services/stream/api-reference.ts +163 -0
  246. package/src/services/stream/types.ts +64 -0
  247. package/src/services/task/api-reference.ts +830 -0
  248. package/src/services/task/service.ts +35 -93
  249. package/src/services/task/types.ts +73 -0
  250. package/src/services/thread/api-reference.ts +91 -0
  251. package/src/services/user/api-reference.ts +31 -0
  252. package/src/services/vector/api-reference.ts +231 -0
  253. package/src/services/vector/types.ts +112 -0
  254. package/src/services/webhook/api-reference.ts +403 -0
@@ -0,0 +1,830 @@
1
+ import {
2
+ BatchDeleteTasksParamsSchema,
3
+ BatchDeleteTasksResultSchema,
4
+ CreateAttachmentParamsSchema,
5
+ CreateTaskParamsSchema,
6
+ ListAttachmentsResultSchema,
7
+ ListCommentsResultSchema,
8
+ ListProjectsResultSchema,
9
+ ListTasksResultSchema,
10
+ ListUsersResultSchema,
11
+ PresignDownloadResponseSchema,
12
+ PresignUploadResponseSchema,
13
+ TaskActivityResultSchema,
14
+ TaskChangelogResultSchema,
15
+ UpdateTaskParamsSchema,
16
+ } from './service.ts';
17
+ import {
18
+ CreateCommentRequestSchema,
19
+ CreateTagRequestSchema,
20
+ CreateTaskProjectRequestSchema,
21
+ CreateTaskUserRequestSchema,
22
+ UpdateCommentRequestSchema,
23
+ UpdateTagRequestSchema,
24
+ } from './types.ts';
25
+ import type { Service } from '../api-reference.ts';
26
+
27
+ const service: Service = {
28
+ name: 'Tasks',
29
+ slug: 'tasks',
30
+ description:
31
+ 'Full-featured task management with epics, features, bugs, comments, tags, attachments, and activity tracking',
32
+ endpoints: [
33
+ // ── Task Management ──────────────────────────────────────────────
34
+ {
35
+ id: 'create-task',
36
+ title: 'Create Task',
37
+ sectionTitle: 'Task Management',
38
+ method: 'POST',
39
+ path: '/task',
40
+ description: 'Create a new task within the organization.',
41
+ pathParams: [],
42
+ queryParams: [],
43
+ requestBody: {
44
+ description: 'Task creation payload.',
45
+ fields: { schema: CreateTaskParamsSchema },
46
+ },
47
+ responseDescription: 'Returns the created task.',
48
+ statuses: [
49
+ { code: 201, description: 'Task created' },
50
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
51
+ ],
52
+ examplePath: '/task',
53
+ exampleBody: {
54
+ title: 'Implement auth flow',
55
+ type: 'feature',
56
+ created_id: 'usr_abc123',
57
+ priority: 'high',
58
+ },
59
+ },
60
+ {
61
+ id: 'get-task',
62
+ title: 'Get Task',
63
+ sectionTitle: 'Task Management',
64
+ method: 'GET',
65
+ path: '/task/{id}',
66
+ description: 'Retrieve a specific task by ID.',
67
+ pathParams: [{ name: 'id', type: 'string', description: 'Task ID', required: true }],
68
+ queryParams: [],
69
+ requestBody: null,
70
+ responseDescription: 'Returns the task object.',
71
+ statuses: [
72
+ { code: 200, description: 'Task returned' },
73
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
74
+ { code: 404, description: 'Task not found' },
75
+ ],
76
+ examplePath: '/task/tsk_abc123',
77
+ },
78
+ {
79
+ id: 'list-tasks',
80
+ title: 'List Tasks',
81
+ sectionTitle: 'Task Management',
82
+ method: 'GET',
83
+ path: '/task',
84
+ description: 'List tasks with optional filtering, sorting, and pagination.',
85
+ pathParams: [],
86
+ queryParams: [
87
+ { name: 'status', type: 'string', description: 'Filter by status', required: false },
88
+ { name: 'type', type: 'string', description: 'Filter by type', required: false },
89
+ {
90
+ name: 'priority',
91
+ type: 'string',
92
+ description: 'Filter by priority',
93
+ required: false,
94
+ },
95
+ {
96
+ name: 'assigned_id',
97
+ type: 'string',
98
+ description: 'Filter by assigned user',
99
+ required: false,
100
+ },
101
+ {
102
+ name: 'created_id',
103
+ type: 'string',
104
+ description: 'Filter by creator',
105
+ required: false,
106
+ },
107
+ {
108
+ name: 'parent_id',
109
+ type: 'string',
110
+ description: 'Filter by parent task',
111
+ required: false,
112
+ },
113
+ {
114
+ name: 'project_id',
115
+ type: 'string',
116
+ description: 'Filter by project',
117
+ required: false,
118
+ },
119
+ { name: 'tag_id', type: 'string', description: 'Filter by tag', required: false },
120
+ {
121
+ name: 'deleted',
122
+ type: 'boolean',
123
+ description: 'Include soft-deleted tasks',
124
+ required: false,
125
+ },
126
+ {
127
+ name: 'sort',
128
+ type: 'string',
129
+ description: "Field to sort by — prefix with '-' for descending",
130
+ required: false,
131
+ },
132
+ { name: 'order', type: 'string', description: "'asc' or 'desc'", required: false },
133
+ {
134
+ name: 'limit',
135
+ type: 'number',
136
+ description: 'Maximum results to return',
137
+ required: false,
138
+ },
139
+ { name: 'offset', type: 'number', description: 'Pagination offset', required: false },
140
+ ],
141
+ requestBody: null,
142
+ responseDescription: 'Returns paginated list of tasks.',
143
+ responseFields: { schema: ListTasksResultSchema },
144
+ statuses: [
145
+ { code: 200, description: 'Tasks returned' },
146
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
147
+ ],
148
+ examplePath: '/task',
149
+ },
150
+ {
151
+ id: 'update-task',
152
+ title: 'Update Task',
153
+ sectionTitle: 'Task Management',
154
+ method: 'PATCH',
155
+ path: '/task/{id}',
156
+ description: 'Update one or more fields on an existing task.',
157
+ pathParams: [{ name: 'id', type: 'string', description: 'Task ID', required: true }],
158
+ queryParams: [],
159
+ requestBody: {
160
+ description: 'Task update payload. All fields are optional.',
161
+ fields: { schema: UpdateTaskParamsSchema },
162
+ },
163
+ responseDescription: 'Returns the updated task.',
164
+ statuses: [
165
+ { code: 200, description: 'Task updated' },
166
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
167
+ { code: 404, description: 'Task not found' },
168
+ ],
169
+ examplePath: '/task/tsk_abc123',
170
+ exampleBody: { status: 'in_progress', priority: 'high' },
171
+ },
172
+ {
173
+ id: 'close-task',
174
+ title: 'Close Task',
175
+ sectionTitle: 'Task Management',
176
+ method: 'DELETE',
177
+ path: '/task/{id}',
178
+ description:
179
+ "Sets the task status to 'done' and records the closed date. This does NOT permanently delete the task.",
180
+ pathParams: [{ name: 'id', type: 'string', description: 'Task ID', required: true }],
181
+ queryParams: [],
182
+ requestBody: null,
183
+ responseDescription:
184
+ "Sets the task status to 'done' and records the closed date. This does NOT permanently delete the task.",
185
+ statuses: [
186
+ { code: 200, description: 'Task closed' },
187
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
188
+ { code: 404, description: 'Task not found' },
189
+ ],
190
+ examplePath: '/task/tsk_abc123',
191
+ },
192
+ {
193
+ id: 'soft-delete-task',
194
+ title: 'Soft Delete Task',
195
+ sectionTitle: 'Task Management',
196
+ method: 'POST',
197
+ path: '/task/delete/{id}',
198
+ description: 'Marks the task as deleted without permanent removal.',
199
+ pathParams: [{ name: 'id', type: 'string', description: 'Task ID', required: true }],
200
+ queryParams: [],
201
+ requestBody: null,
202
+ responseDescription: 'Marks the task as deleted without permanent removal.',
203
+ statuses: [
204
+ { code: 200, description: 'Task soft-deleted' },
205
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
206
+ { code: 404, description: 'Task not found' },
207
+ ],
208
+ examplePath: '/task/delete/tsk_abc123',
209
+ },
210
+ {
211
+ id: 'batch-delete-tasks',
212
+ title: 'Batch Delete Tasks',
213
+ sectionTitle: 'Task Management',
214
+ method: 'POST',
215
+ path: '/task/delete/batch',
216
+ description: 'Soft-delete multiple tasks matching filter criteria.',
217
+ pathParams: [],
218
+ queryParams: [],
219
+ requestBody: {
220
+ description: 'Batch delete filter payload.',
221
+ fields: { schema: BatchDeleteTasksParamsSchema },
222
+ },
223
+ responseDescription: 'Returns the list of deleted tasks and count.',
224
+ responseFields: { schema: BatchDeleteTasksResultSchema },
225
+ statuses: [
226
+ { code: 200, description: 'Tasks deleted' },
227
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
228
+ ],
229
+ examplePath: '/task/delete/batch',
230
+ exampleBody: { status: 'cancelled', older_than: '30d', limit: 50 },
231
+ },
232
+ {
233
+ id: 'get-changelog',
234
+ title: 'Get Changelog',
235
+ sectionTitle: 'Task Management',
236
+ method: 'GET',
237
+ path: '/task/changelog/{id}',
238
+ description: 'Get the change history for a specific task.',
239
+ pathParams: [{ name: 'id', type: 'string', description: 'Task ID', required: true }],
240
+ queryParams: [
241
+ {
242
+ name: 'limit',
243
+ type: 'number',
244
+ description: 'Maximum results to return',
245
+ required: false,
246
+ },
247
+ { name: 'offset', type: 'number', description: 'Pagination offset', required: false },
248
+ ],
249
+ requestBody: null,
250
+ responseDescription: 'Returns the changelog entries for the task.',
251
+ responseFields: { schema: TaskChangelogResultSchema },
252
+ statuses: [
253
+ { code: 200, description: 'Changelog returned' },
254
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
255
+ { code: 404, description: 'Task not found' },
256
+ ],
257
+ examplePath: '/task/changelog/tsk_abc123',
258
+ },
259
+ // ── Comments ─────────────────────────────────────────────────────
260
+ {
261
+ id: 'create-comment',
262
+ title: 'Create Comment',
263
+ sectionTitle: 'Comments',
264
+ method: 'POST',
265
+ path: '/task/comments/create/{taskId}',
266
+ description: 'Add a comment to a task.',
267
+ pathParams: [{ name: 'taskId', type: 'string', description: 'Task ID', required: true }],
268
+ queryParams: [],
269
+ requestBody: {
270
+ description: 'Comment creation payload.',
271
+ fields: { schema: CreateCommentRequestSchema },
272
+ },
273
+ responseDescription: 'Returns the created comment.',
274
+ statuses: [
275
+ { code: 201, description: 'Comment created' },
276
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
277
+ { code: 404, description: 'Task not found' },
278
+ ],
279
+ examplePath: '/task/comments/create/tsk_abc123',
280
+ exampleBody: { body: 'Looks good, ready for review', user_id: 'usr_abc123' },
281
+ },
282
+ {
283
+ id: 'get-comment',
284
+ title: 'Get Comment',
285
+ sectionTitle: 'Comments',
286
+ method: 'GET',
287
+ path: '/task/comments/get/{commentId}',
288
+ description: 'Retrieve a specific comment by ID.',
289
+ pathParams: [
290
+ { name: 'commentId', type: 'string', description: 'Comment ID', required: true },
291
+ ],
292
+ queryParams: [],
293
+ requestBody: null,
294
+ responseDescription: 'Returns the comment object.',
295
+ statuses: [
296
+ { code: 200, description: 'Comment returned' },
297
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
298
+ { code: 404, description: 'Comment not found' },
299
+ ],
300
+ examplePath: '/task/comments/get/cmt_abc123',
301
+ },
302
+ {
303
+ id: 'update-comment',
304
+ title: 'Update Comment',
305
+ sectionTitle: 'Comments',
306
+ method: 'PATCH',
307
+ path: '/task/comments/update/{commentId}',
308
+ description: 'Update the body of an existing comment.',
309
+ pathParams: [
310
+ { name: 'commentId', type: 'string', description: 'Comment ID', required: true },
311
+ ],
312
+ queryParams: [],
313
+ requestBody: {
314
+ description: 'Comment update payload.',
315
+ fields: { schema: UpdateCommentRequestSchema },
316
+ },
317
+ responseDescription: 'Returns the updated comment.',
318
+ statuses: [
319
+ { code: 200, description: 'Comment updated' },
320
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
321
+ { code: 404, description: 'Comment not found' },
322
+ ],
323
+ examplePath: '/task/comments/update/cmt_abc123',
324
+ exampleBody: { body: 'Updated comment text' },
325
+ },
326
+ {
327
+ id: 'delete-comment',
328
+ title: 'Delete Comment',
329
+ sectionTitle: 'Comments',
330
+ method: 'DELETE',
331
+ path: '/task/comments/delete/{commentId}',
332
+ description: 'Delete a comment.',
333
+ pathParams: [
334
+ { name: 'commentId', type: 'string', description: 'Comment ID', required: true },
335
+ ],
336
+ queryParams: [],
337
+ requestBody: null,
338
+ responseDescription: 'Empty response on success.',
339
+ statuses: [
340
+ { code: 204, description: 'Comment deleted' },
341
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
342
+ { code: 404, description: 'Comment not found' },
343
+ ],
344
+ examplePath: '/task/comments/delete/cmt_abc123',
345
+ },
346
+ {
347
+ id: 'list-comments',
348
+ title: 'List Comments',
349
+ sectionTitle: 'Comments',
350
+ method: 'GET',
351
+ path: '/task/comments/list/{taskId}',
352
+ description: 'List all comments on a task.',
353
+ pathParams: [{ name: 'taskId', type: 'string', description: 'Task ID', required: true }],
354
+ queryParams: [
355
+ {
356
+ name: 'limit',
357
+ type: 'number',
358
+ description: 'Maximum results to return',
359
+ required: false,
360
+ },
361
+ { name: 'offset', type: 'number', description: 'Pagination offset', required: false },
362
+ ],
363
+ requestBody: null,
364
+ responseDescription: 'Returns paginated list of comments.',
365
+ responseFields: { schema: ListCommentsResultSchema },
366
+ statuses: [
367
+ { code: 200, description: 'Comments returned' },
368
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
369
+ { code: 404, description: 'Task not found' },
370
+ ],
371
+ examplePath: '/task/comments/list/tsk_abc123',
372
+ },
373
+ // ── Tags ─────────────────────────────────────────────────────────
374
+ {
375
+ id: 'create-tag',
376
+ title: 'Create Tag',
377
+ sectionTitle: 'Tags',
378
+ method: 'POST',
379
+ path: '/task/tags/create',
380
+ description: 'Create a new tag for organizing tasks.',
381
+ pathParams: [],
382
+ queryParams: [],
383
+ requestBody: {
384
+ description: 'Tag creation payload.',
385
+ fields: { schema: CreateTagRequestSchema },
386
+ },
387
+ responseDescription: 'Returns the created tag.',
388
+ statuses: [
389
+ { code: 201, description: 'Tag created' },
390
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
391
+ ],
392
+ examplePath: '/task/tags/create',
393
+ exampleBody: { name: 'urgent', color: '#ff0000' },
394
+ },
395
+ {
396
+ id: 'get-tag',
397
+ title: 'Get Tag',
398
+ sectionTitle: 'Tags',
399
+ method: 'GET',
400
+ path: '/task/tags/get/{tagId}',
401
+ description: 'Retrieve a specific tag by ID.',
402
+ pathParams: [{ name: 'tagId', type: 'string', description: 'Tag ID', required: true }],
403
+ queryParams: [],
404
+ requestBody: null,
405
+ responseDescription: 'Returns the tag object.',
406
+ statuses: [
407
+ { code: 200, description: 'Tag returned' },
408
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
409
+ { code: 404, description: 'Tag not found' },
410
+ ],
411
+ examplePath: '/task/tags/get/tag_abc123',
412
+ },
413
+ {
414
+ id: 'update-tag',
415
+ title: 'Update Tag',
416
+ sectionTitle: 'Tags',
417
+ method: 'PATCH',
418
+ path: '/task/tags/update/{tagId}',
419
+ description: "Update a tag's name or color.",
420
+ pathParams: [{ name: 'tagId', type: 'string', description: 'Tag ID', required: true }],
421
+ queryParams: [],
422
+ requestBody: {
423
+ description: 'Tag update payload.',
424
+ fields: { schema: UpdateTagRequestSchema },
425
+ },
426
+ responseDescription: 'Returns the updated tag.',
427
+ statuses: [
428
+ { code: 200, description: 'Tag updated' },
429
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
430
+ { code: 404, description: 'Tag not found' },
431
+ ],
432
+ examplePath: '/task/tags/update/tag_abc123',
433
+ exampleBody: { name: 'critical', color: '#cc0000' },
434
+ },
435
+ {
436
+ id: 'delete-tag',
437
+ title: 'Delete Tag',
438
+ sectionTitle: 'Tags',
439
+ method: 'DELETE',
440
+ path: '/task/tags/delete/{tagId}',
441
+ description: 'Delete a tag.',
442
+ pathParams: [{ name: 'tagId', type: 'string', description: 'Tag ID', required: true }],
443
+ queryParams: [],
444
+ requestBody: null,
445
+ responseDescription: 'Empty response on success.',
446
+ statuses: [
447
+ { code: 204, description: 'Tag deleted' },
448
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
449
+ { code: 404, description: 'Tag not found' },
450
+ ],
451
+ examplePath: '/task/tags/delete/tag_abc123',
452
+ },
453
+ {
454
+ id: 'list-tags',
455
+ title: 'List Tags',
456
+ sectionTitle: 'Tags',
457
+ method: 'GET',
458
+ path: '/task/tags/list',
459
+ description: 'List all tags in the organization.',
460
+ pathParams: [],
461
+ queryParams: [],
462
+ requestBody: null,
463
+ responseDescription: 'Returns list of tags.',
464
+ statuses: [
465
+ { code: 200, description: 'Tags returned' },
466
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
467
+ ],
468
+ examplePath: '/task/tags/list',
469
+ },
470
+ {
471
+ id: 'add-tag-to-task',
472
+ title: 'Add Tag to Task',
473
+ sectionTitle: 'Tags',
474
+ method: 'POST',
475
+ path: '/task/tags/add/{taskId}/{tagId}',
476
+ description: 'Associate a tag with a task.',
477
+ pathParams: [
478
+ { name: 'taskId', type: 'string', description: 'Task ID', required: true },
479
+ { name: 'tagId', type: 'string', description: 'Tag ID', required: true },
480
+ ],
481
+ queryParams: [],
482
+ requestBody: null,
483
+ responseDescription: 'Returns confirmation of the association.',
484
+ statuses: [
485
+ { code: 200, description: 'Tag added to task' },
486
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
487
+ { code: 404, description: 'Task or tag not found' },
488
+ ],
489
+ examplePath: '/task/tags/add/tsk_abc123/tag_def456',
490
+ },
491
+ {
492
+ id: 'remove-tag-from-task',
493
+ title: 'Remove Tag from Task',
494
+ sectionTitle: 'Tags',
495
+ method: 'DELETE',
496
+ path: '/task/tags/remove/{taskId}/{tagId}',
497
+ description: 'Remove a tag association from a task.',
498
+ pathParams: [
499
+ { name: 'taskId', type: 'string', description: 'Task ID', required: true },
500
+ { name: 'tagId', type: 'string', description: 'Tag ID', required: true },
501
+ ],
502
+ queryParams: [],
503
+ requestBody: null,
504
+ responseDescription: 'Empty response on success.',
505
+ statuses: [
506
+ { code: 204, description: 'Tag removed from task' },
507
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
508
+ { code: 404, description: 'Task or tag not found' },
509
+ ],
510
+ examplePath: '/task/tags/remove/tsk_abc123/tag_def456',
511
+ },
512
+ {
513
+ id: 'list-task-tags',
514
+ title: 'List Task Tags',
515
+ sectionTitle: 'Tags',
516
+ method: 'GET',
517
+ path: '/task/tags/task/{taskId}',
518
+ description: 'List all tags associated with a specific task.',
519
+ pathParams: [{ name: 'taskId', type: 'string', description: 'Task ID', required: true }],
520
+ queryParams: [],
521
+ requestBody: null,
522
+ responseDescription: 'Returns list of tags for the task.',
523
+ statuses: [
524
+ { code: 200, description: 'Tags returned' },
525
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
526
+ { code: 404, description: 'Task not found' },
527
+ ],
528
+ examplePath: '/task/tags/task/tsk_abc123',
529
+ },
530
+ // ── Attachments ──────────────────────────────────────────────────
531
+ {
532
+ id: 'request-upload-url',
533
+ title: 'Request Upload URL',
534
+ sectionTitle: 'Attachments',
535
+ method: 'POST',
536
+ path: '/task/attachments/presign-upload/{taskId}',
537
+ description: 'Request a presigned URL for uploading an attachment to a task.',
538
+ pathParams: [{ name: 'taskId', type: 'string', description: 'Task ID', required: true }],
539
+ queryParams: [],
540
+ requestBody: {
541
+ description: 'Upload request payload.',
542
+ fields: { schema: CreateAttachmentParamsSchema },
543
+ },
544
+ responseDescription:
545
+ 'Returns a presigned upload URL. Upload the file via PUT to the URL, then call confirm.',
546
+ responseFields: { schema: PresignUploadResponseSchema },
547
+ statuses: [
548
+ { code: 200, description: 'Presigned URL returned' },
549
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
550
+ { code: 404, description: 'Task not found' },
551
+ ],
552
+ examplePath: '/task/attachments/presign-upload/tsk_abc123',
553
+ exampleBody: { filename: 'screenshot.png', content_type: 'image/png' },
554
+ },
555
+ {
556
+ id: 'confirm-upload',
557
+ title: 'Confirm Upload',
558
+ sectionTitle: 'Attachments',
559
+ method: 'POST',
560
+ path: '/task/attachments/confirm/{attachmentId}',
561
+ description: 'Confirm that a file was uploaded successfully to the presigned URL.',
562
+ pathParams: [
563
+ { name: 'attachmentId', type: 'string', description: 'Attachment ID', required: true },
564
+ ],
565
+ queryParams: [],
566
+ requestBody: null,
567
+ responseDescription: 'Confirms the file was uploaded successfully.',
568
+ statuses: [
569
+ { code: 200, description: 'Upload confirmed' },
570
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
571
+ { code: 404, description: 'Attachment not found' },
572
+ ],
573
+ examplePath: '/task/attachments/confirm/att_abc123',
574
+ },
575
+ {
576
+ id: 'request-download-url',
577
+ title: 'Request Download URL',
578
+ sectionTitle: 'Attachments',
579
+ method: 'POST',
580
+ path: '/task/attachments/presign-download/{attachmentId}',
581
+ description: 'Request a presigned URL for downloading an attachment.',
582
+ pathParams: [
583
+ { name: 'attachmentId', type: 'string', description: 'Attachment ID', required: true },
584
+ ],
585
+ queryParams: [],
586
+ requestBody: null,
587
+ responseDescription: 'Returns a presigned download URL.',
588
+ responseFields: { schema: PresignDownloadResponseSchema },
589
+ statuses: [
590
+ { code: 200, description: 'Presigned URL returned' },
591
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
592
+ { code: 404, description: 'Attachment not found' },
593
+ ],
594
+ examplePath: '/task/attachments/presign-download/att_abc123',
595
+ },
596
+ {
597
+ id: 'list-attachments',
598
+ title: 'List Attachments',
599
+ sectionTitle: 'Attachments',
600
+ method: 'GET',
601
+ path: '/task/attachments/list/{taskId}',
602
+ description: 'List all attachments on a task.',
603
+ pathParams: [{ name: 'taskId', type: 'string', description: 'Task ID', required: true }],
604
+ queryParams: [],
605
+ requestBody: null,
606
+ responseDescription: 'Returns list of attachments.',
607
+ responseFields: { schema: ListAttachmentsResultSchema },
608
+ statuses: [
609
+ { code: 200, description: 'Attachments returned' },
610
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
611
+ { code: 404, description: 'Task not found' },
612
+ ],
613
+ examplePath: '/task/attachments/list/tsk_abc123',
614
+ },
615
+ {
616
+ id: 'delete-attachment',
617
+ title: 'Delete Attachment',
618
+ sectionTitle: 'Attachments',
619
+ method: 'DELETE',
620
+ path: '/task/attachments/delete/{attachmentId}',
621
+ description: 'Delete an attachment.',
622
+ pathParams: [
623
+ { name: 'attachmentId', type: 'string', description: 'Attachment ID', required: true },
624
+ ],
625
+ queryParams: [],
626
+ requestBody: null,
627
+ responseDescription: 'Empty response on success.',
628
+ statuses: [
629
+ { code: 204, description: 'Attachment deleted' },
630
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
631
+ { code: 404, description: 'Attachment not found' },
632
+ ],
633
+ examplePath: '/task/attachments/delete/att_abc123',
634
+ },
635
+ // ── Users & Projects ─────────────────────────────────────────────
636
+ {
637
+ id: 'list-task-users',
638
+ title: 'List Task Users',
639
+ sectionTitle: 'Users & Projects',
640
+ method: 'GET',
641
+ path: '/task/users',
642
+ description: 'List all user entities available for task assignment.',
643
+ pathParams: [],
644
+ queryParams: [],
645
+ requestBody: null,
646
+ responseDescription: 'Returns list of user entities.',
647
+ responseFields: { schema: ListUsersResultSchema },
648
+ statuses: [
649
+ { code: 200, description: 'Users returned' },
650
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
651
+ ],
652
+ examplePath: '/task/users',
653
+ },
654
+ {
655
+ id: 'create-task-user',
656
+ title: 'Create User Entity',
657
+ sectionTitle: 'Users & Projects',
658
+ method: 'POST',
659
+ path: '/task/users/create',
660
+ description: 'Create a new user entity for task assignment.',
661
+ pathParams: [],
662
+ queryParams: [],
663
+ requestBody: {
664
+ description: 'User entity creation payload.',
665
+ fields: { schema: CreateTaskUserRequestSchema },
666
+ },
667
+ responseDescription: 'Returns the created user entity.',
668
+ statuses: [
669
+ { code: 201, description: 'User entity created' },
670
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
671
+ ],
672
+ examplePath: '/task/users/create',
673
+ exampleBody: { name: 'Alice', type: 'human' },
674
+ },
675
+ {
676
+ id: 'get-task-user',
677
+ title: 'Get User Entity',
678
+ sectionTitle: 'Users & Projects',
679
+ method: 'GET',
680
+ path: '/task/users/get/{userId}',
681
+ description: 'Retrieve a specific user entity by ID.',
682
+ pathParams: [
683
+ { name: 'userId', type: 'string', description: 'User entity ID', required: true },
684
+ ],
685
+ queryParams: [],
686
+ requestBody: null,
687
+ responseDescription: 'Returns the user entity object.',
688
+ statuses: [
689
+ { code: 200, description: 'User entity returned' },
690
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
691
+ { code: 404, description: 'User entity not found' },
692
+ ],
693
+ examplePath: '/task/users/get/usr_abc123',
694
+ },
695
+ {
696
+ id: 'delete-task-user',
697
+ title: 'Delete User Entity',
698
+ sectionTitle: 'Users & Projects',
699
+ method: 'DELETE',
700
+ path: '/task/users/delete/{userId}',
701
+ description: 'Delete a user entity.',
702
+ pathParams: [
703
+ { name: 'userId', type: 'string', description: 'User entity ID', required: true },
704
+ ],
705
+ queryParams: [],
706
+ requestBody: null,
707
+ responseDescription: 'Empty response on success.',
708
+ statuses: [
709
+ { code: 204, description: 'User entity deleted' },
710
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
711
+ { code: 404, description: 'User entity not found' },
712
+ ],
713
+ examplePath: '/task/users/delete/usr_abc123',
714
+ },
715
+ {
716
+ id: 'list-task-projects',
717
+ title: 'List Task Projects',
718
+ sectionTitle: 'Users & Projects',
719
+ method: 'GET',
720
+ path: '/task/projects',
721
+ description: 'List all project entities available for task organization.',
722
+ pathParams: [],
723
+ queryParams: [],
724
+ requestBody: null,
725
+ responseDescription: 'Returns list of project entities.',
726
+ responseFields: { schema: ListProjectsResultSchema },
727
+ statuses: [
728
+ { code: 200, description: 'Projects returned' },
729
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
730
+ ],
731
+ examplePath: '/task/projects',
732
+ },
733
+ {
734
+ id: 'create-task-project',
735
+ title: 'Create Project Entity',
736
+ sectionTitle: 'Users & Projects',
737
+ method: 'POST',
738
+ path: '/task/projects/create',
739
+ description: 'Create a new project entity for task organization.',
740
+ pathParams: [],
741
+ queryParams: [],
742
+ requestBody: {
743
+ description: 'Project entity creation payload.',
744
+ fields: { schema: CreateTaskProjectRequestSchema },
745
+ },
746
+ responseDescription: 'Returns the created project entity.',
747
+ statuses: [
748
+ { code: 201, description: 'Project entity created' },
749
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
750
+ ],
751
+ examplePath: '/task/projects/create',
752
+ exampleBody: { name: 'Backend Rewrite' },
753
+ },
754
+ {
755
+ id: 'get-task-project',
756
+ title: 'Get Project Entity',
757
+ sectionTitle: 'Users & Projects',
758
+ method: 'GET',
759
+ path: '/task/projects/get/{projectId}',
760
+ description: 'Retrieve a specific project entity by ID.',
761
+ pathParams: [
762
+ { name: 'projectId', type: 'string', description: 'Project entity ID', required: true },
763
+ ],
764
+ queryParams: [],
765
+ requestBody: null,
766
+ responseDescription: 'Returns the project entity object.',
767
+ statuses: [
768
+ { code: 200, description: 'Project entity returned' },
769
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
770
+ { code: 404, description: 'Project entity not found' },
771
+ ],
772
+ examplePath: '/task/projects/get/tprj_abc123',
773
+ },
774
+ {
775
+ id: 'delete-task-project',
776
+ title: 'Delete Project Entity',
777
+ sectionTitle: 'Users & Projects',
778
+ method: 'DELETE',
779
+ path: '/task/projects/delete/{projectId}',
780
+ description: 'Delete a project entity.',
781
+ pathParams: [
782
+ { name: 'projectId', type: 'string', description: 'Project entity ID', required: true },
783
+ ],
784
+ queryParams: [],
785
+ requestBody: null,
786
+ responseDescription: 'Empty response on success.',
787
+ statuses: [
788
+ { code: 204, description: 'Project entity deleted' },
789
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
790
+ { code: 404, description: 'Project entity not found' },
791
+ ],
792
+ examplePath: '/task/projects/delete/tprj_abc123',
793
+ },
794
+ // ── Activity ─────────────────────────────────────────────────────
795
+ {
796
+ id: 'get-activity-timeline',
797
+ title: 'Get Activity Timeline',
798
+ sectionTitle: 'Activity',
799
+ method: 'GET',
800
+ path: '/task/activity/{date}',
801
+ description: 'Get daily activity counts grouped by status over a configurable time range.',
802
+ pathParams: [
803
+ {
804
+ name: 'date',
805
+ type: 'string',
806
+ description: 'Date for activity lookup (YYYY-MM-DD format)',
807
+ required: true,
808
+ },
809
+ ],
810
+ queryParams: [
811
+ {
812
+ name: 'days',
813
+ type: 'number',
814
+ description: 'Number of days (min 7, max 365, default 90)',
815
+ required: false,
816
+ },
817
+ ],
818
+ requestBody: null,
819
+ responseDescription: 'Returns daily activity counts grouped by status.',
820
+ responseFields: { schema: TaskActivityResultSchema },
821
+ statuses: [
822
+ { code: 200, description: 'Activity timeline returned' },
823
+ { code: 401, description: 'Unauthorized — invalid or missing API key' },
824
+ ],
825
+ examplePath: '/task/activity/2026-02-28',
826
+ },
827
+ ],
828
+ };
829
+
830
+ export default service;