universal-mcp-applications 0.1.32__py3-none-any.whl → 0.1.36rc2__py3-none-any.whl

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 (105) hide show
  1. universal_mcp/applications/ahrefs/app.py +52 -198
  2. universal_mcp/applications/airtable/app.py +23 -122
  3. universal_mcp/applications/apollo/app.py +111 -464
  4. universal_mcp/applications/asana/app.py +417 -1567
  5. universal_mcp/applications/aws_s3/app.py +36 -103
  6. universal_mcp/applications/bill/app.py +546 -1957
  7. universal_mcp/applications/box/app.py +1068 -3981
  8. universal_mcp/applications/braze/app.py +364 -1430
  9. universal_mcp/applications/browser_use/app.py +2 -8
  10. universal_mcp/applications/cal_com_v2/app.py +207 -625
  11. universal_mcp/applications/calendly/app.py +61 -200
  12. universal_mcp/applications/canva/app.py +45 -110
  13. universal_mcp/applications/clickup/app.py +207 -674
  14. universal_mcp/applications/coda/app.py +146 -426
  15. universal_mcp/applications/confluence/app.py +310 -1098
  16. universal_mcp/applications/contentful/app.py +36 -151
  17. universal_mcp/applications/crustdata/app.py +28 -107
  18. universal_mcp/applications/dialpad/app.py +283 -756
  19. universal_mcp/applications/digitalocean/app.py +1766 -5777
  20. universal_mcp/applications/domain_checker/app.py +3 -54
  21. universal_mcp/applications/e2b/app.py +14 -64
  22. universal_mcp/applications/elevenlabs/app.py +9 -47
  23. universal_mcp/applications/exa/app.py +6 -17
  24. universal_mcp/applications/falai/app.py +24 -101
  25. universal_mcp/applications/figma/app.py +53 -137
  26. universal_mcp/applications/file_system/app.py +2 -13
  27. universal_mcp/applications/firecrawl/app.py +51 -152
  28. universal_mcp/applications/fireflies/app.py +59 -281
  29. universal_mcp/applications/fpl/app.py +91 -528
  30. universal_mcp/applications/fpl/utils/fixtures.py +15 -49
  31. universal_mcp/applications/fpl/utils/helper.py +25 -89
  32. universal_mcp/applications/fpl/utils/league_utils.py +20 -64
  33. universal_mcp/applications/ghost_content/app.py +52 -161
  34. universal_mcp/applications/github/app.py +19 -56
  35. universal_mcp/applications/gong/app.py +88 -248
  36. universal_mcp/applications/google_calendar/app.py +16 -68
  37. universal_mcp/applications/google_docs/app.py +85 -189
  38. universal_mcp/applications/google_drive/app.py +141 -463
  39. universal_mcp/applications/google_gemini/app.py +12 -64
  40. universal_mcp/applications/google_mail/app.py +28 -157
  41. universal_mcp/applications/google_searchconsole/app.py +15 -48
  42. universal_mcp/applications/google_sheet/app.py +100 -581
  43. universal_mcp/applications/google_sheet/helper.py +10 -37
  44. universal_mcp/applications/hashnode/app.py +57 -269
  45. universal_mcp/applications/heygen/app.py +44 -122
  46. universal_mcp/applications/http_tools/app.py +10 -32
  47. universal_mcp/applications/hubspot/api_segments/crm_api.py +460 -1573
  48. universal_mcp/applications/hubspot/api_segments/marketing_api.py +74 -262
  49. universal_mcp/applications/hubspot/app.py +23 -87
  50. universal_mcp/applications/jira/app.py +2071 -7986
  51. universal_mcp/applications/klaviyo/app.py +494 -1376
  52. universal_mcp/applications/linkedin/README.md +9 -2
  53. universal_mcp/applications/linkedin/app.py +240 -181
  54. universal_mcp/applications/mailchimp/app.py +450 -1605
  55. universal_mcp/applications/markitdown/app.py +8 -20
  56. universal_mcp/applications/miro/app.py +217 -699
  57. universal_mcp/applications/ms_teams/app.py +64 -186
  58. universal_mcp/applications/neon/app.py +86 -192
  59. universal_mcp/applications/notion/app.py +21 -36
  60. universal_mcp/applications/onedrive/app.py +16 -38
  61. universal_mcp/applications/openai/app.py +42 -165
  62. universal_mcp/applications/outlook/app.py +24 -84
  63. universal_mcp/applications/perplexity/app.py +4 -19
  64. universal_mcp/applications/pipedrive/app.py +832 -3142
  65. universal_mcp/applications/posthog/app.py +163 -432
  66. universal_mcp/applications/reddit/app.py +40 -139
  67. universal_mcp/applications/resend/app.py +41 -107
  68. universal_mcp/applications/retell/app.py +14 -41
  69. universal_mcp/applications/rocketlane/app.py +221 -934
  70. universal_mcp/applications/scraper/README.md +7 -4
  71. universal_mcp/applications/scraper/app.py +50 -109
  72. universal_mcp/applications/semanticscholar/app.py +22 -64
  73. universal_mcp/applications/semrush/app.py +43 -77
  74. universal_mcp/applications/sendgrid/app.py +512 -1262
  75. universal_mcp/applications/sentry/app.py +271 -906
  76. universal_mcp/applications/serpapi/app.py +40 -143
  77. universal_mcp/applications/sharepoint/app.py +17 -39
  78. universal_mcp/applications/shopify/app.py +1551 -4287
  79. universal_mcp/applications/shortcut/app.py +155 -417
  80. universal_mcp/applications/slack/app.py +33 -115
  81. universal_mcp/applications/spotify/app.py +126 -325
  82. universal_mcp/applications/supabase/app.py +104 -213
  83. universal_mcp/applications/tavily/app.py +1 -1
  84. universal_mcp/applications/trello/app.py +693 -2656
  85. universal_mcp/applications/twilio/app.py +14 -50
  86. universal_mcp/applications/twitter/api_segments/compliance_api.py +4 -14
  87. universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +6 -18
  88. universal_mcp/applications/twitter/api_segments/likes_api.py +1 -3
  89. universal_mcp/applications/twitter/api_segments/lists_api.py +5 -15
  90. universal_mcp/applications/twitter/api_segments/trends_api.py +1 -3
  91. universal_mcp/applications/twitter/api_segments/tweets_api.py +9 -31
  92. universal_mcp/applications/twitter/api_segments/usage_api.py +1 -5
  93. universal_mcp/applications/twitter/api_segments/users_api.py +14 -42
  94. universal_mcp/applications/whatsapp/app.py +35 -186
  95. universal_mcp/applications/whatsapp/audio.py +2 -6
  96. universal_mcp/applications/whatsapp/whatsapp.py +17 -51
  97. universal_mcp/applications/whatsapp_business/app.py +70 -283
  98. universal_mcp/applications/wrike/app.py +45 -118
  99. universal_mcp/applications/yahoo_finance/app.py +19 -65
  100. universal_mcp/applications/youtube/app.py +75 -261
  101. universal_mcp/applications/zenquotes/app.py +2 -2
  102. {universal_mcp_applications-0.1.32.dist-info → universal_mcp_applications-0.1.36rc2.dist-info}/METADATA +2 -2
  103. {universal_mcp_applications-0.1.32.dist-info → universal_mcp_applications-0.1.36rc2.dist-info}/RECORD +105 -105
  104. {universal_mcp_applications-0.1.32.dist-info → universal_mcp_applications-0.1.36rc2.dist-info}/WHEEL +0 -0
  105. {universal_mcp_applications-0.1.32.dist-info → universal_mcp_applications-0.1.36rc2.dist-info}/licenses/LICENSE +0 -0
@@ -1,5 +1,4 @@
1
1
  from typing import Any
2
-
3
2
  from universal_mcp.applications.application import APIApplication
4
3
  from universal_mcp.integrations import Integration
5
4
 
@@ -9,9 +8,7 @@ class ClickupApp(APIApplication):
9
8
  super().__init__(name="clickup", integration=integration, **kwargs)
10
9
  self.base_url = "https://api.clickup.com/api/v2"
11
10
 
12
- def authorization_get_access_token(
13
- self, client_id, client_secret, code
14
- ) -> dict[str, Any]:
11
+ async def authorization_get_access_token(self, client_id, client_secret, code) -> dict[str, Any]:
15
12
  """
16
13
  Exchanges an authorization code for an access token using OAuth2 credentials.
17
14
 
@@ -37,22 +34,12 @@ class ClickupApp(APIApplication):
37
34
  if code is None:
38
35
  raise ValueError("Missing required parameter 'code'")
39
36
  url = f"{self.base_url}/oauth/token"
40
- query_params = {
41
- k: v
42
- for k, v in [
43
- ("client_id", client_id),
44
- ("client_secret", client_secret),
45
- ("code", code),
46
- ]
47
- if v is not None
48
- }
37
+ query_params = {k: v for k, v in [("client_id", client_id), ("client_secret", client_secret), ("code", code)] if v is not None}
49
38
  response = self._post(url, data={}, params=query_params)
50
39
  response.raise_for_status()
51
40
  return response.json()
52
41
 
53
- def authorization_view_account_details(
54
- self,
55
- ) -> dict[str, Any]:
42
+ async def authorization_view_account_details(self) -> dict[str, Any]:
56
43
  """
57
44
  Retrieves the current authenticated user's account details from the authorization service.
58
45
 
@@ -74,9 +61,7 @@ class ClickupApp(APIApplication):
74
61
  response.raise_for_status()
75
62
  return response.json()
76
63
 
77
- def authorization_get_workspace_list(
78
- self,
79
- ) -> dict[str, Any]:
64
+ async def authorization_get_workspace_list(self) -> dict[str, Any]:
80
65
  """
81
66
  Retrieves a list of workspaces accessible to the authorized user from the authorization service.
82
67
 
@@ -98,9 +83,7 @@ class ClickupApp(APIApplication):
98
83
  response.raise_for_status()
99
84
  return response.json()
100
85
 
101
- def task_checklists_create_new_checklist(
102
- self, task_id, name, custom_task_ids=None, team_id=None
103
- ) -> dict[str, Any]:
86
+ async def task_checklists_create_new_checklist(self, task_id, name, custom_task_ids=None, team_id=None) -> dict[str, Any]:
104
87
  """
105
88
  Creates a new checklist for a given task and returns the created checklist details as a dictionary.
106
89
 
@@ -124,23 +107,15 @@ class ClickupApp(APIApplication):
124
107
  raise ValueError("Missing required parameter 'task_id'")
125
108
  if name is None:
126
109
  raise ValueError("Missing required parameter 'name'")
127
- request_body = {
128
- "name": name,
129
- }
110
+ request_body = {"name": name}
130
111
  request_body = {k: v for k, v in request_body.items() if v is not None}
131
112
  url = f"{self.base_url}/task/{task_id}/checklist"
132
- query_params = {
133
- k: v
134
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
135
- if v is not None
136
- }
113
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
137
114
  response = self._post(url, data=request_body, params=query_params)
138
115
  response.raise_for_status()
139
116
  return response.json()
140
117
 
141
- def task_checklists_update_checklist(
142
- self, checklist_id, name=None, position=None
143
- ) -> dict[str, Any]:
118
+ async def task_checklists_update_checklist(self, checklist_id, name=None, position=None) -> dict[str, Any]:
144
119
  """
145
120
  Updates a checklist's name and/or position by sending a PUT request to the checklist API endpoint.
146
121
 
@@ -161,10 +136,7 @@ class ClickupApp(APIApplication):
161
136
  """
162
137
  if checklist_id is None:
163
138
  raise ValueError("Missing required parameter 'checklist_id'")
164
- request_body = {
165
- "name": name,
166
- "position": position,
167
- }
139
+ request_body = {"name": name, "position": position}
168
140
  request_body = {k: v for k, v in request_body.items() if v is not None}
169
141
  url = f"{self.base_url}/checklist/{checklist_id}"
170
142
  query_params = {}
@@ -172,7 +144,7 @@ class ClickupApp(APIApplication):
172
144
  response.raise_for_status()
173
145
  return response.json()
174
146
 
175
- def task_checklists_remove_checklist(self, checklist_id) -> dict[str, Any]:
147
+ async def task_checklists_remove_checklist(self, checklist_id) -> dict[str, Any]:
176
148
  """
177
149
  Removes a checklist by its ID using a DELETE request to the API.
178
150
 
@@ -197,9 +169,7 @@ class ClickupApp(APIApplication):
197
169
  response.raise_for_status()
198
170
  return response.json()
199
171
 
200
- def task_checklists_add_line_item(
201
- self, checklist_id, name=None, assignee=None
202
- ) -> dict[str, Any]:
172
+ async def task_checklists_add_line_item(self, checklist_id, name=None, assignee=None) -> dict[str, Any]:
203
173
  """
204
174
  Adds a new line item to a specified task checklist.
205
175
 
@@ -220,10 +190,7 @@ class ClickupApp(APIApplication):
220
190
  """
221
191
  if checklist_id is None:
222
192
  raise ValueError("Missing required parameter 'checklist_id'")
223
- request_body = {
224
- "name": name,
225
- "assignee": assignee,
226
- }
193
+ request_body = {"name": name, "assignee": assignee}
227
194
  request_body = {k: v for k, v in request_body.items() if v is not None}
228
195
  url = f"{self.base_url}/checklist/{checklist_id}/checklist_item"
229
196
  query_params = {}
@@ -231,14 +198,8 @@ class ClickupApp(APIApplication):
231
198
  response.raise_for_status()
232
199
  return response.json()
233
200
 
234
- def task_checklists_update_checklist_item(
235
- self,
236
- checklist_id,
237
- checklist_item_id,
238
- name=None,
239
- assignee=None,
240
- resolved=None,
241
- parent=None,
201
+ async def task_checklists_update_checklist_item(
202
+ self, checklist_id, checklist_item_id, name=None, assignee=None, resolved=None, parent=None
242
203
  ) -> dict[str, Any]:
243
204
  """
244
205
  Updates a checklist item with new details such as name, assignee, resolution status, or parent within a specified checklist.
@@ -265,12 +226,7 @@ class ClickupApp(APIApplication):
265
226
  raise ValueError("Missing required parameter 'checklist_id'")
266
227
  if checklist_item_id is None:
267
228
  raise ValueError("Missing required parameter 'checklist_item_id'")
268
- request_body = {
269
- "name": name,
270
- "assignee": assignee,
271
- "resolved": resolved,
272
- "parent": parent,
273
- }
229
+ request_body = {"name": name, "assignee": assignee, "resolved": resolved, "parent": parent}
274
230
  request_body = {k: v for k, v in request_body.items() if v is not None}
275
231
  url = f"{self.base_url}/checklist/{checklist_id}/checklist_item/{checklist_item_id}"
276
232
  query_params = {}
@@ -278,9 +234,7 @@ class ClickupApp(APIApplication):
278
234
  response.raise_for_status()
279
235
  return response.json()
280
236
 
281
- def task_checklists_remove_checklist_item(
282
- self, checklist_id, checklist_item_id
283
- ) -> dict[str, Any]:
237
+ async def task_checklists_remove_checklist_item(self, checklist_id, checklist_item_id) -> dict[str, Any]:
284
238
  """
285
239
  Removes a specific checklist item from a checklist by issuing a DELETE request to the appropriate API endpoint.
286
240
 
@@ -308,9 +262,7 @@ class ClickupApp(APIApplication):
308
262
  response.raise_for_status()
309
263
  return response.json()
310
264
 
311
- def comments_get_task_comments(
312
- self, task_id, custom_task_ids=None, team_id=None, start=None, start_id=None
313
- ) -> dict[str, Any]:
265
+ async def comments_get_task_comments(self, task_id, custom_task_ids=None, team_id=None, start=None, start_id=None) -> dict[str, Any]:
314
266
  """
315
267
  Retrieve all comments associated with a specific task.
316
268
 
@@ -336,26 +288,15 @@ class ClickupApp(APIApplication):
336
288
  url = f"{self.base_url}/task/{task_id}/comment"
337
289
  query_params = {
338
290
  k: v
339
- for k, v in [
340
- ("custom_task_ids", custom_task_ids),
341
- ("team_id", team_id),
342
- ("start", start),
343
- ("start_id", start_id),
344
- ]
291
+ for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id), ("start", start), ("start_id", start_id)]
345
292
  if v is not None
346
293
  }
347
294
  response = self._get(url, params=query_params)
348
295
  response.raise_for_status()
349
296
  return response.json()
350
297
 
351
- def comments_create_new_task_comment(
352
- self,
353
- task_id,
354
- comment_text,
355
- assignee,
356
- notify_all,
357
- custom_task_ids=None,
358
- team_id=None,
298
+ async def comments_create_new_task_comment(
299
+ self, task_id, comment_text, assignee, notify_all, custom_task_ids=None, team_id=None
359
300
  ) -> dict[str, Any]:
360
301
  """
361
302
  Creates a new comment on the specified task, assigning it to a user and controlling notification behavior.
@@ -386,25 +327,15 @@ class ClickupApp(APIApplication):
386
327
  raise ValueError("Missing required parameter 'assignee'")
387
328
  if notify_all is None:
388
329
  raise ValueError("Missing required parameter 'notify_all'")
389
- request_body = {
390
- "comment_text": comment_text,
391
- "assignee": assignee,
392
- "notify_all": notify_all,
393
- }
330
+ request_body = {"comment_text": comment_text, "assignee": assignee, "notify_all": notify_all}
394
331
  request_body = {k: v for k, v in request_body.items() if v is not None}
395
332
  url = f"{self.base_url}/task/{task_id}/comment"
396
- query_params = {
397
- k: v
398
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
399
- if v is not None
400
- }
333
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
401
334
  response = self._post(url, data=request_body, params=query_params)
402
335
  response.raise_for_status()
403
336
  return response.json()
404
337
 
405
- def comments_get_view_comments(
406
- self, view_id, start=None, start_id=None
407
- ) -> dict[str, Any]:
338
+ async def comments_get_view_comments(self, view_id, start=None, start_id=None) -> dict[str, Any]:
408
339
  """
409
340
  Retrieve comments for a specific view, supporting optional pagination parameters.
410
341
 
@@ -426,16 +357,12 @@ class ClickupApp(APIApplication):
426
357
  if view_id is None:
427
358
  raise ValueError("Missing required parameter 'view_id'")
428
359
  url = f"{self.base_url}/view/{view_id}/comment"
429
- query_params = {
430
- k: v for k, v in [("start", start), ("start_id", start_id)] if v is not None
431
- }
360
+ query_params = {k: v for k, v in [("start", start), ("start_id", start_id)] if v is not None}
432
361
  response = self._get(url, params=query_params)
433
362
  response.raise_for_status()
434
363
  return response.json()
435
364
 
436
- def comments_create_chat_view_comment(
437
- self, view_id, comment_text, notify_all
438
- ) -> dict[str, Any]:
365
+ async def comments_create_chat_view_comment(self, view_id, comment_text, notify_all) -> dict[str, Any]:
439
366
  """
440
367
  Creates a new comment on a chat view and optionally notifies all participants.
441
368
 
@@ -460,10 +387,7 @@ class ClickupApp(APIApplication):
460
387
  raise ValueError("Missing required parameter 'comment_text'")
461
388
  if notify_all is None:
462
389
  raise ValueError("Missing required parameter 'notify_all'")
463
- request_body = {
464
- "comment_text": comment_text,
465
- "notify_all": notify_all,
466
- }
390
+ request_body = {"comment_text": comment_text, "notify_all": notify_all}
467
391
  request_body = {k: v for k, v in request_body.items() if v is not None}
468
392
  url = f"{self.base_url}/view/{view_id}/comment"
469
393
  query_params = {}
@@ -471,9 +395,7 @@ class ClickupApp(APIApplication):
471
395
  response.raise_for_status()
472
396
  return response.json()
473
397
 
474
- def comments_get_list_comments(
475
- self, list_id, start=None, start_id=None
476
- ) -> dict[str, Any]:
398
+ async def comments_get_list_comments(self, list_id, start=None, start_id=None) -> dict[str, Any]:
477
399
  """
478
400
  Retrieve a list of comments associated with a specific list, supporting optional pagination.
479
401
 
@@ -495,16 +417,12 @@ class ClickupApp(APIApplication):
495
417
  if list_id is None:
496
418
  raise ValueError("Missing required parameter 'list_id'")
497
419
  url = f"{self.base_url}/list/{list_id}/comment"
498
- query_params = {
499
- k: v for k, v in [("start", start), ("start_id", start_id)] if v is not None
500
- }
420
+ query_params = {k: v for k, v in [("start", start), ("start_id", start_id)] if v is not None}
501
421
  response = self._get(url, params=query_params)
502
422
  response.raise_for_status()
503
423
  return response.json()
504
424
 
505
- def comments_add_to_list_comment(
506
- self, list_id, comment_text, assignee, notify_all
507
- ) -> dict[str, Any]:
425
+ async def comments_add_to_list_comment(self, list_id, comment_text, assignee, notify_all) -> dict[str, Any]:
508
426
  """
509
427
  Adds a comment to a specified list, assigns it to a given user, and optionally notifies all stakeholders.
510
428
 
@@ -532,11 +450,7 @@ class ClickupApp(APIApplication):
532
450
  raise ValueError("Missing required parameter 'assignee'")
533
451
  if notify_all is None:
534
452
  raise ValueError("Missing required parameter 'notify_all'")
535
- request_body = {
536
- "comment_text": comment_text,
537
- "assignee": assignee,
538
- "notify_all": notify_all,
539
- }
453
+ request_body = {"comment_text": comment_text, "assignee": assignee, "notify_all": notify_all}
540
454
  request_body = {k: v for k, v in request_body.items() if v is not None}
541
455
  url = f"{self.base_url}/list/{list_id}/comment"
542
456
  query_params = {}
@@ -544,9 +458,7 @@ class ClickupApp(APIApplication):
544
458
  response.raise_for_status()
545
459
  return response.json()
546
460
 
547
- def comments_update_task_comment(
548
- self, comment_id, comment_text, assignee, resolved
549
- ) -> dict[str, Any]:
461
+ async def comments_update_task_comment(self, comment_id, comment_text, assignee, resolved) -> dict[str, Any]:
550
462
  """
551
463
  Updates an existing task comment with new text, assignee, and resolution status.
552
464
 
@@ -574,11 +486,7 @@ class ClickupApp(APIApplication):
574
486
  raise ValueError("Missing required parameter 'assignee'")
575
487
  if resolved is None:
576
488
  raise ValueError("Missing required parameter 'resolved'")
577
- request_body = {
578
- "comment_text": comment_text,
579
- "assignee": assignee,
580
- "resolved": resolved,
581
- }
489
+ request_body = {"comment_text": comment_text, "assignee": assignee, "resolved": resolved}
582
490
  request_body = {k: v for k, v in request_body.items() if v is not None}
583
491
  url = f"{self.base_url}/comment/{comment_id}"
584
492
  query_params = {}
@@ -586,7 +494,7 @@ class ClickupApp(APIApplication):
586
494
  response.raise_for_status()
587
495
  return response.json()
588
496
 
589
- def comments_delete_task_comment(self, comment_id) -> dict[str, Any]:
497
+ async def comments_delete_task_comment(self, comment_id) -> dict[str, Any]:
590
498
  """
591
499
  Deletes a task comment by its ID.
592
500
 
@@ -611,7 +519,7 @@ class ClickupApp(APIApplication):
611
519
  response.raise_for_status()
612
520
  return response.json()
613
521
 
614
- def custom_fields_get_list_fields(self, list_id) -> dict[str, Any]:
522
+ async def custom_fields_get_list_fields(self, list_id) -> dict[str, Any]:
615
523
  """
616
524
  Retrieves a list of custom fields associated with a specified list by its ID.
617
525
 
@@ -636,9 +544,7 @@ class ClickupApp(APIApplication):
636
544
  response.raise_for_status()
637
545
  return response.json()
638
546
 
639
- def custom_fields_remove_field_value(
640
- self, task_id, field_id, custom_task_ids=None, team_id=None
641
- ) -> dict[str, Any]:
547
+ async def custom_fields_remove_field_value(self, task_id, field_id, custom_task_ids=None, team_id=None) -> dict[str, Any]:
642
548
  """
643
549
  Removes a specific custom field value from a given task.
644
550
 
@@ -663,22 +569,13 @@ class ClickupApp(APIApplication):
663
569
  if field_id is None:
664
570
  raise ValueError("Missing required parameter 'field_id'")
665
571
  url = f"{self.base_url}/task/{task_id}/field/{field_id}"
666
- query_params = {
667
- k: v
668
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
669
- if v is not None
670
- }
572
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
671
573
  response = self._delete(url, params=query_params)
672
574
  response.raise_for_status()
673
575
  return response.json()
674
576
 
675
- def task_relationships_add_dependency(
676
- self,
677
- task_id,
678
- custom_task_ids=None,
679
- team_id=None,
680
- depends_on=None,
681
- depedency_of=None,
577
+ async def task_relationships_add_dependency(
578
+ self, task_id, custom_task_ids=None, team_id=None, depends_on=None, depedency_of=None
682
579
  ) -> dict[str, Any]:
683
580
  """
684
581
  Adds a dependency relationship to a specified task, allowing you to define predecessor or dependent tasks within a project management system.
@@ -702,22 +599,15 @@ class ClickupApp(APIApplication):
702
599
  """
703
600
  if task_id is None:
704
601
  raise ValueError("Missing required parameter 'task_id'")
705
- request_body = {
706
- "depends_on": depends_on,
707
- "depedency_of": depedency_of,
708
- }
602
+ request_body = {"depends_on": depends_on, "depedency_of": depedency_of}
709
603
  request_body = {k: v for k, v in request_body.items() if v is not None}
710
604
  url = f"{self.base_url}/task/{task_id}/dependency"
711
- query_params = {
712
- k: v
713
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
714
- if v is not None
715
- }
605
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
716
606
  response = self._post(url, data=request_body, params=query_params)
717
607
  response.raise_for_status()
718
608
  return response.json()
719
609
 
720
- def task_relationships_remove_dependency(
610
+ async def task_relationships_remove_dependency(
721
611
  self, task_id, depends_on, dependency_of, custom_task_ids=None, team_id=None
722
612
  ) -> dict[str, Any]:
723
613
  """
@@ -761,9 +651,7 @@ class ClickupApp(APIApplication):
761
651
  response.raise_for_status()
762
652
  return response.json()
763
653
 
764
- def task_relationships_link_tasks(
765
- self, task_id, links_to, custom_task_ids=None, team_id=None
766
- ) -> dict[str, Any]:
654
+ async def task_relationships_link_tasks(self, task_id, links_to, custom_task_ids=None, team_id=None) -> dict[str, Any]:
767
655
  """
768
656
  Links one task to another by creating a relationship between the source and target task IDs, with optional custom task and team identifiers.
769
657
 
@@ -788,18 +676,12 @@ class ClickupApp(APIApplication):
788
676
  if links_to is None:
789
677
  raise ValueError("Missing required parameter 'links_to'")
790
678
  url = f"{self.base_url}/task/{task_id}/link/{links_to}"
791
- query_params = {
792
- k: v
793
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
794
- if v is not None
795
- }
679
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
796
680
  response = self._post(url, data={}, params=query_params)
797
681
  response.raise_for_status()
798
682
  return response.json()
799
683
 
800
- def task_relationships_remove_link_between_tasks(
801
- self, task_id, links_to, custom_task_ids=None, team_id=None
802
- ) -> dict[str, Any]:
684
+ async def task_relationships_remove_link_between_tasks(self, task_id, links_to, custom_task_ids=None, team_id=None) -> dict[str, Any]:
803
685
  """
804
686
  Removes a link between two specified tasks within the task management system.
805
687
 
@@ -824,16 +706,12 @@ class ClickupApp(APIApplication):
824
706
  if links_to is None:
825
707
  raise ValueError("Missing required parameter 'links_to'")
826
708
  url = f"{self.base_url}/task/{task_id}/link/{links_to}"
827
- query_params = {
828
- k: v
829
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
830
- if v is not None
831
- }
709
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
832
710
  response = self._delete(url, params=query_params)
833
711
  response.raise_for_status()
834
712
  return response.json()
835
713
 
836
- def folders_get_contents_of(self, space_id, archived=None) -> dict[str, Any]:
714
+ async def folders_get_contents_of(self, space_id, archived=None) -> dict[str, Any]:
837
715
  """
838
716
  Retrieves the contents of all folders within a specified space, with optional filtering for archived folders.
839
717
 
@@ -859,7 +737,7 @@ class ClickupApp(APIApplication):
859
737
  response.raise_for_status()
860
738
  return response.json()
861
739
 
862
- def folders_create_new_folder(self, space_id, name) -> dict[str, Any]:
740
+ async def folders_create_new_folder(self, space_id, name) -> dict[str, Any]:
863
741
  """
864
742
  Creates a new folder within a specified space.
865
743
 
@@ -881,9 +759,7 @@ class ClickupApp(APIApplication):
881
759
  raise ValueError("Missing required parameter 'space_id'")
882
760
  if name is None:
883
761
  raise ValueError("Missing required parameter 'name'")
884
- request_body = {
885
- "name": name,
886
- }
762
+ request_body = {"name": name}
887
763
  request_body = {k: v for k, v in request_body.items() if v is not None}
888
764
  url = f"{self.base_url}/space/{space_id}/folder"
889
765
  query_params = {}
@@ -891,7 +767,7 @@ class ClickupApp(APIApplication):
891
767
  response.raise_for_status()
892
768
  return response.json()
893
769
 
894
- def folders_get_folder_content(self, folder_id) -> dict[str, Any]:
770
+ async def folders_get_folder_content(self, folder_id) -> dict[str, Any]:
895
771
  """
896
772
  Retrieves the contents of a specified folder by its ID.
897
773
 
@@ -916,7 +792,7 @@ class ClickupApp(APIApplication):
916
792
  response.raise_for_status()
917
793
  return response.json()
918
794
 
919
- def folders_rename_folder(self, folder_id, name) -> dict[str, Any]:
795
+ async def folders_rename_folder(self, folder_id, name) -> dict[str, Any]:
920
796
  """
921
797
  Renames an existing folder by updating its name using the specified folder ID.
922
798
 
@@ -938,9 +814,7 @@ class ClickupApp(APIApplication):
938
814
  raise ValueError("Missing required parameter 'folder_id'")
939
815
  if name is None:
940
816
  raise ValueError("Missing required parameter 'name'")
941
- request_body = {
942
- "name": name,
943
- }
817
+ request_body = {"name": name}
944
818
  request_body = {k: v for k, v in request_body.items() if v is not None}
945
819
  url = f"{self.base_url}/folder/{folder_id}"
946
820
  query_params = {}
@@ -948,7 +822,7 @@ class ClickupApp(APIApplication):
948
822
  response.raise_for_status()
949
823
  return response.json()
950
824
 
951
- def folders_remove_folder(self, folder_id) -> dict[str, Any]:
825
+ async def folders_remove_folder(self, folder_id) -> dict[str, Any]:
952
826
  """
953
827
  Removes a folder with the specified folder ID by sending a DELETE request to the API.
954
828
 
@@ -973,9 +847,7 @@ class ClickupApp(APIApplication):
973
847
  response.raise_for_status()
974
848
  return response.json()
975
849
 
976
- def goals_get_workspace_goals(
977
- self, team_id, include_completed=None
978
- ) -> dict[str, Any]:
850
+ async def goals_get_workspace_goals(self, team_id, include_completed=None) -> dict[str, Any]:
979
851
  """
980
852
  Retrieves all workspace goals for a specified team, optionally including completed goals.
981
853
 
@@ -996,16 +868,12 @@ class ClickupApp(APIApplication):
996
868
  if team_id is None:
997
869
  raise ValueError("Missing required parameter 'team_id'")
998
870
  url = f"{self.base_url}/team/{team_id}/goal"
999
- query_params = {
1000
- k: v for k, v in [("include_completed", include_completed)] if v is not None
1001
- }
871
+ query_params = {k: v for k, v in [("include_completed", include_completed)] if v is not None}
1002
872
  response = self._get(url, params=query_params)
1003
873
  response.raise_for_status()
1004
874
  return response.json()
1005
875
 
1006
- def goals_add_new_goal_to_workspace(
1007
- self, team_id, description, name, due_date, multiple_owners, owners, color
1008
- ) -> dict[str, Any]:
876
+ async def goals_add_new_goal_to_workspace(self, team_id, description, name, due_date, multiple_owners, owners, color) -> dict[str, Any]:
1009
877
  """
1010
878
  Adds a new goal to the specified team workspace.
1011
879
 
@@ -1056,7 +924,7 @@ class ClickupApp(APIApplication):
1056
924
  response.raise_for_status()
1057
925
  return response.json()
1058
926
 
1059
- def goals_get_details(self, goal_id) -> dict[str, Any]:
927
+ async def goals_get_details(self, goal_id) -> dict[str, Any]:
1060
928
  """
1061
929
  Retrieves detailed information about a goal based on the provided goal ID.
1062
930
 
@@ -1080,9 +948,7 @@ class ClickupApp(APIApplication):
1080
948
  response.raise_for_status()
1081
949
  return response.json()
1082
950
 
1083
- def goals_update_goal_details(
1084
- self, goal_id, description, name, due_date, rem_owners, add_owners, color
1085
- ) -> dict[str, Any]:
951
+ async def goals_update_goal_details(self, goal_id, description, name, due_date, rem_owners, add_owners, color) -> dict[str, Any]:
1086
952
  """
1087
953
  Updates the details of an existing goal with new information, including description, name, due date, owners, and color.
1088
954
 
@@ -1134,7 +1000,7 @@ class ClickupApp(APIApplication):
1134
1000
  response.raise_for_status()
1135
1001
  return response.json()
1136
1002
 
1137
- def goals_remove_goal(self, goal_id) -> dict[str, Any]:
1003
+ async def goals_remove_goal(self, goal_id) -> dict[str, Any]:
1138
1004
  """
1139
1005
  Removes a goal from the system using the specified goal ID.
1140
1006
 
@@ -1159,18 +1025,7 @@ class ClickupApp(APIApplication):
1159
1025
  response.raise_for_status()
1160
1026
  return response.json()
1161
1027
 
1162
- def goals_add_key_result(
1163
- self,
1164
- goal_id,
1165
- name,
1166
- owners,
1167
- type,
1168
- steps_start,
1169
- steps_end,
1170
- unit,
1171
- task_ids,
1172
- list_ids,
1173
- ) -> dict[str, Any]:
1028
+ async def goals_add_key_result(self, goal_id, name, owners, type, steps_start, steps_end, unit, task_ids, list_ids) -> dict[str, Any]:
1174
1029
  """
1175
1030
  Creates and adds a new key result to a specified goal with the provided details and associated tasks/lists.
1176
1031
 
@@ -1230,9 +1085,7 @@ class ClickupApp(APIApplication):
1230
1085
  response.raise_for_status()
1231
1086
  return response.json()
1232
1087
 
1233
- def goals_update_key_result(
1234
- self, key_result_id, steps_current, note
1235
- ) -> dict[str, Any]:
1088
+ async def goals_update_key_result(self, key_result_id, steps_current, note) -> dict[str, Any]:
1236
1089
  """
1237
1090
  Updates the current number of steps and note for a specific key result.
1238
1091
 
@@ -1257,10 +1110,7 @@ class ClickupApp(APIApplication):
1257
1110
  raise ValueError("Missing required parameter 'steps_current'")
1258
1111
  if note is None:
1259
1112
  raise ValueError("Missing required parameter 'note'")
1260
- request_body = {
1261
- "steps_current": steps_current,
1262
- "note": note,
1263
- }
1113
+ request_body = {"steps_current": steps_current, "note": note}
1264
1114
  request_body = {k: v for k, v in request_body.items() if v is not None}
1265
1115
  url = f"{self.base_url}/key_result/{key_result_id}"
1266
1116
  query_params = {}
@@ -1268,7 +1118,7 @@ class ClickupApp(APIApplication):
1268
1118
  response.raise_for_status()
1269
1119
  return response.json()
1270
1120
 
1271
- def goals_remove_target(self, key_result_id) -> dict[str, Any]:
1121
+ async def goals_remove_target(self, key_result_id) -> dict[str, Any]:
1272
1122
  """
1273
1123
  Removes the target associated with a specified key result by sending a DELETE request to the API.
1274
1124
 
@@ -1293,15 +1143,8 @@ class ClickupApp(APIApplication):
1293
1143
  response.raise_for_status()
1294
1144
  return response.json()
1295
1145
 
1296
- def guests_invite_to_workspace(
1297
- self,
1298
- team_id,
1299
- email,
1300
- can_edit_tags,
1301
- can_see_time_spent,
1302
- can_see_time_estimated,
1303
- can_create_views,
1304
- custom_role_id,
1146
+ async def guests_invite_to_workspace(
1147
+ self, team_id, email, can_edit_tags, can_see_time_spent, can_see_time_estimated, can_create_views, custom_role_id
1305
1148
  ) -> dict[str, Any]:
1306
1149
  """
1307
1150
  Invites a guest to a workspace with specific permissions.
@@ -1354,7 +1197,7 @@ class ClickupApp(APIApplication):
1354
1197
  response.raise_for_status()
1355
1198
  return response.json()
1356
1199
 
1357
- def guests_get_guest_information(self, team_id, guest_id) -> dict[str, Any]:
1200
+ async def guests_get_guest_information(self, team_id, guest_id) -> dict[str, Any]:
1358
1201
  """
1359
1202
  Fetches guest information for a specific guest in a team.
1360
1203
 
@@ -1381,16 +1224,8 @@ class ClickupApp(APIApplication):
1381
1224
  response.raise_for_status()
1382
1225
  return response.json()
1383
1226
 
1384
- def guests_edit_guest_on_workspace(
1385
- self,
1386
- team_id,
1387
- guest_id,
1388
- username,
1389
- can_edit_tags,
1390
- can_see_time_spent,
1391
- can_see_time_estimated,
1392
- can_create_views,
1393
- custom_role_id,
1227
+ async def guests_edit_guest_on_workspace(
1228
+ self, team_id, guest_id, username, can_edit_tags, can_see_time_spent, can_see_time_estimated, can_create_views, custom_role_id
1394
1229
  ) -> dict[str, Any]:
1395
1230
  """
1396
1231
  Edits a guest user's permissions and role within a specified workspace team.
@@ -1446,9 +1281,7 @@ class ClickupApp(APIApplication):
1446
1281
  response.raise_for_status()
1447
1282
  return response.json()
1448
1283
 
1449
- def guests_revoke_guest_access_to_workspace(
1450
- self, team_id, guest_id
1451
- ) -> dict[str, Any]:
1284
+ async def guests_revoke_guest_access_to_workspace(self, team_id, guest_id) -> dict[str, Any]:
1452
1285
  """
1453
1286
  Revokes a guest's access to a workspace for a specified team.
1454
1287
 
@@ -1476,14 +1309,8 @@ class ClickupApp(APIApplication):
1476
1309
  response.raise_for_status()
1477
1310
  return response.json()
1478
1311
 
1479
- def guests_add_to_task(
1480
- self,
1481
- task_id,
1482
- guest_id,
1483
- permission_level,
1484
- include_shared=None,
1485
- custom_task_ids=None,
1486
- team_id=None,
1312
+ async def guests_add_to_task(
1313
+ self, task_id, guest_id, permission_level, include_shared=None, custom_task_ids=None, team_id=None
1487
1314
  ) -> dict[str, Any]:
1488
1315
  """
1489
1316
  Adds a guest to a task with specified permission level and optional parameters.
@@ -1511,25 +1338,19 @@ class ClickupApp(APIApplication):
1511
1338
  raise ValueError("Missing required parameter 'guest_id'")
1512
1339
  if permission_level is None:
1513
1340
  raise ValueError("Missing required parameter 'permission_level'")
1514
- request_body = {
1515
- "permission_level": permission_level,
1516
- }
1341
+ request_body = {"permission_level": permission_level}
1517
1342
  request_body = {k: v for k, v in request_body.items() if v is not None}
1518
1343
  url = f"{self.base_url}/task/{task_id}/guest/{guest_id}"
1519
1344
  query_params = {
1520
1345
  k: v
1521
- for k, v in [
1522
- ("include_shared", include_shared),
1523
- ("custom_task_ids", custom_task_ids),
1524
- ("team_id", team_id),
1525
- ]
1346
+ for k, v in [("include_shared", include_shared), ("custom_task_ids", custom_task_ids), ("team_id", team_id)]
1526
1347
  if v is not None
1527
1348
  }
1528
1349
  response = self._post(url, data=request_body, params=query_params)
1529
1350
  response.raise_for_status()
1530
1351
  return response.json()
1531
1352
 
1532
- def guests_revoke_access_to_task(
1353
+ async def guests_revoke_access_to_task(
1533
1354
  self, task_id, guest_id, include_shared=None, custom_task_ids=None, team_id=None
1534
1355
  ) -> dict[str, Any]:
1535
1356
  """
@@ -1559,20 +1380,14 @@ class ClickupApp(APIApplication):
1559
1380
  url = f"{self.base_url}/task/{task_id}/guest/{guest_id}"
1560
1381
  query_params = {
1561
1382
  k: v
1562
- for k, v in [
1563
- ("include_shared", include_shared),
1564
- ("custom_task_ids", custom_task_ids),
1565
- ("team_id", team_id),
1566
- ]
1383
+ for k, v in [("include_shared", include_shared), ("custom_task_ids", custom_task_ids), ("team_id", team_id)]
1567
1384
  if v is not None
1568
1385
  }
1569
1386
  response = self._delete(url, params=query_params)
1570
1387
  response.raise_for_status()
1571
1388
  return response.json()
1572
1389
 
1573
- def guests_share_list_with(
1574
- self, list_id, guest_id, permission_level, include_shared=None
1575
- ) -> dict[str, Any]:
1390
+ async def guests_share_list_with(self, list_id, guest_id, permission_level, include_shared=None) -> dict[str, Any]:
1576
1391
  """
1577
1392
  Shares a list with a specified guest by assigning a permission level and optionally including shared items.
1578
1393
 
@@ -1598,21 +1413,15 @@ class ClickupApp(APIApplication):
1598
1413
  raise ValueError("Missing required parameter 'guest_id'")
1599
1414
  if permission_level is None:
1600
1415
  raise ValueError("Missing required parameter 'permission_level'")
1601
- request_body = {
1602
- "permission_level": permission_level,
1603
- }
1416
+ request_body = {"permission_level": permission_level}
1604
1417
  request_body = {k: v for k, v in request_body.items() if v is not None}
1605
1418
  url = f"{self.base_url}/list/{list_id}/guest/{guest_id}"
1606
- query_params = {
1607
- k: v for k, v in [("include_shared", include_shared)] if v is not None
1608
- }
1419
+ query_params = {k: v for k, v in [("include_shared", include_shared)] if v is not None}
1609
1420
  response = self._post(url, data=request_body, params=query_params)
1610
1421
  response.raise_for_status()
1611
1422
  return response.json()
1612
1423
 
1613
- def guests_remove_from_list(
1614
- self, list_id, guest_id, include_shared=None
1615
- ) -> dict[str, Any]:
1424
+ async def guests_remove_from_list(self, list_id, guest_id, include_shared=None) -> dict[str, Any]:
1616
1425
  """
1617
1426
  Removes a guest from a specified list, optionally including shared guests in the operation.
1618
1427
 
@@ -1636,16 +1445,12 @@ class ClickupApp(APIApplication):
1636
1445
  if guest_id is None:
1637
1446
  raise ValueError("Missing required parameter 'guest_id'")
1638
1447
  url = f"{self.base_url}/list/{list_id}/guest/{guest_id}"
1639
- query_params = {
1640
- k: v for k, v in [("include_shared", include_shared)] if v is not None
1641
- }
1448
+ query_params = {k: v for k, v in [("include_shared", include_shared)] if v is not None}
1642
1449
  response = self._delete(url, params=query_params)
1643
1450
  response.raise_for_status()
1644
1451
  return response.json()
1645
1452
 
1646
- def guests_add_guest_to_folder(
1647
- self, folder_id, guest_id, permission_level, include_shared=None
1648
- ) -> dict[str, Any]:
1453
+ async def guests_add_guest_to_folder(self, folder_id, guest_id, permission_level, include_shared=None) -> dict[str, Any]:
1649
1454
  """
1650
1455
  Adds a guest to a specified folder with a given permission level, optionally including shared folders.
1651
1456
 
@@ -1671,21 +1476,15 @@ class ClickupApp(APIApplication):
1671
1476
  raise ValueError("Missing required parameter 'guest_id'")
1672
1477
  if permission_level is None:
1673
1478
  raise ValueError("Missing required parameter 'permission_level'")
1674
- request_body = {
1675
- "permission_level": permission_level,
1676
- }
1479
+ request_body = {"permission_level": permission_level}
1677
1480
  request_body = {k: v for k, v in request_body.items() if v is not None}
1678
1481
  url = f"{self.base_url}/folder/{folder_id}/guest/{guest_id}"
1679
- query_params = {
1680
- k: v for k, v in [("include_shared", include_shared)] if v is not None
1681
- }
1482
+ query_params = {k: v for k, v in [("include_shared", include_shared)] if v is not None}
1682
1483
  response = self._post(url, data=request_body, params=query_params)
1683
1484
  response.raise_for_status()
1684
1485
  return response.json()
1685
1486
 
1686
- def guests_revoke_access_from_folder(
1687
- self, folder_id, guest_id, include_shared=None
1688
- ) -> dict[str, Any]:
1487
+ async def guests_revoke_access_from_folder(self, folder_id, guest_id, include_shared=None) -> dict[str, Any]:
1689
1488
  """
1690
1489
  Revokes a guest's access from a specified folder, with optional inclusion of shared resources.
1691
1490
 
@@ -1709,14 +1508,12 @@ class ClickupApp(APIApplication):
1709
1508
  if guest_id is None:
1710
1509
  raise ValueError("Missing required parameter 'guest_id'")
1711
1510
  url = f"{self.base_url}/folder/{folder_id}/guest/{guest_id}"
1712
- query_params = {
1713
- k: v for k, v in [("include_shared", include_shared)] if v is not None
1714
- }
1511
+ query_params = {k: v for k, v in [("include_shared", include_shared)] if v is not None}
1715
1512
  response = self._delete(url, params=query_params)
1716
1513
  response.raise_for_status()
1717
1514
  return response.json()
1718
1515
 
1719
- def lists_get_folder_lists(self, folder_id, archived=None) -> dict[str, Any]:
1516
+ async def lists_get_folder_lists(self, folder_id, archived=None) -> dict[str, Any]:
1720
1517
  """
1721
1518
  Retrieves all lists contained within a specified folder, with optional filtering for archived lists.
1722
1519
 
@@ -1742,16 +1539,8 @@ class ClickupApp(APIApplication):
1742
1539
  response.raise_for_status()
1743
1540
  return response.json()
1744
1541
 
1745
- def lists_add_to_folder(
1746
- self,
1747
- folder_id,
1748
- name,
1749
- content=None,
1750
- due_date=None,
1751
- due_date_time=None,
1752
- priority=None,
1753
- assignee=None,
1754
- status=None,
1542
+ async def lists_add_to_folder(
1543
+ self, folder_id, name, content=None, due_date=None, due_date_time=None, priority=None, assignee=None, status=None
1755
1544
  ) -> dict[str, Any]:
1756
1545
  """
1757
1546
  Creates a new list in the specified folder with the given name and optional attributes.
@@ -1796,7 +1585,7 @@ class ClickupApp(APIApplication):
1796
1585
  response.raise_for_status()
1797
1586
  return response.json()
1798
1587
 
1799
- def lists_get_folderless(self, space_id, archived=None) -> dict[str, Any]:
1588
+ async def lists_get_folderless(self, space_id, archived=None) -> dict[str, Any]:
1800
1589
  """
1801
1590
  Retrieves all lists within the specified space that are not associated with a folder.
1802
1591
 
@@ -1822,16 +1611,8 @@ class ClickupApp(APIApplication):
1822
1611
  response.raise_for_status()
1823
1612
  return response.json()
1824
1613
 
1825
- def lists_create_folderless_list(
1826
- self,
1827
- space_id,
1828
- name,
1829
- content=None,
1830
- due_date=None,
1831
- due_date_time=None,
1832
- priority=None,
1833
- assignee=None,
1834
- status=None,
1614
+ async def lists_create_folderless_list(
1615
+ self, space_id, name, content=None, due_date=None, due_date_time=None, priority=None, assignee=None, status=None
1835
1616
  ) -> dict[str, Any]:
1836
1617
  """
1837
1618
  Creates a new list within a specified space without associating it with a folder.
@@ -1876,7 +1657,7 @@ class ClickupApp(APIApplication):
1876
1657
  response.raise_for_status()
1877
1658
  return response.json()
1878
1659
 
1879
- def lists_get_list_details(self, list_id) -> dict[str, Any]:
1660
+ async def lists_get_list_details(self, list_id) -> dict[str, Any]:
1880
1661
  """
1881
1662
  Retrieves the details of a specific list by its unique identifier.
1882
1663
 
@@ -1901,17 +1682,8 @@ class ClickupApp(APIApplication):
1901
1682
  response.raise_for_status()
1902
1683
  return response.json()
1903
1684
 
1904
- def lists_update_list(
1905
- self,
1906
- list_id,
1907
- name,
1908
- content,
1909
- due_date,
1910
- due_date_time,
1911
- priority,
1912
- assignee,
1913
- status,
1914
- unset_status,
1685
+ async def lists_update_list(
1686
+ self, list_id, name, content, due_date, due_date_time, priority, assignee, status, unset_status
1915
1687
  ) -> dict[str, Any]:
1916
1688
  """
1917
1689
  Updates the information of a list, including name, content, due date, priority, assignee, status, and color attributes.
@@ -1972,7 +1744,7 @@ class ClickupApp(APIApplication):
1972
1744
  response.raise_for_status()
1973
1745
  return response.json()
1974
1746
 
1975
- def lists_remove_list(self, list_id) -> dict[str, Any]:
1747
+ async def lists_remove_list(self, list_id) -> dict[str, Any]:
1976
1748
  """
1977
1749
  Removes a list with the specified list ID via an HTTP DELETE request and returns the API response as a dictionary.
1978
1750
 
@@ -1997,7 +1769,7 @@ class ClickupApp(APIApplication):
1997
1769
  response.raise_for_status()
1998
1770
  return response.json()
1999
1771
 
2000
- def lists_add_task_to_list(self, list_id, task_id) -> dict[str, Any]:
1772
+ async def lists_add_task_to_list(self, list_id, task_id) -> dict[str, Any]:
2001
1773
  """
2002
1774
  Adds a task to a specified list.
2003
1775
 
@@ -2025,7 +1797,7 @@ class ClickupApp(APIApplication):
2025
1797
  response.raise_for_status()
2026
1798
  return response.json()
2027
1799
 
2028
- def lists_remove_task_from_list(self, list_id, task_id) -> dict[str, Any]:
1800
+ async def lists_remove_task_from_list(self, list_id, task_id) -> dict[str, Any]:
2029
1801
  """
2030
1802
  Removes a specific task from a list by sending a DELETE request to the appropriate API endpoint.
2031
1803
 
@@ -2053,7 +1825,7 @@ class ClickupApp(APIApplication):
2053
1825
  response.raise_for_status()
2054
1826
  return response.json()
2055
1827
 
2056
- def members_get_task_access(self, task_id) -> dict[str, Any]:
1828
+ async def members_get_task_access(self, task_id) -> dict[str, Any]:
2057
1829
  """
2058
1830
  Retrieves a list of members who have access to the specified task.
2059
1831
 
@@ -2078,7 +1850,7 @@ class ClickupApp(APIApplication):
2078
1850
  response.raise_for_status()
2079
1851
  return response.json()
2080
1852
 
2081
- def members_get_list_users(self, list_id) -> dict[str, Any]:
1853
+ async def members_get_list_users(self, list_id) -> dict[str, Any]:
2082
1854
  """
2083
1855
  Retrieves the list of users who are members of the specified list.
2084
1856
 
@@ -2103,9 +1875,7 @@ class ClickupApp(APIApplication):
2103
1875
  response.raise_for_status()
2104
1876
  return response.json()
2105
1877
 
2106
- def roles_list_available_custom_roles(
2107
- self, team_id, include_members=None
2108
- ) -> dict[str, Any]:
1878
+ async def roles_list_available_custom_roles(self, team_id, include_members=None) -> dict[str, Any]:
2109
1879
  """
2110
1880
  Retrieves a list of available custom roles for a specified team, optionally including role members.
2111
1881
 
@@ -2125,14 +1895,12 @@ class ClickupApp(APIApplication):
2125
1895
  if team_id is None:
2126
1896
  raise ValueError("Missing required parameter 'team_id'")
2127
1897
  url = f"{self.base_url}/team/{team_id}/customroles"
2128
- query_params = {
2129
- k: v for k, v in [("include_members", include_members)] if v is not None
2130
- }
1898
+ query_params = {k: v for k, v in [("include_members", include_members)] if v is not None}
2131
1899
  response = self._get(url, params=query_params)
2132
1900
  response.raise_for_status()
2133
1901
  return response.json()
2134
1902
 
2135
- def shared_hierarchy_view_tasks_lists_folders(self, team_id) -> dict[str, Any]:
1903
+ async def shared_hierarchy_view_tasks_lists_folders(self, team_id) -> dict[str, Any]:
2136
1904
  """
2137
1905
  Retrieves the shared hierarchy view including tasks, lists, and folders for a specified team.
2138
1906
 
@@ -2157,7 +1925,7 @@ class ClickupApp(APIApplication):
2157
1925
  response.raise_for_status()
2158
1926
  return response.json()
2159
1927
 
2160
- def spaces_get_space_details(self, team_id, archived=None) -> dict[str, Any]:
1928
+ async def spaces_get_space_details(self, team_id, archived=None) -> dict[str, Any]:
2161
1929
  """
2162
1930
  Retrieves details about spaces within a specified team, optionally filtering by archived status.
2163
1931
 
@@ -2183,9 +1951,7 @@ class ClickupApp(APIApplication):
2183
1951
  response.raise_for_status()
2184
1952
  return response.json()
2185
1953
 
2186
- def spaces_add_new_space_to_workspace(
2187
- self, team_id, name, multiple_assignees, features
2188
- ) -> dict[str, Any]:
1954
+ async def spaces_add_new_space_to_workspace(self, team_id, name, multiple_assignees, features) -> dict[str, Any]:
2189
1955
  """
2190
1956
  Creates a new space within a specified workspace team, configuring assignment settings and desired features.
2191
1957
 
@@ -2213,11 +1979,7 @@ class ClickupApp(APIApplication):
2213
1979
  raise ValueError("Missing required parameter 'multiple_assignees'")
2214
1980
  if features is None:
2215
1981
  raise ValueError("Missing required parameter 'features'")
2216
- request_body = {
2217
- "name": name,
2218
- "multiple_assignees": multiple_assignees,
2219
- "features": features,
2220
- }
1982
+ request_body = {"name": name, "multiple_assignees": multiple_assignees, "features": features}
2221
1983
  request_body = {k: v for k, v in request_body.items() if v is not None}
2222
1984
  url = f"{self.base_url}/team/{team_id}/space"
2223
1985
  query_params = {}
@@ -2225,7 +1987,7 @@ class ClickupApp(APIApplication):
2225
1987
  response.raise_for_status()
2226
1988
  return response.json()
2227
1989
 
2228
- def spaces_get_details(self, space_id) -> dict[str, Any]:
1990
+ async def spaces_get_details(self, space_id) -> dict[str, Any]:
2229
1991
  """
2230
1992
  Retrieves the details of a specified space by its unique identifier.
2231
1993
 
@@ -2250,15 +2012,8 @@ class ClickupApp(APIApplication):
2250
2012
  response.raise_for_status()
2251
2013
  return response.json()
2252
2014
 
2253
- def spaces_update_details_and_enable_click_apps(
2254
- self,
2255
- space_id,
2256
- name,
2257
- color,
2258
- private,
2259
- admin_can_manage,
2260
- multiple_assignees,
2261
- features,
2015
+ async def spaces_update_details_and_enable_click_apps(
2016
+ self, space_id, name, color, private, admin_can_manage, multiple_assignees, features
2262
2017
  ) -> dict[str, Any]:
2263
2018
  """
2264
2019
  Updates the details of a specific space and enables click apps by sending a PUT request with the provided attributes.
@@ -2311,7 +2066,7 @@ class ClickupApp(APIApplication):
2311
2066
  response.raise_for_status()
2312
2067
  return response.json()
2313
2068
 
2314
- def spaces_remove_space(self, space_id) -> dict[str, Any]:
2069
+ async def spaces_remove_space(self, space_id) -> dict[str, Any]:
2315
2070
  """
2316
2071
  Removes a space identified by the given space_id.
2317
2072
 
@@ -2336,7 +2091,7 @@ class ClickupApp(APIApplication):
2336
2091
  response.raise_for_status()
2337
2092
  return response.json()
2338
2093
 
2339
- def tags_get_space(self, space_id) -> dict[str, Any]:
2094
+ async def tags_get_space(self, space_id) -> dict[str, Any]:
2340
2095
  """
2341
2096
  Retrieves all tags associated with a specific space by its unique identifier.
2342
2097
 
@@ -2361,7 +2116,7 @@ class ClickupApp(APIApplication):
2361
2116
  response.raise_for_status()
2362
2117
  return response.json()
2363
2118
 
2364
- def tags_create_space_tag(self, space_id, tag) -> dict[str, Any]:
2119
+ async def tags_create_space_tag(self, space_id, tag) -> dict[str, Any]:
2365
2120
  """
2366
2121
  Creates a new tag for a specified space by sending a POST request to the space tag API endpoint.
2367
2122
 
@@ -2383,9 +2138,7 @@ class ClickupApp(APIApplication):
2383
2138
  raise ValueError("Missing required parameter 'space_id'")
2384
2139
  if tag is None:
2385
2140
  raise ValueError("Missing required parameter 'tag'")
2386
- request_body = {
2387
- "tag": tag,
2388
- }
2141
+ request_body = {"tag": tag}
2389
2142
  request_body = {k: v for k, v in request_body.items() if v is not None}
2390
2143
  url = f"{self.base_url}/space/{space_id}/tag"
2391
2144
  query_params = {}
@@ -2393,7 +2146,7 @@ class ClickupApp(APIApplication):
2393
2146
  response.raise_for_status()
2394
2147
  return response.json()
2395
2148
 
2396
- def tags_update_space_tag(self, space_id, tag_name, tag) -> dict[str, Any]:
2149
+ async def tags_update_space_tag(self, space_id, tag_name, tag) -> dict[str, Any]:
2397
2150
  """
2398
2151
  Updates a tag for a specified space by sending a PUT request with the provided tag data.
2399
2152
 
@@ -2418,9 +2171,7 @@ class ClickupApp(APIApplication):
2418
2171
  raise ValueError("Missing required parameter 'tag_name'")
2419
2172
  if tag is None:
2420
2173
  raise ValueError("Missing required parameter 'tag'")
2421
- request_body = {
2422
- "tag": tag,
2423
- }
2174
+ request_body = {"tag": tag}
2424
2175
  request_body = {k: v for k, v in request_body.items() if v is not None}
2425
2176
  url = f"{self.base_url}/space/{space_id}/tag/{tag_name}"
2426
2177
  query_params = {}
@@ -2428,7 +2179,7 @@ class ClickupApp(APIApplication):
2428
2179
  response.raise_for_status()
2429
2180
  return response.json()
2430
2181
 
2431
- def tags_remove_space_tag(self, space_id, tag_name, tag) -> dict[str, Any]:
2182
+ async def tags_remove_space_tag(self, space_id, tag_name, tag) -> dict[str, Any]:
2432
2183
  """
2433
2184
  Removes a specified tag from a given space by tag name.
2434
2185
 
@@ -2453,9 +2204,7 @@ class ClickupApp(APIApplication):
2453
2204
  raise ValueError("Missing required parameter 'tag_name'")
2454
2205
  if tag is None:
2455
2206
  raise ValueError("Missing required parameter 'tag'")
2456
- request_body = {
2457
- "tag": tag,
2458
- }
2207
+ request_body = {"tag": tag}
2459
2208
  request_body = {k: v for k, v in request_body.items() if v is not None}
2460
2209
  url = f"{self.base_url}/space/{space_id}/tag/{tag_name}"
2461
2210
  query_params = {}
@@ -2463,9 +2212,7 @@ class ClickupApp(APIApplication):
2463
2212
  response.raise_for_status()
2464
2213
  return response.json()
2465
2214
 
2466
- def tags_add_to_task(
2467
- self, task_id, tag_name, custom_task_ids=None, team_id=None
2468
- ) -> dict[str, Any]:
2215
+ async def tags_add_to_task(self, task_id, tag_name, custom_task_ids=None, team_id=None) -> dict[str, Any]:
2469
2216
  """
2470
2217
  Adds a tag to a specific task.
2471
2218
 
@@ -2490,18 +2237,12 @@ class ClickupApp(APIApplication):
2490
2237
  if tag_name is None:
2491
2238
  raise ValueError("Missing required parameter 'tag_name'")
2492
2239
  url = f"{self.base_url}/task/{task_id}/tag/{tag_name}"
2493
- query_params = {
2494
- k: v
2495
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
2496
- if v is not None
2497
- }
2240
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
2498
2241
  response = self._post(url, data={}, params=query_params)
2499
2242
  response.raise_for_status()
2500
2243
  return response.json()
2501
2244
 
2502
- def tags_remove_from_task(
2503
- self, task_id, tag_name, custom_task_ids=None, team_id=None
2504
- ) -> dict[str, Any]:
2245
+ async def tags_remove_from_task(self, task_id, tag_name, custom_task_ids=None, team_id=None) -> dict[str, Any]:
2505
2246
  """
2506
2247
  Removes a specific tag from a task by ID, with optional filtering by custom task IDs and team ID.
2507
2248
 
@@ -2525,16 +2266,12 @@ class ClickupApp(APIApplication):
2525
2266
  if tag_name is None:
2526
2267
  raise ValueError("Missing required parameter 'tag_name'")
2527
2268
  url = f"{self.base_url}/task/{task_id}/tag/{tag_name}"
2528
- query_params = {
2529
- k: v
2530
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
2531
- if v is not None
2532
- }
2269
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
2533
2270
  response = self._delete(url, params=query_params)
2534
2271
  response.raise_for_status()
2535
2272
  return response.json()
2536
2273
 
2537
- def tasks_get_list_tasks(
2274
+ async def tasks_get_list_tasks(
2538
2275
  self,
2539
2276
  list_id,
2540
2277
  archived=None,
@@ -2627,7 +2364,7 @@ class ClickupApp(APIApplication):
2627
2364
  response.raise_for_status()
2628
2365
  return response.json()
2629
2366
 
2630
- def tasks_create_new_task(
2367
+ async def tasks_create_new_task(
2631
2368
  self,
2632
2369
  list_id,
2633
2370
  name,
@@ -2710,22 +2447,13 @@ class ClickupApp(APIApplication):
2710
2447
  }
2711
2448
  request_body = {k: v for k, v in request_body.items() if v is not None}
2712
2449
  url = f"{self.base_url}/list/{list_id}/task"
2713
- query_params = {
2714
- k: v
2715
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
2716
- if v is not None
2717
- }
2450
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
2718
2451
  response = self._post(url, data=request_body, params=query_params)
2719
2452
  response.raise_for_status()
2720
2453
  return response.json()
2721
2454
 
2722
- def tasks_get_task_details(
2723
- self,
2724
- task_id,
2725
- custom_task_ids=None,
2726
- team_id=None,
2727
- include_subtasks=None,
2728
- include_markdown_description=None,
2455
+ async def tasks_get_task_details(
2456
+ self, task_id, custom_task_ids=None, team_id=None, include_subtasks=None, include_markdown_description=None
2729
2457
  ) -> dict[str, Any]:
2730
2458
  """
2731
2459
  Retrieves detailed information about a specific task, with options to include subtasks, use custom task IDs, filter by team, and specify description formatting.
@@ -2764,7 +2492,7 @@ class ClickupApp(APIApplication):
2764
2492
  response.raise_for_status()
2765
2493
  return response.json()
2766
2494
 
2767
- def tasks_update_task_fields(
2495
+ async def tasks_update_task_fields(
2768
2496
  self,
2769
2497
  task_id,
2770
2498
  custom_task_ids=None,
@@ -2833,18 +2561,12 @@ class ClickupApp(APIApplication):
2833
2561
  }
2834
2562
  request_body = {k: v for k, v in request_body.items() if v is not None}
2835
2563
  url = f"{self.base_url}/task/{task_id}"
2836
- query_params = {
2837
- k: v
2838
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
2839
- if v is not None
2840
- }
2564
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
2841
2565
  response = self._put(url, data=request_body, params=query_params)
2842
2566
  response.raise_for_status()
2843
2567
  return response.json()
2844
2568
 
2845
- def tasks_remove_task_by_id(
2846
- self, task_id, custom_task_ids=None, team_id=None
2847
- ) -> dict[str, Any]:
2569
+ async def tasks_remove_task_by_id(self, task_id, custom_task_ids=None, team_id=None) -> dict[str, Any]:
2848
2570
  """
2849
2571
  Removes a specific task by its unique task ID, optionally filtering by custom task IDs and team ID.
2850
2572
 
@@ -2866,16 +2588,12 @@ class ClickupApp(APIApplication):
2866
2588
  if task_id is None:
2867
2589
  raise ValueError("Missing required parameter 'task_id'")
2868
2590
  url = f"{self.base_url}/task/{task_id}"
2869
- query_params = {
2870
- k: v
2871
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
2872
- if v is not None
2873
- }
2591
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
2874
2592
  response = self._delete(url, params=query_params)
2875
2593
  response.raise_for_status()
2876
2594
  return response.json()
2877
2595
 
2878
- def tasks_filter_team_tasks(
2596
+ async def tasks_filter_team_tasks(
2879
2597
  self,
2880
2598
  team_Id,
2881
2599
  page=None,
@@ -2983,9 +2701,7 @@ class ClickupApp(APIApplication):
2983
2701
  response.raise_for_status()
2984
2702
  return response.json()
2985
2703
 
2986
- def tasks_get_time_in_status(
2987
- self, task_id, custom_task_ids=None, team_id=None
2988
- ) -> dict[str, Any]:
2704
+ async def tasks_get_time_in_status(self, task_id, custom_task_ids=None, team_id=None) -> dict[str, Any]:
2989
2705
  """
2990
2706
  Retrieves the amount of time a specified task has spent in each status, with optional filters for custom task IDs and team ID.
2991
2707
 
@@ -3007,18 +2723,12 @@ class ClickupApp(APIApplication):
3007
2723
  if task_id is None:
3008
2724
  raise ValueError("Missing required parameter 'task_id'")
3009
2725
  url = f"{self.base_url}/task/{task_id}/time_in_status"
3010
- query_params = {
3011
- k: v
3012
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
3013
- if v is not None
3014
- }
2726
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
3015
2727
  response = self._get(url, params=query_params)
3016
2728
  response.raise_for_status()
3017
2729
  return response.json()
3018
2730
 
3019
- def tasks_get_time_in_status_bulk(
3020
- self, task_ids, custom_task_ids=None, team_id=None
3021
- ) -> dict[str, Any]:
2731
+ async def tasks_get_time_in_status_bulk(self, task_ids, custom_task_ids=None, team_id=None) -> dict[str, Any]:
3022
2732
  """
3023
2733
  Retrieves the time each specified task has spent in various statuses, in bulk, based on provided task identifiers.
3024
2734
 
@@ -3041,19 +2751,13 @@ class ClickupApp(APIApplication):
3041
2751
  raise ValueError("Missing required parameter 'task_ids'")
3042
2752
  url = f"{self.base_url}/task/bulk_time_in_status/task_ids"
3043
2753
  query_params = {
3044
- k: v
3045
- for k, v in [
3046
- ("task_ids", task_ids),
3047
- ("custom_task_ids", custom_task_ids),
3048
- ("team_id", team_id),
3049
- ]
3050
- if v is not None
2754
+ k: v for k, v in [("task_ids", task_ids), ("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None
3051
2755
  }
3052
2756
  response = self._get(url, params=query_params)
3053
2757
  response.raise_for_status()
3054
2758
  return response.json()
3055
2759
 
3056
- def task_templates_get_templates(self, team_id, page) -> dict[str, Any]:
2760
+ async def task_templates_get_templates(self, team_id, page) -> dict[str, Any]:
3057
2761
  """
3058
2762
  Retrieves a paginated list of task templates for a given team.
3059
2763
 
@@ -3081,9 +2785,7 @@ class ClickupApp(APIApplication):
3081
2785
  response.raise_for_status()
3082
2786
  return response.json()
3083
2787
 
3084
- def task_templates_create_from_template(
3085
- self, list_id, template_id, name
3086
- ) -> dict[str, Any]:
2788
+ async def task_templates_create_from_template(self, list_id, template_id, name) -> dict[str, Any]:
3087
2789
  """
3088
2790
  Creates a new task template instance in a specific list by cloning from an existing task template.
3089
2791
 
@@ -3108,9 +2810,7 @@ class ClickupApp(APIApplication):
3108
2810
  raise ValueError("Missing required parameter 'template_id'")
3109
2811
  if name is None:
3110
2812
  raise ValueError("Missing required parameter 'name'")
3111
- request_body = {
3112
- "name": name,
3113
- }
2813
+ request_body = {"name": name}
3114
2814
  request_body = {k: v for k, v in request_body.items() if v is not None}
3115
2815
  url = f"{self.base_url}/list/{list_id}/taskTemplate/{template_id}"
3116
2816
  query_params = {}
@@ -3118,7 +2818,7 @@ class ClickupApp(APIApplication):
3118
2818
  response.raise_for_status()
3119
2819
  return response.json()
3120
2820
 
3121
- def teams_workspaces_get_workspace_seats(self, team_id) -> dict[str, Any]:
2821
+ async def teams_workspaces_get_workspace_seats(self, team_id) -> dict[str, Any]:
3122
2822
  """
3123
2823
  Retrieves detailed seat allocation information for a specific workspace team.
3124
2824
 
@@ -3143,7 +2843,7 @@ class ClickupApp(APIApplication):
3143
2843
  response.raise_for_status()
3144
2844
  return response.json()
3145
2845
 
3146
- def teams_workspaces_get_workspace_plan(self, team_id) -> dict[str, Any]:
2846
+ async def teams_workspaces_get_workspace_plan(self, team_id) -> dict[str, Any]:
3147
2847
  """
3148
2848
  Retrieves the plan details for a workspace associated with the specified team.
3149
2849
 
@@ -3168,7 +2868,7 @@ class ClickupApp(APIApplication):
3168
2868
  response.raise_for_status()
3169
2869
  return response.json()
3170
2870
 
3171
- def teams_user_groups_create_team(self, team_id, name, members) -> dict[str, Any]:
2871
+ async def teams_user_groups_create_team(self, team_id, name, members) -> dict[str, Any]:
3172
2872
  """
3173
2873
  Creates a new team user group with the specified name and members under the given team.
3174
2874
 
@@ -3193,10 +2893,7 @@ class ClickupApp(APIApplication):
3193
2893
  raise ValueError("Missing required parameter 'name'")
3194
2894
  if members is None:
3195
2895
  raise ValueError("Missing required parameter 'members'")
3196
- request_body = {
3197
- "name": name,
3198
- "members": members,
3199
- }
2896
+ request_body = {"name": name, "members": members}
3200
2897
  request_body = {k: v for k, v in request_body.items() if v is not None}
3201
2898
  url = f"{self.base_url}/team/{team_id}/group"
3202
2899
  query_params = {}
@@ -3204,7 +2901,7 @@ class ClickupApp(APIApplication):
3204
2901
  response.raise_for_status()
3205
2902
  return response.json()
3206
2903
 
3207
- def custom_task_types_get_available_task_types(self, team_id) -> dict[str, Any]:
2904
+ async def custom_task_types_get_available_task_types(self, team_id) -> dict[str, Any]:
3208
2905
  """
3209
2906
  Retrieves the available custom task types for a specified team.
3210
2907
 
@@ -3229,9 +2926,7 @@ class ClickupApp(APIApplication):
3229
2926
  response.raise_for_status()
3230
2927
  return response.json()
3231
2928
 
3232
- def teams_user_groups_update_user_group(
3233
- self, group_id, name=None, handle=None, members=None
3234
- ) -> dict[str, Any]:
2929
+ async def teams_user_groups_update_user_group(self, group_id, name=None, handle=None, members=None) -> dict[str, Any]:
3235
2930
  """
3236
2931
  Updates the attributes of a user group in the Teams system.
3237
2932
 
@@ -3253,11 +2948,7 @@ class ClickupApp(APIApplication):
3253
2948
  """
3254
2949
  if group_id is None:
3255
2950
  raise ValueError("Missing required parameter 'group_id'")
3256
- request_body = {
3257
- "name": name,
3258
- "handle": handle,
3259
- "members": members,
3260
- }
2951
+ request_body = {"name": name, "handle": handle, "members": members}
3261
2952
  request_body = {k: v for k, v in request_body.items() if v is not None}
3262
2953
  url = f"{self.base_url}/group/{group_id}"
3263
2954
  query_params = {}
@@ -3265,7 +2956,7 @@ class ClickupApp(APIApplication):
3265
2956
  response.raise_for_status()
3266
2957
  return response.json()
3267
2958
 
3268
- def teams_user_groups_remove_group(self, group_id) -> dict[str, Any]:
2959
+ async def teams_user_groups_remove_group(self, group_id) -> dict[str, Any]:
3269
2960
  """
3270
2961
  Removes a user group from the Teams service by group ID.
3271
2962
 
@@ -3290,9 +2981,7 @@ class ClickupApp(APIApplication):
3290
2981
  response.raise_for_status()
3291
2982
  return response.json()
3292
2983
 
3293
- def teams_user_groups_get_user_groups(
3294
- self, team_id=None, group_ids=None
3295
- ) -> dict[str, Any]:
2984
+ async def teams_user_groups_get_user_groups(self, team_id=None, group_ids=None) -> dict[str, Any]:
3296
2985
  """
3297
2986
  Retrieves user group information for a specified team and/or group IDs from the remote service.
3298
2987
 
@@ -3310,18 +2999,12 @@ class ClickupApp(APIApplication):
3310
2999
  get, user-groups, team-management, api
3311
3000
  """
3312
3001
  url = f"{self.base_url}/group"
3313
- query_params = {
3314
- k: v
3315
- for k, v in [("team_id", team_id), ("group_ids", group_ids)]
3316
- if v is not None
3317
- }
3002
+ query_params = {k: v for k, v in [("team_id", team_id), ("group_ids", group_ids)] if v is not None}
3318
3003
  response = self._get(url, params=query_params)
3319
3004
  response.raise_for_status()
3320
3005
  return response.json()
3321
3006
 
3322
- def time_tracking_legacy_get_tracked_time(
3323
- self, task_id, custom_task_ids=None, team_id=None
3324
- ) -> dict[str, Any]:
3007
+ async def time_tracking_legacy_get_tracked_time(self, task_id, custom_task_ids=None, team_id=None) -> dict[str, Any]:
3325
3008
  """
3326
3009
  Retrieves time tracking data for a specific task.
3327
3010
 
@@ -3343,16 +3026,12 @@ class ClickupApp(APIApplication):
3343
3026
  if task_id is None:
3344
3027
  raise ValueError("Missing required parameter 'task_id'")
3345
3028
  url = f"{self.base_url}/task/{task_id}/time"
3346
- query_params = {
3347
- k: v
3348
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
3349
- if v is not None
3350
- }
3029
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
3351
3030
  response = self._get(url, params=query_params)
3352
3031
  response.raise_for_status()
3353
3032
  return response.json()
3354
3033
 
3355
- def time_tracking_legacy_record_time_for_task(
3034
+ async def time_tracking_legacy_record_time_for_task(
3356
3035
  self, task_id, start, end, time, custom_task_ids=None, team_id=None
3357
3036
  ) -> dict[str, Any]:
3358
3037
  """
@@ -3383,23 +3062,15 @@ class ClickupApp(APIApplication):
3383
3062
  raise ValueError("Missing required parameter 'end'")
3384
3063
  if time is None:
3385
3064
  raise ValueError("Missing required parameter 'time'")
3386
- request_body = {
3387
- "start": start,
3388
- "end": end,
3389
- "time": time,
3390
- }
3065
+ request_body = {"start": start, "end": end, "time": time}
3391
3066
  request_body = {k: v for k, v in request_body.items() if v is not None}
3392
3067
  url = f"{self.base_url}/task/{task_id}/time"
3393
- query_params = {
3394
- k: v
3395
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
3396
- if v is not None
3397
- }
3068
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
3398
3069
  response = self._post(url, data=request_body, params=query_params)
3399
3070
  response.raise_for_status()
3400
3071
  return response.json()
3401
3072
 
3402
- def time_tracking_legacy_edit_time_tracked(
3073
+ async def time_tracking_legacy_edit_time_tracked(
3403
3074
  self, task_id, interval_id, start, end, time, custom_task_ids=None, team_id=None
3404
3075
  ) -> dict[str, Any]:
3405
3076
  """
@@ -3434,25 +3105,15 @@ class ClickupApp(APIApplication):
3434
3105
  raise ValueError("Missing required parameter 'end'")
3435
3106
  if time is None:
3436
3107
  raise ValueError("Missing required parameter 'time'")
3437
- request_body = {
3438
- "start": start,
3439
- "end": end,
3440
- "time": time,
3441
- }
3108
+ request_body = {"start": start, "end": end, "time": time}
3442
3109
  request_body = {k: v for k, v in request_body.items() if v is not None}
3443
3110
  url = f"{self.base_url}/task/{task_id}/time/{interval_id}"
3444
- query_params = {
3445
- k: v
3446
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
3447
- if v is not None
3448
- }
3111
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
3449
3112
  response = self._put(url, data=request_body, params=query_params)
3450
3113
  response.raise_for_status()
3451
3114
  return response.json()
3452
3115
 
3453
- def time_tracking_legacy_remove_tracked_time(
3454
- self, task_id, interval_id, custom_task_ids=None, team_id=None
3455
- ) -> dict[str, Any]:
3116
+ async def time_tracking_legacy_remove_tracked_time(self, task_id, interval_id, custom_task_ids=None, team_id=None) -> dict[str, Any]:
3456
3117
  """
3457
3118
  Removes tracked time from a time-tracking interval associated with a specific task.
3458
3119
 
@@ -3476,16 +3137,12 @@ class ClickupApp(APIApplication):
3476
3137
  if interval_id is None:
3477
3138
  raise ValueError("Missing required parameter 'interval_id'")
3478
3139
  url = f"{self.base_url}/task/{task_id}/time/{interval_id}"
3479
- query_params = {
3480
- k: v
3481
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
3482
- if v is not None
3483
- }
3140
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
3484
3141
  response = self._delete(url, params=query_params)
3485
3142
  response.raise_for_status()
3486
3143
  return response.json()
3487
3144
 
3488
- def time_tracking_get_time_entries_within_date_range(
3145
+ async def time_tracking_get_time_entries_within_date_range(
3489
3146
  self,
3490
3147
  team_Id,
3491
3148
  start_date=None,
@@ -3551,7 +3208,7 @@ class ClickupApp(APIApplication):
3551
3208
  response.raise_for_status()
3552
3209
  return response.json()
3553
3210
 
3554
- def time_tracking_create_time_entry(
3211
+ async def time_tracking_create_time_entry(
3555
3212
  self,
3556
3213
  team_Id,
3557
3214
  start,
@@ -3612,16 +3269,12 @@ class ClickupApp(APIApplication):
3612
3269
  }
3613
3270
  request_body = {k: v for k, v in request_body.items() if v is not None}
3614
3271
  url = f"{self.base_url}/team/{team_Id}/time_entries"
3615
- query_params = {
3616
- k: v
3617
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
3618
- if v is not None
3619
- }
3272
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
3620
3273
  response = self._post(url, data=request_body, params=query_params)
3621
3274
  response.raise_for_status()
3622
3275
  return response.json()
3623
3276
 
3624
- def time_tracking_get_single_time_entry(
3277
+ async def time_tracking_get_single_time_entry(
3625
3278
  self, team_id, timer_id, include_task_=None, include_location_names=None
3626
3279
  ) -> dict[str, Any]:
3627
3280
  """
@@ -3648,18 +3301,13 @@ class ClickupApp(APIApplication):
3648
3301
  raise ValueError("Missing required parameter 'timer_id'")
3649
3302
  url = f"{self.base_url}/team/{team_id}/time_entries/{timer_id}"
3650
3303
  query_params = {
3651
- k: v
3652
- for k, v in [
3653
- ("include_task_", include_task_),
3654
- ("include_location_names", include_location_names),
3655
- ]
3656
- if v is not None
3304
+ k: v for k, v in [("include_task_", include_task_), ("include_location_names", include_location_names)] if v is not None
3657
3305
  }
3658
3306
  response = self._get(url, params=query_params)
3659
3307
  response.raise_for_status()
3660
3308
  return response.json()
3661
3309
 
3662
- def time_tracking_remove_entry(self, team_id, timer_id) -> dict[str, Any]:
3310
+ async def time_tracking_remove_entry(self, team_id, timer_id) -> dict[str, Any]:
3663
3311
  """
3664
3312
  Removes a specific time tracking entry for a team by deleting the corresponding timer record.
3665
3313
 
@@ -3687,7 +3335,7 @@ class ClickupApp(APIApplication):
3687
3335
  response.raise_for_status()
3688
3336
  return response.json()
3689
3337
 
3690
- def time_tracking_update_time_entry_details(
3338
+ async def time_tracking_update_time_entry_details(
3691
3339
  self,
3692
3340
  team_id,
3693
3341
  timer_id,
@@ -3744,16 +3392,12 @@ class ClickupApp(APIApplication):
3744
3392
  }
3745
3393
  request_body = {k: v for k, v in request_body.items() if v is not None}
3746
3394
  url = f"{self.base_url}/team/{team_id}/time_entries/{timer_id}"
3747
- query_params = {
3748
- k: v
3749
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
3750
- if v is not None
3751
- }
3395
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
3752
3396
  response = self._put(url, data=request_body, params=query_params)
3753
3397
  response.raise_for_status()
3754
3398
  return response.json()
3755
3399
 
3756
- def time_tracking_get_time_entry_history(self, team_id, timer_id) -> dict[str, Any]:
3400
+ async def time_tracking_get_time_entry_history(self, team_id, timer_id) -> dict[str, Any]:
3757
3401
  """
3758
3402
  Retrieves the history of a specific time entry for a given team from the time tracking service.
3759
3403
 
@@ -3781,9 +3425,7 @@ class ClickupApp(APIApplication):
3781
3425
  response.raise_for_status()
3782
3426
  return response.json()
3783
3427
 
3784
- def time_tracking_get_current_time_entry(
3785
- self, team_id, assignee=None
3786
- ) -> dict[str, Any]:
3428
+ async def time_tracking_get_current_time_entry(self, team_id, assignee=None) -> dict[str, Any]:
3787
3429
  """
3788
3430
  Retrieves the current time entry for a specified team, optionally filtered by assignee.
3789
3431
 
@@ -3809,9 +3451,7 @@ class ClickupApp(APIApplication):
3809
3451
  response.raise_for_status()
3810
3452
  return response.json()
3811
3453
 
3812
- def time_tracking_remove_tags_from_time_entries(
3813
- self, team_id, tags, time_entry_ids
3814
- ) -> dict[str, Any]:
3454
+ async def time_tracking_remove_tags_from_time_entries(self, team_id, tags, time_entry_ids) -> dict[str, Any]:
3815
3455
  """
3816
3456
  Removes specified tags from multiple time entries for a given team.
3817
3457
 
@@ -3836,10 +3476,7 @@ class ClickupApp(APIApplication):
3836
3476
  raise ValueError("Missing required parameter 'tags'")
3837
3477
  if time_entry_ids is None:
3838
3478
  raise ValueError("Missing required parameter 'time_entry_ids'")
3839
- request_body = {
3840
- "tags": tags,
3841
- "time_entry_ids": time_entry_ids,
3842
- }
3479
+ request_body = {"tags": tags, "time_entry_ids": time_entry_ids}
3843
3480
  request_body = {k: v for k, v in request_body.items() if v is not None}
3844
3481
  url = f"{self.base_url}/team/{team_id}/time_entries/tags"
3845
3482
  query_params = {}
@@ -3847,7 +3484,7 @@ class ClickupApp(APIApplication):
3847
3484
  response.raise_for_status()
3848
3485
  return response.json()
3849
3486
 
3850
- def time_tracking_get_all_tags_from_time_entries(self, team_id) -> dict[str, Any]:
3487
+ async def time_tracking_get_all_tags_from_time_entries(self, team_id) -> dict[str, Any]:
3851
3488
  """
3852
3489
  Retrieves all tags associated with time entries for a specified team.
3853
3490
 
@@ -3872,9 +3509,7 @@ class ClickupApp(APIApplication):
3872
3509
  response.raise_for_status()
3873
3510
  return response.json()
3874
3511
 
3875
- def time_tracking_add_tags_from_time_entries(
3876
- self, team_id, tags, time_entry_ids
3877
- ) -> dict[str, Any]:
3512
+ async def time_tracking_add_tags_from_time_entries(self, team_id, tags, time_entry_ids) -> dict[str, Any]:
3878
3513
  """
3879
3514
  Adds tags to specified time entries for a team.
3880
3515
 
@@ -3899,10 +3534,7 @@ class ClickupApp(APIApplication):
3899
3534
  raise ValueError("Missing required parameter 'tags'")
3900
3535
  if time_entry_ids is None:
3901
3536
  raise ValueError("Missing required parameter 'time_entry_ids'")
3902
- request_body = {
3903
- "tags": tags,
3904
- "time_entry_ids": time_entry_ids,
3905
- }
3537
+ request_body = {"tags": tags, "time_entry_ids": time_entry_ids}
3906
3538
  request_body = {k: v for k, v in request_body.items() if v is not None}
3907
3539
  url = f"{self.base_url}/team/{team_id}/time_entries/tags"
3908
3540
  query_params = {}
@@ -3910,9 +3542,7 @@ class ClickupApp(APIApplication):
3910
3542
  response.raise_for_status()
3911
3543
  return response.json()
3912
3544
 
3913
- def time_tracking_change_tag_names(
3914
- self, team_id, name, new_name, tag_bg, tag_fg
3915
- ) -> dict[str, Any]:
3545
+ async def time_tracking_change_tag_names(self, team_id, name, new_name, tag_bg, tag_fg) -> dict[str, Any]:
3916
3546
  """
3917
3547
  Updates the name and visual properties of a time tracking tag for a specified team.
3918
3548
 
@@ -3943,12 +3573,7 @@ class ClickupApp(APIApplication):
3943
3573
  raise ValueError("Missing required parameter 'tag_bg'")
3944
3574
  if tag_fg is None:
3945
3575
  raise ValueError("Missing required parameter 'tag_fg'")
3946
- request_body = {
3947
- "name": name,
3948
- "new_name": new_name,
3949
- "tag_bg": tag_bg,
3950
- "tag_fg": tag_fg,
3951
- }
3576
+ request_body = {"name": name, "new_name": new_name, "tag_bg": tag_bg, "tag_fg": tag_fg}
3952
3577
  request_body = {k: v for k, v in request_body.items() if v is not None}
3953
3578
  url = f"{self.base_url}/team/{team_id}/time_entries/tags"
3954
3579
  query_params = {}
@@ -3956,15 +3581,8 @@ class ClickupApp(APIApplication):
3956
3581
  response.raise_for_status()
3957
3582
  return response.json()
3958
3583
 
3959
- def time_tracking_start_timer(
3960
- self,
3961
- team_Id,
3962
- custom_task_ids=None,
3963
- team_id=None,
3964
- tags=None,
3965
- description=None,
3966
- tid=None,
3967
- billable=None,
3584
+ async def time_tracking_start_timer(
3585
+ self, team_Id, custom_task_ids=None, team_id=None, tags=None, description=None, tid=None, billable=None
3968
3586
  ) -> dict[str, Any]:
3969
3587
  """
3970
3588
  Starts a new time tracking timer for a specified team and task with optional metadata such as tags, description, and billable status.
@@ -3990,24 +3608,15 @@ class ClickupApp(APIApplication):
3990
3608
  """
3991
3609
  if team_Id is None:
3992
3610
  raise ValueError("Missing required parameter 'team_Id'")
3993
- request_body = {
3994
- "tags": tags,
3995
- "description": description,
3996
- "tid": tid,
3997
- "billable": billable,
3998
- }
3611
+ request_body = {"tags": tags, "description": description, "tid": tid, "billable": billable}
3999
3612
  request_body = {k: v for k, v in request_body.items() if v is not None}
4000
3613
  url = f"{self.base_url}/team/{team_Id}/time_entries/start"
4001
- query_params = {
4002
- k: v
4003
- for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)]
4004
- if v is not None
4005
- }
3614
+ query_params = {k: v for k, v in [("custom_task_ids", custom_task_ids), ("team_id", team_id)] if v is not None}
4006
3615
  response = self._post(url, data=request_body, params=query_params)
4007
3616
  response.raise_for_status()
4008
3617
  return response.json()
4009
3618
 
4010
- def time_tracking_stop_time_entry(self, team_id) -> dict[str, Any]:
3619
+ async def time_tracking_stop_time_entry(self, team_id) -> dict[str, Any]:
4011
3620
  """
4012
3621
  Stops the currently active time entry for the specified team.
4013
3622
 
@@ -4032,9 +3641,7 @@ class ClickupApp(APIApplication):
4032
3641
  response.raise_for_status()
4033
3642
  return response.json()
4034
3643
 
4035
- def users_invite_user_to_workspace(
4036
- self, team_id, email, admin, custom_role_id=None
4037
- ) -> dict[str, Any]:
3644
+ async def users_invite_user_to_workspace(self, team_id, email, admin, custom_role_id=None) -> dict[str, Any]:
4038
3645
  """
4039
3646
  Invites a user to a workspace by sending an invitation to their email address.
4040
3647
 
@@ -4060,11 +3667,7 @@ class ClickupApp(APIApplication):
4060
3667
  raise ValueError("Missing required parameter 'email'")
4061
3668
  if admin is None:
4062
3669
  raise ValueError("Missing required parameter 'admin'")
4063
- request_body = {
4064
- "email": email,
4065
- "admin": admin,
4066
- "custom_role_id": custom_role_id,
4067
- }
3670
+ request_body = {"email": email, "admin": admin, "custom_role_id": custom_role_id}
4068
3671
  request_body = {k: v for k, v in request_body.items() if v is not None}
4069
3672
  url = f"{self.base_url}/team/{team_id}/user"
4070
3673
  query_params = {}
@@ -4072,7 +3675,7 @@ class ClickupApp(APIApplication):
4072
3675
  response.raise_for_status()
4073
3676
  return response.json()
4074
3677
 
4075
- def users_get_user_details(self, team_id, user_id) -> dict[str, Any]:
3678
+ async def users_get_user_details(self, team_id, user_id) -> dict[str, Any]:
4076
3679
  """
4077
3680
  Retrieves detailed information about a specific user within a given team.
4078
3681
 
@@ -4100,9 +3703,7 @@ class ClickupApp(APIApplication):
4100
3703
  response.raise_for_status()
4101
3704
  return response.json()
4102
3705
 
4103
- def users_update_user_details(
4104
- self, team_id, user_id, username, admin, custom_role_id
4105
- ) -> dict[str, Any]:
3706
+ async def users_update_user_details(self, team_id, user_id, username, admin, custom_role_id) -> dict[str, Any]:
4106
3707
  """
4107
3708
  Updates the details of a user in a specified team.
4108
3709
 
@@ -4133,11 +3734,7 @@ class ClickupApp(APIApplication):
4133
3734
  raise ValueError("Missing required parameter 'admin'")
4134
3735
  if custom_role_id is None:
4135
3736
  raise ValueError("Missing required parameter 'custom_role_id'")
4136
- request_body = {
4137
- "username": username,
4138
- "admin": admin,
4139
- "custom_role_id": custom_role_id,
4140
- }
3737
+ request_body = {"username": username, "admin": admin, "custom_role_id": custom_role_id}
4141
3738
  request_body = {k: v for k, v in request_body.items() if v is not None}
4142
3739
  url = f"{self.base_url}/team/{team_id}/user/{user_id}"
4143
3740
  query_params = {}
@@ -4145,7 +3742,7 @@ class ClickupApp(APIApplication):
4145
3742
  response.raise_for_status()
4146
3743
  return response.json()
4147
3744
 
4148
- def users_deactivate_from_workspace(self, team_id, user_id) -> dict[str, Any]:
3745
+ async def users_deactivate_from_workspace(self, team_id, user_id) -> dict[str, Any]:
4149
3746
  """
4150
3747
  Deactivates a user from the specified workspace (team) by sending a DELETE request to the API.
4151
3748
 
@@ -4173,7 +3770,7 @@ class ClickupApp(APIApplication):
4173
3770
  response.raise_for_status()
4174
3771
  return response.json()
4175
3772
 
4176
- def views_get_everything_level(self, team_id) -> dict[str, Any]:
3773
+ async def views_get_everything_level(self, team_id) -> dict[str, Any]:
4177
3774
  """
4178
3775
  Retrieves all view-level data for a specified team.
4179
3776
 
@@ -4198,18 +3795,8 @@ class ClickupApp(APIApplication):
4198
3795
  response.raise_for_status()
4199
3796
  return response.json()
4200
3797
 
4201
- def views_create_workspace_view_everything_level(
4202
- self,
4203
- team_id,
4204
- name,
4205
- type,
4206
- grouping,
4207
- divide,
4208
- sorting,
4209
- filters,
4210
- columns,
4211
- team_sidebar,
4212
- settings,
3798
+ async def views_create_workspace_view_everything_level(
3799
+ self, team_id, name, type, grouping, divide, sorting, filters, columns, team_sidebar, settings
4213
3800
  ) -> dict[str, Any]:
4214
3801
  """
4215
3802
  Creates a new 'everything-level' view within a specified workspace team with custom configuration options.
@@ -4274,7 +3861,7 @@ class ClickupApp(APIApplication):
4274
3861
  response.raise_for_status()
4275
3862
  return response.json()
4276
3863
 
4277
- def views_space_views_get(self, space_id) -> dict[str, Any]:
3864
+ async def views_space_views_get(self, space_id) -> dict[str, Any]:
4278
3865
  """
4279
3866
  Retrieves the view details for a specified space by its ID.
4280
3867
 
@@ -4299,18 +3886,8 @@ class ClickupApp(APIApplication):
4299
3886
  response.raise_for_status()
4300
3887
  return response.json()
4301
3888
 
4302
- def views_add_view_to_space(
4303
- self,
4304
- space_id,
4305
- name,
4306
- type,
4307
- grouping,
4308
- divide,
4309
- sorting,
4310
- filters,
4311
- columns,
4312
- team_sidebar,
4313
- settings,
3889
+ async def views_add_view_to_space(
3890
+ self, space_id, name, type, grouping, divide, sorting, filters, columns, team_sidebar, settings
4314
3891
  ) -> dict[str, Any]:
4315
3892
  """
4316
3893
  Creates a new view in the specified space with the given configuration parameters.
@@ -4375,7 +3952,7 @@ class ClickupApp(APIApplication):
4375
3952
  response.raise_for_status()
4376
3953
  return response.json()
4377
3954
 
4378
- def views_folder_views_get(self, folder_id) -> dict[str, Any]:
3955
+ async def views_folder_views_get(self, folder_id) -> dict[str, Any]:
4379
3956
  """
4380
3957
  Retrieves the views associated with a specified folder by its folder ID.
4381
3958
 
@@ -4400,18 +3977,8 @@ class ClickupApp(APIApplication):
4400
3977
  response.raise_for_status()
4401
3978
  return response.json()
4402
3979
 
4403
- def views_add_view_to_folder(
4404
- self,
4405
- folder_id,
4406
- name,
4407
- type,
4408
- grouping,
4409
- divide,
4410
- sorting,
4411
- filters,
4412
- columns,
4413
- team_sidebar,
4414
- settings,
3980
+ async def views_add_view_to_folder(
3981
+ self, folder_id, name, type, grouping, divide, sorting, filters, columns, team_sidebar, settings
4415
3982
  ) -> dict[str, Any]:
4416
3983
  """
4417
3984
  Adds a new view to a specified folder with the provided configuration details.
@@ -4476,7 +4043,7 @@ class ClickupApp(APIApplication):
4476
4043
  response.raise_for_status()
4477
4044
  return response.json()
4478
4045
 
4479
- def views_get_list_views(self, list_id) -> dict[str, Any]:
4046
+ async def views_get_list_views(self, list_id) -> dict[str, Any]:
4480
4047
  """
4481
4048
  Retrieves all views associated with the specified list.
4482
4049
 
@@ -4501,18 +4068,8 @@ class ClickupApp(APIApplication):
4501
4068
  response.raise_for_status()
4502
4069
  return response.json()
4503
4070
 
4504
- def views_add_view_to_list(
4505
- self,
4506
- list_id,
4507
- name,
4508
- type,
4509
- grouping,
4510
- divide,
4511
- sorting,
4512
- filters,
4513
- columns,
4514
- team_sidebar,
4515
- settings,
4071
+ async def views_add_view_to_list(
4072
+ self, list_id, name, type, grouping, divide, sorting, filters, columns, team_sidebar, settings
4516
4073
  ) -> dict[str, Any]:
4517
4074
  """
4518
4075
  Creates a new view for a specified list with the provided configuration and returns the resulting view data.
@@ -4577,7 +4134,7 @@ class ClickupApp(APIApplication):
4577
4134
  response.raise_for_status()
4578
4135
  return response.json()
4579
4136
 
4580
- def views_get_view_info(self, view_id) -> dict[str, Any]:
4137
+ async def views_get_view_info(self, view_id) -> dict[str, Any]:
4581
4138
  """
4582
4139
  Retrieves detailed information about a specific view by its identifier.
4583
4140
 
@@ -4602,19 +4159,8 @@ class ClickupApp(APIApplication):
4602
4159
  response.raise_for_status()
4603
4160
  return response.json()
4604
4161
 
4605
- def views_update_view_details(
4606
- self,
4607
- view_id,
4608
- name,
4609
- type,
4610
- parent,
4611
- grouping,
4612
- divide,
4613
- sorting,
4614
- filters,
4615
- columns,
4616
- team_sidebar,
4617
- settings,
4162
+ async def views_update_view_details(
4163
+ self, view_id, name, type, parent, grouping, divide, sorting, filters, columns, team_sidebar, settings
4618
4164
  ) -> dict[str, Any]:
4619
4165
  """
4620
4166
  Updates the details of an existing view with the specified parameters.
@@ -4683,7 +4229,7 @@ class ClickupApp(APIApplication):
4683
4229
  response.raise_for_status()
4684
4230
  return response.json()
4685
4231
 
4686
- def views_delete_view_by_id(self, view_id) -> dict[str, Any]:
4232
+ async def views_delete_view_by_id(self, view_id) -> dict[str, Any]:
4687
4233
  """
4688
4234
  Deletes a view by its ID.
4689
4235
 
@@ -4708,7 +4254,7 @@ class ClickupApp(APIApplication):
4708
4254
  response.raise_for_status()
4709
4255
  return response.json()
4710
4256
 
4711
- def views_get_tasks_in_view(self, view_id, page) -> dict[str, Any]:
4257
+ async def views_get_tasks_in_view(self, view_id, page) -> dict[str, Any]:
4712
4258
  """
4713
4259
  Retrieves a paginated list of tasks associated with a specific view.
4714
4260
 
@@ -4736,7 +4282,7 @@ class ClickupApp(APIApplication):
4736
4282
  response.raise_for_status()
4737
4283
  return response.json()
4738
4284
 
4739
- def webhooks_workspace_get(self, team_id) -> dict[str, Any]:
4285
+ async def webhooks_workspace_get(self, team_id) -> dict[str, Any]:
4740
4286
  """
4741
4287
  Retrieves webhook configurations for a specified workspace team.
4742
4288
 
@@ -4761,15 +4307,8 @@ class ClickupApp(APIApplication):
4761
4307
  response.raise_for_status()
4762
4308
  return response.json()
4763
4309
 
4764
- def webhooks_create_webhook(
4765
- self,
4766
- team_id,
4767
- endpoint,
4768
- events,
4769
- space_id=None,
4770
- folder_id=None,
4771
- list_id=None,
4772
- task_id=None,
4310
+ async def webhooks_create_webhook(
4311
+ self, team_id, endpoint, events, space_id=None, folder_id=None, list_id=None, task_id=None
4773
4312
  ) -> dict[str, Any]:
4774
4313
  """
4775
4314
  Creates a webhook for a team by sending a POST request to the specified endpoint.
@@ -4813,9 +4352,7 @@ class ClickupApp(APIApplication):
4813
4352
  response.raise_for_status()
4814
4353
  return response.json()
4815
4354
 
4816
- def webhooks_update_events_to_monitor(
4817
- self, webhook_id, endpoint, events, status
4818
- ) -> dict[str, Any]:
4355
+ async def webhooks_update_events_to_monitor(self, webhook_id, endpoint, events, status) -> dict[str, Any]:
4819
4356
  """
4820
4357
  Updates the monitored events, endpoint, and status for a specified webhook.
4821
4358
 
@@ -4843,11 +4380,7 @@ class ClickupApp(APIApplication):
4843
4380
  raise ValueError("Missing required parameter 'events'")
4844
4381
  if status is None:
4845
4382
  raise ValueError("Missing required parameter 'status'")
4846
- request_body = {
4847
- "endpoint": endpoint,
4848
- "events": events,
4849
- "status": status,
4850
- }
4383
+ request_body = {"endpoint": endpoint, "events": events, "status": status}
4851
4384
  request_body = {k: v for k, v in request_body.items() if v is not None}
4852
4385
  url = f"{self.base_url}/webhook/{webhook_id}"
4853
4386
  query_params = {}
@@ -4855,7 +4388,7 @@ class ClickupApp(APIApplication):
4855
4388
  response.raise_for_status()
4856
4389
  return response.json()
4857
4390
 
4858
- def webhooks_remove_webhook_by_id(self, webhook_id) -> dict[str, Any]:
4391
+ async def webhooks_remove_webhook_by_id(self, webhook_id) -> dict[str, Any]:
4859
4392
  """
4860
4393
  Removes a webhook by ID.
4861
4394