universal-mcp-applications 0.1.30rc1__py3-none-any.whl → 0.1.36rc1__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.

Potentially problematic release.


This version of universal-mcp-applications might be problematic. Click here for more details.

Files changed (106) 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 +33 -100
  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 +23 -100
  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 +88 -188
  38. universal_mcp/applications/google_drive/app.py +140 -462
  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 +101 -578
  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 +23 -4
  53. universal_mcp/applications/linkedin/app.py +392 -212
  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 +14 -36
  61. universal_mcp/applications/openai/app.py +42 -165
  62. universal_mcp/applications/outlook/app.py +16 -76
  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 +280 -93
  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 +15 -37
  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 +50 -101
  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.30rc1.dist-info → universal_mcp_applications-0.1.36rc1.dist-info}/METADATA +2 -2
  103. {universal_mcp_applications-0.1.30rc1.dist-info → universal_mcp_applications-0.1.36rc1.dist-info}/RECORD +105 -106
  104. universal_mcp/applications/scraper/scraper_testers.py +0 -17
  105. {universal_mcp_applications-0.1.30rc1.dist-info → universal_mcp_applications-0.1.36rc1.dist-info}/WHEEL +0 -0
  106. {universal_mcp_applications-0.1.30rc1.dist-info → universal_mcp_applications-0.1.36rc1.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,7 +8,7 @@ class MiroApp(APIApplication):
9
8
  super().__init__(name="miro", integration=integration, **kwargs)
10
9
  self.base_url = "https://api.miro.com"
11
10
 
12
- def revoke_token_v1(self, access_token=None) -> Any:
11
+ async def revoke_token_v1(self, access_token=None) -> Any:
13
12
  """
14
13
  Revokes an OAuth access token using the POST method at "/v1/oauth/revoke", allowing clients to invalidate tokens as needed.
15
14
 
@@ -23,14 +22,12 @@ class MiroApp(APIApplication):
23
22
  Tokens
24
23
  """
25
24
  url = f"{self.base_url}/v1/oauth/revoke"
26
- query_params = {
27
- k: v for k, v in [("access_token", access_token)] if v is not None
28
- }
25
+ query_params = {k: v for k, v in [("access_token", access_token)] if v is not None}
29
26
  response = self._post(url, data={}, params=query_params)
30
27
  response.raise_for_status()
31
28
  return response.json()
32
29
 
33
- def get_access_token_information(self) -> Any:
30
+ async def get_access_token_information(self) -> Any:
34
31
  """
35
32
  Retrieves an OAuth 2.0 token using the GET method for client authorization purposes.
36
33
 
@@ -46,14 +43,7 @@ class MiroApp(APIApplication):
46
43
  response.raise_for_status()
47
44
  return response.json()
48
45
 
49
- def get_audit_logs(
50
- self,
51
- createdAfter=None,
52
- createdBefore=None,
53
- cursor=None,
54
- limit=None,
55
- sorting=None,
56
- ) -> Any:
46
+ async def get_audit_logs(self, createdAfter=None, createdBefore=None, cursor=None, limit=None, sorting=None) -> Any:
57
47
  """
58
48
  Retrieves audit logs with optional filtering by time range, pagination, and sorting parameters.
59
49
 
@@ -86,7 +76,7 @@ class MiroApp(APIApplication):
86
76
  response.raise_for_status()
87
77
  return response.json()
88
78
 
89
- def get_organization_settings(self, org_id) -> Any:
79
+ async def get_organization_settings(self, org_id) -> Any:
90
80
  """
91
81
  Retrieves data classification settings for an organization, providing information on how data is categorized and handled within the specified organization.
92
82
 
@@ -107,9 +97,7 @@ class MiroApp(APIApplication):
107
97
  response.raise_for_status()
108
98
  return response.json()
109
99
 
110
- def bulk_update_boards_classification(
111
- self, org_id, team_id, labelId=None, notClassifiedOnly=None
112
- ) -> Any:
100
+ async def bulk_update_boards_classification(self, org_id, team_id, labelId=None, notClassifiedOnly=None) -> Any:
113
101
  """
114
102
  Updates the data classification settings for a specific team in an organization using the "PATCH" method.
115
103
 
@@ -136,10 +124,7 @@ class MiroApp(APIApplication):
136
124
  raise ValueError("Missing required parameter 'org_id'")
137
125
  if team_id is None:
138
126
  raise ValueError("Missing required parameter 'team_id'")
139
- request_body = {
140
- "labelId": labelId,
141
- "notClassifiedOnly": notClassifiedOnly,
142
- }
127
+ request_body = {"labelId": labelId, "notClassifiedOnly": notClassifiedOnly}
143
128
  request_body = {k: v for k, v in request_body.items() if v is not None}
144
129
  url = f"{self.base_url}/v2/orgs/{org_id}/teams/{team_id}/data-classification"
145
130
  query_params = {}
@@ -147,7 +132,7 @@ class MiroApp(APIApplication):
147
132
  response.raise_for_status()
148
133
  return response.json()
149
134
 
150
- def get_team_settings(self, org_id, team_id) -> Any:
135
+ async def get_team_settings(self, org_id, team_id) -> Any:
151
136
  """
152
137
  Retrieves the data classification settings for a specific team within an organization.
153
138
 
@@ -171,9 +156,7 @@ class MiroApp(APIApplication):
171
156
  response.raise_for_status()
172
157
  return response.json()
173
158
 
174
- def update_team_settings(
175
- self, org_id, team_id, defaultLabelId=None, enabled=None
176
- ) -> Any:
159
+ async def update_team_settings(self, org_id, team_id, defaultLabelId=None, enabled=None) -> Any:
177
160
  """
178
161
  Updates data classification settings for a specific team within an organization using the PATCH method.
179
162
 
@@ -200,10 +183,7 @@ class MiroApp(APIApplication):
200
183
  raise ValueError("Missing required parameter 'org_id'")
201
184
  if team_id is None:
202
185
  raise ValueError("Missing required parameter 'team_id'")
203
- request_body = {
204
- "defaultLabelId": defaultLabelId,
205
- "enabled": enabled,
206
- }
186
+ request_body = {"defaultLabelId": defaultLabelId, "enabled": enabled}
207
187
  request_body = {k: v for k, v in request_body.items() if v is not None}
208
188
  url = f"{self.base_url}/v2/orgs/{org_id}/teams/{team_id}/data-classification-settings"
209
189
  query_params = {}
@@ -211,7 +191,7 @@ class MiroApp(APIApplication):
211
191
  response.raise_for_status()
212
192
  return response.json()
213
193
 
214
- def get_board_classification(self, org_id, team_id, board_id) -> Any:
194
+ async def get_board_classification(self, org_id, team_id, board_id) -> Any:
215
195
  """
216
196
  Retrieves data classification details for a specified organization, team, and board using the provided identifiers.
217
197
 
@@ -238,9 +218,7 @@ class MiroApp(APIApplication):
238
218
  response.raise_for_status()
239
219
  return response.json()
240
220
 
241
- def update_board_classification(
242
- self, org_id, team_id, board_id, labelId=None
243
- ) -> Any:
221
+ async def update_board_classification(self, org_id, team_id, board_id, labelId=None) -> Any:
244
222
  """
245
223
  Assigns data classifications to a board within a specified organization and team using the provided criteria and returns a success status upon completion.
246
224
 
@@ -268,9 +246,7 @@ class MiroApp(APIApplication):
268
246
  raise ValueError("Missing required parameter 'team_id'")
269
247
  if board_id is None:
270
248
  raise ValueError("Missing required parameter 'board_id'")
271
- request_body = {
272
- "labelId": labelId,
273
- }
249
+ request_body = {"labelId": labelId}
274
250
  request_body = {k: v for k, v in request_body.items() if v is not None}
275
251
  url = f"{self.base_url}/v2/orgs/{org_id}/teams/{team_id}/boards/{board_id}/data-classification"
276
252
  query_params = {}
@@ -278,7 +254,7 @@ class MiroApp(APIApplication):
278
254
  response.raise_for_status()
279
255
  return response.json()
280
256
 
281
- def get_all_cases(self, org_id, limit=None, cursor=None) -> Any:
257
+ async def get_all_cases(self, org_id, limit=None, cursor=None) -> Any:
282
258
  """
283
259
  Retrieves a list of cases for a specified organization using the "GET" method, allowing optional query parameters for pagination via "limit" and "cursor".
284
260
 
@@ -296,14 +272,12 @@ class MiroApp(APIApplication):
296
272
  if org_id is None:
297
273
  raise ValueError("Missing required parameter 'org_id'")
298
274
  url = f"{self.base_url}/v2/orgs/{org_id}/cases"
299
- query_params = {
300
- k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None
301
- }
275
+ query_params = {k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None}
302
276
  response = self._get(url, params=query_params)
303
277
  response.raise_for_status()
304
278
  return response.json()
305
279
 
306
- def get_case(self, org_id, case_id) -> Any:
280
+ async def get_case(self, org_id, case_id) -> Any:
307
281
  """
308
282
  Retrieves a specific case for an organization with the provided org_id and case_id.
309
283
 
@@ -327,9 +301,7 @@ class MiroApp(APIApplication):
327
301
  response.raise_for_status()
328
302
  return response.json()
329
303
 
330
- def get_all_legal_holds_within_acase(
331
- self, org_id, case_id, limit=None, cursor=None
332
- ) -> Any:
304
+ async def get_all_legal_holds_within_acase(self, org_id, case_id, limit=None, cursor=None) -> Any:
333
305
  """
334
306
  Retrieves a paginated list of legal holds for a specific case and organization using cursor-based pagination.
335
307
 
@@ -350,14 +322,12 @@ class MiroApp(APIApplication):
350
322
  if case_id is None:
351
323
  raise ValueError("Missing required parameter 'case_id'")
352
324
  url = f"{self.base_url}/v2/orgs/{org_id}/cases/{case_id}/legal-holds"
353
- query_params = {
354
- k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None
355
- }
325
+ query_params = {k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None}
356
326
  response = self._get(url, params=query_params)
357
327
  response.raise_for_status()
358
328
  return response.json()
359
329
 
360
- def get_legal_hold_information(self, org_id, case_id, legal_hold_id) -> Any:
330
+ async def get_legal_hold_information(self, org_id, case_id, legal_hold_id) -> Any:
361
331
  """
362
332
  Retrieves a specific legal hold for a case within an organization using the provided identifiers.
363
333
 
@@ -384,9 +354,7 @@ class MiroApp(APIApplication):
384
354
  response.raise_for_status()
385
355
  return response.json()
386
356
 
387
- def get_content_items_under_legal_hold(
388
- self, org_id, case_id, legal_hold_id, limit=None, cursor=None
389
- ) -> Any:
357
+ async def get_content_items_under_legal_hold(self, org_id, case_id, legal_hold_id, limit=None, cursor=None) -> Any:
390
358
  """
391
359
  Retrieves a list of content items under a specific legal hold in a case for an organization, allowing for pagination using limit and cursor parameters.
392
360
 
@@ -410,16 +378,12 @@ class MiroApp(APIApplication):
410
378
  if legal_hold_id is None:
411
379
  raise ValueError("Missing required parameter 'legal_hold_id'")
412
380
  url = f"{self.base_url}/v2/orgs/{org_id}/cases/{case_id}/legal-holds/{legal_hold_id}/content-items"
413
- query_params = {
414
- k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None
415
- }
381
+ query_params = {k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None}
416
382
  response = self._get(url, params=query_params)
417
383
  response.raise_for_status()
418
384
  return response.json()
419
385
 
420
- def create_board_export_job(
421
- self, org_id, request_id=None, boardFormat=None, boardIds=None
422
- ) -> Any:
386
+ async def create_board_export_job(self, org_id, request_id=None, boardFormat=None, boardIds=None) -> Any:
423
387
  """
424
388
  Exports board data for a specified organization using the "POST" method and returns a job status.
425
389
 
@@ -446,10 +410,7 @@ class MiroApp(APIApplication):
446
410
  """
447
411
  if org_id is None:
448
412
  raise ValueError("Missing required parameter 'org_id'")
449
- request_body = {
450
- "boardFormat": boardFormat,
451
- "boardIds": boardIds,
452
- }
413
+ request_body = {"boardFormat": boardFormat, "boardIds": boardIds}
453
414
  request_body = {k: v for k, v in request_body.items() if v is not None}
454
415
  url = f"{self.base_url}/v2/orgs/{org_id}/boards/export/jobs"
455
416
  query_params = {k: v for k, v in [("request_id", request_id)] if v is not None}
@@ -457,7 +418,7 @@ class MiroApp(APIApplication):
457
418
  response.raise_for_status()
458
419
  return response.json()
459
420
 
460
- def get_board_export_job_status(self, org_id, job_id) -> Any:
421
+ async def get_board_export_job_status(self, org_id, job_id) -> Any:
461
422
  """
462
423
  Retrieves the status and details of a specified board export job for an organization using the API.
463
424
 
@@ -481,7 +442,7 @@ class MiroApp(APIApplication):
481
442
  response.raise_for_status()
482
443
  return response.json()
483
444
 
484
- def get_results_for_board_export_job(self, org_id, job_id) -> Any:
445
+ async def get_results_for_board_export_job(self, org_id, job_id) -> Any:
485
446
  """
486
447
  Retrieves the export results for a specific organization's board export job using the API.
487
448
 
@@ -505,16 +466,8 @@ class MiroApp(APIApplication):
505
466
  response.raise_for_status()
506
467
  return response.json()
507
468
 
508
- def retrieve_content_change_logs_of_board_items(
509
- self,
510
- org_id,
511
- board_ids=None,
512
- emails=None,
513
- from_=None,
514
- to=None,
515
- cursor=None,
516
- limit=None,
517
- sorting=None,
469
+ async def retrieve_content_change_logs_of_board_items(
470
+ self, org_id, board_ids=None, emails=None, from_=None, to=None, cursor=None, limit=None, sorting=None
518
471
  ) -> Any:
519
472
  """
520
473
  Retrieves organization content logs with filtering options such as board IDs, email addresses, date ranges, and pagination parameters.
@@ -557,7 +510,7 @@ class MiroApp(APIApplication):
557
510
  response.raise_for_status()
558
511
  return response.json()
559
512
 
560
- def reset_all_sessions_of_auser(self, email=None) -> Any:
513
+ async def reset_all_sessions_of_auser(self, email=None) -> Any:
561
514
  """
562
515
  Resets all active sessions for a specified user (identified by email), requiring reauthentication.
563
516
 
@@ -576,7 +529,7 @@ class MiroApp(APIApplication):
576
529
  response.raise_for_status()
577
530
  return response.json()
578
531
 
579
- def get_organization_info(self, org_id) -> Any:
532
+ async def get_organization_info(self, org_id) -> Any:
580
533
  """
581
534
  Retrieves information about an organization specified by its ID using the API endpoint "/v2/orgs/{org_id}" with the GET method.
582
535
 
@@ -597,16 +550,7 @@ class MiroApp(APIApplication):
597
550
  response.raise_for_status()
598
551
  return response.json()
599
552
 
600
- def get_organization_members(
601
- self,
602
- org_id,
603
- emails=None,
604
- role=None,
605
- license=None,
606
- active=None,
607
- cursor=None,
608
- limit=None,
609
- ) -> Any:
553
+ async def get_organization_members(self, org_id, emails=None, role=None, license=None, active=None, cursor=None, limit=None) -> Any:
610
554
  """
611
555
  Retrieves a list of members from an organization specified by `{org_id}` using query parameters for filtering by email, role, license status, and member activity, with pagination options.
612
556
 
@@ -630,21 +574,14 @@ class MiroApp(APIApplication):
630
574
  url = f"{self.base_url}/v2/orgs/{org_id}/members"
631
575
  query_params = {
632
576
  k: v
633
- for k, v in [
634
- ("emails", emails),
635
- ("role", role),
636
- ("license", license),
637
- ("active", active),
638
- ("cursor", cursor),
639
- ("limit", limit),
640
- ]
577
+ for k, v in [("emails", emails), ("role", role), ("license", license), ("active", active), ("cursor", cursor), ("limit", limit)]
641
578
  if v is not None
642
579
  }
643
580
  response = self._get(url, params=query_params)
644
581
  response.raise_for_status()
645
582
  return response.json()
646
583
 
647
- def get_organization_member(self, org_id, member_id) -> Any:
584
+ async def get_organization_member(self, org_id, member_id) -> Any:
648
585
  """
649
586
  Retrieves a specific member's details within an organization using their unique identifiers.
650
587
 
@@ -668,16 +605,7 @@ class MiroApp(APIApplication):
668
605
  response.raise_for_status()
669
606
  return response.json()
670
607
 
671
- def get_boards(
672
- self,
673
- team_id=None,
674
- project_id=None,
675
- query=None,
676
- owner=None,
677
- limit=None,
678
- offset=None,
679
- sort=None,
680
- ) -> Any:
608
+ async def get_boards(self, team_id=None, project_id=None, query=None, owner=None, limit=None, offset=None, sort=None) -> Any:
681
609
  """
682
610
  Retrieves a list of boards filtered by team, project, search query, owner, and pagination parameters.
683
611
 
@@ -714,9 +642,7 @@ class MiroApp(APIApplication):
714
642
  response.raise_for_status()
715
643
  return response.json()
716
644
 
717
- def copy_board(
718
- self, copy_from=None, description=None, name=None, policy=None, teamId=None
719
- ) -> Any:
645
+ async def copy_board(self, copy_from=None, description=None, name=None, policy=None, teamId=None) -> Any:
720
646
  """
721
647
  Updates a board's configuration (with optional source copying) and returns the updated board details.
722
648
 
@@ -754,12 +680,7 @@ class MiroApp(APIApplication):
754
680
  Tags:
755
681
  Boards
756
682
  """
757
- request_body = {
758
- "description": description,
759
- "name": name,
760
- "policy": policy,
761
- "teamId": teamId,
762
- }
683
+ request_body = {"description": description, "name": name, "policy": policy, "teamId": teamId}
763
684
  request_body = {k: v for k, v in request_body.items() if v is not None}
764
685
  url = f"{self.base_url}/v2/boards"
765
686
  query_params = {k: v for k, v in [("copy_from", copy_from)] if v is not None}
@@ -767,9 +688,7 @@ class MiroApp(APIApplication):
767
688
  response.raise_for_status()
768
689
  return response.json()
769
690
 
770
- def create_board(
771
- self, description=None, name=None, policy=None, projectId=None, teamId=None
772
- ) -> Any:
691
+ async def create_board(self, description=None, name=None, policy=None, projectId=None, teamId=None) -> Any:
773
692
  """
774
693
  Creates a new board resource and returns a success status upon completion.
775
694
 
@@ -808,13 +727,7 @@ class MiroApp(APIApplication):
808
727
  Tags:
809
728
  Boards
810
729
  """
811
- request_body = {
812
- "description": description,
813
- "name": name,
814
- "policy": policy,
815
- "projectId": projectId,
816
- "teamId": teamId,
817
- }
730
+ request_body = {"description": description, "name": name, "policy": policy, "projectId": projectId, "teamId": teamId}
818
731
  request_body = {k: v for k, v in request_body.items() if v is not None}
819
732
  url = f"{self.base_url}/v2/boards"
820
733
  query_params = {}
@@ -822,7 +735,7 @@ class MiroApp(APIApplication):
822
735
  response.raise_for_status()
823
736
  return response.json()
824
737
 
825
- def get_specific_board(self, board_id) -> Any:
738
+ async def get_specific_board(self, board_id) -> Any:
826
739
  """
827
740
  Retrieves information about a specific board identified by its ID using the API endpoint "/v2/boards/{board_id}" with the GET method.
828
741
 
@@ -843,7 +756,7 @@ class MiroApp(APIApplication):
843
756
  response.raise_for_status()
844
757
  return response.json()
845
758
 
846
- def delete_board(self, board_id) -> Any:
759
+ async def delete_board(self, board_id) -> Any:
847
760
  """
848
761
  Deletes a specific board identified by its ID using the "DELETE" method, effectively removing it from the system and returning a success status when completed.
849
762
 
@@ -864,15 +777,7 @@ class MiroApp(APIApplication):
864
777
  response.raise_for_status()
865
778
  return response.json()
866
779
 
867
- def update_board(
868
- self,
869
- board_id,
870
- description=None,
871
- name=None,
872
- policy=None,
873
- projectId=None,
874
- teamId=None,
875
- ) -> Any:
780
+ async def update_board(self, board_id, description=None, name=None, policy=None, projectId=None, teamId=None) -> Any:
876
781
  """
877
782
  Updates a Trello board identified by `{board_id}` using the Trello API and returns a status message.
878
783
 
@@ -914,13 +819,7 @@ class MiroApp(APIApplication):
914
819
  """
915
820
  if board_id is None:
916
821
  raise ValueError("Missing required parameter 'board_id'")
917
- request_body = {
918
- "description": description,
919
- "name": name,
920
- "policy": policy,
921
- "projectId": projectId,
922
- "teamId": teamId,
923
- }
822
+ request_body = {"description": description, "name": name, "policy": policy, "projectId": projectId, "teamId": teamId}
924
823
  request_body = {k: v for k, v in request_body.items() if v is not None}
925
824
  url = f"{self.base_url}/v2/boards/{board_id}"
926
825
  query_params = {}
@@ -928,9 +827,7 @@ class MiroApp(APIApplication):
928
827
  response.raise_for_status()
929
828
  return response.json()
930
829
 
931
- def create_app_card_item(
932
- self, board_id, data=None, geometry=None, parent=None, position=None, style=None
933
- ) -> Any:
830
+ async def create_app_card_item(self, board_id, data=None, geometry=None, parent=None, position=None, style=None) -> Any:
934
831
  """
935
832
  Creates a new app card on a specified board using the "POST" method, identified by the path "/v2/boards/{board_id}/app_cards".
936
833
 
@@ -1017,13 +914,7 @@ class MiroApp(APIApplication):
1017
914
  """
1018
915
  if board_id is None:
1019
916
  raise ValueError("Missing required parameter 'board_id'")
1020
- request_body = {
1021
- "data": data,
1022
- "geometry": geometry,
1023
- "parent": parent,
1024
- "position": position,
1025
- "style": style,
1026
- }
917
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position, "style": style}
1027
918
  request_body = {k: v for k, v in request_body.items() if v is not None}
1028
919
  url = f"{self.base_url}/v2/boards/{board_id}/app_cards"
1029
920
  query_params = {}
@@ -1031,7 +922,7 @@ class MiroApp(APIApplication):
1031
922
  response.raise_for_status()
1032
923
  return response.json()
1033
924
 
1034
- def get_app_card_item(self, board_id, item_id) -> Any:
925
+ async def get_app_card_item(self, board_id, item_id) -> Any:
1035
926
  """
1036
927
  Retrieves the details of an app card with the specified item ID from a board using the GET method.
1037
928
 
@@ -1055,7 +946,7 @@ class MiroApp(APIApplication):
1055
946
  response.raise_for_status()
1056
947
  return response.json()
1057
948
 
1058
- def delete_app_card_item(self, board_id, item_id) -> Any:
949
+ async def delete_app_card_item(self, board_id, item_id) -> Any:
1059
950
  """
1060
951
  Deletes an app card item from the specified board using the DELETE method and returns a success status upon completion.
1061
952
 
@@ -1079,16 +970,7 @@ class MiroApp(APIApplication):
1079
970
  response.raise_for_status()
1080
971
  return response.json()
1081
972
 
1082
- def update_app_card_item(
1083
- self,
1084
- board_id,
1085
- item_id,
1086
- data=None,
1087
- geometry=None,
1088
- parent=None,
1089
- position=None,
1090
- style=None,
1091
- ) -> Any:
973
+ async def update_app_card_item(self, board_id, item_id, data=None, geometry=None, parent=None, position=None, style=None) -> Any:
1092
974
  """
1093
975
  Updates a specific app card on the specified board using partial modifications via the PATCH method.
1094
976
 
@@ -1178,13 +1060,7 @@ class MiroApp(APIApplication):
1178
1060
  raise ValueError("Missing required parameter 'board_id'")
1179
1061
  if item_id is None:
1180
1062
  raise ValueError("Missing required parameter 'item_id'")
1181
- request_body = {
1182
- "data": data,
1183
- "geometry": geometry,
1184
- "parent": parent,
1185
- "position": position,
1186
- "style": style,
1187
- }
1063
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position, "style": style}
1188
1064
  request_body = {k: v for k, v in request_body.items() if v is not None}
1189
1065
  url = f"{self.base_url}/v2/boards/{board_id}/app_cards/{item_id}"
1190
1066
  query_params = {}
@@ -1192,9 +1068,7 @@ class MiroApp(APIApplication):
1192
1068
  response.raise_for_status()
1193
1069
  return response.json()
1194
1070
 
1195
- def create_card_item(
1196
- self, board_id, data=None, geometry=None, parent=None, position=None, style=None
1197
- ) -> Any:
1071
+ async def create_card_item(self, board_id, data=None, geometry=None, parent=None, position=None, style=None) -> Any:
1198
1072
  """
1199
1073
  Creates a new card on the specified board using the provided data and returns the operation status upon success.
1200
1074
 
@@ -1240,13 +1114,7 @@ class MiroApp(APIApplication):
1240
1114
  """
1241
1115
  if board_id is None:
1242
1116
  raise ValueError("Missing required parameter 'board_id'")
1243
- request_body = {
1244
- "data": data,
1245
- "geometry": geometry,
1246
- "parent": parent,
1247
- "position": position,
1248
- "style": style,
1249
- }
1117
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position, "style": style}
1250
1118
  request_body = {k: v for k, v in request_body.items() if v is not None}
1251
1119
  url = f"{self.base_url}/v2/boards/{board_id}/cards"
1252
1120
  query_params = {}
@@ -1254,7 +1122,7 @@ class MiroApp(APIApplication):
1254
1122
  response.raise_for_status()
1255
1123
  return response.json()
1256
1124
 
1257
- def get_card_item(self, board_id, item_id) -> Any:
1125
+ async def get_card_item(self, board_id, item_id) -> Any:
1258
1126
  """
1259
1127
  Retrieves a specific card from a board using its board ID and item ID, returning relevant details in the response.
1260
1128
 
@@ -1278,7 +1146,7 @@ class MiroApp(APIApplication):
1278
1146
  response.raise_for_status()
1279
1147
  return response.json()
1280
1148
 
1281
- def delete_card_item(self, board_id, item_id) -> Any:
1149
+ async def delete_card_item(self, board_id, item_id) -> Any:
1282
1150
  """
1283
1151
  Deletes a specific card item from a board by ID and returns a success status upon removal.
1284
1152
 
@@ -1302,16 +1170,7 @@ class MiroApp(APIApplication):
1302
1170
  response.raise_for_status()
1303
1171
  return response.json()
1304
1172
 
1305
- def update_card_item(
1306
- self,
1307
- board_id,
1308
- item_id,
1309
- data=None,
1310
- geometry=None,
1311
- parent=None,
1312
- position=None,
1313
- style=None,
1314
- ) -> Any:
1173
+ async def update_card_item(self, board_id, item_id, data=None, geometry=None, parent=None, position=None, style=None) -> Any:
1315
1174
  """
1316
1175
  Updates specified fields of a card item on a board using partial modifications.
1317
1176
 
@@ -1360,13 +1219,7 @@ class MiroApp(APIApplication):
1360
1219
  raise ValueError("Missing required parameter 'board_id'")
1361
1220
  if item_id is None:
1362
1221
  raise ValueError("Missing required parameter 'item_id'")
1363
- request_body = {
1364
- "data": data,
1365
- "geometry": geometry,
1366
- "parent": parent,
1367
- "position": position,
1368
- "style": style,
1369
- }
1222
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position, "style": style}
1370
1223
  request_body = {k: v for k, v in request_body.items() if v is not None}
1371
1224
  url = f"{self.base_url}/v2/boards/{board_id}/cards/{item_id}"
1372
1225
  query_params = {}
@@ -1374,7 +1227,7 @@ class MiroApp(APIApplication):
1374
1227
  response.raise_for_status()
1375
1228
  return response.json()
1376
1229
 
1377
- def get_connectors(self, board_id, limit=None, cursor=None) -> Any:
1230
+ async def get_connectors(self, board_id, limit=None, cursor=None) -> Any:
1378
1231
  """
1379
1232
  Retrieves a list of connectors associated with a specific board, allowing optional filtering by limit and cursor parameters.
1380
1233
 
@@ -1392,22 +1245,12 @@ class MiroApp(APIApplication):
1392
1245
  if board_id is None:
1393
1246
  raise ValueError("Missing required parameter 'board_id'")
1394
1247
  url = f"{self.base_url}/v2/boards/{board_id}/connectors"
1395
- query_params = {
1396
- k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None
1397
- }
1248
+ query_params = {k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None}
1398
1249
  response = self._get(url, params=query_params)
1399
1250
  response.raise_for_status()
1400
1251
  return response.json()
1401
1252
 
1402
- def create_connector(
1403
- self,
1404
- board_id,
1405
- captions=None,
1406
- endItem=None,
1407
- shape=None,
1408
- startItem=None,
1409
- style=None,
1410
- ) -> Any:
1253
+ async def create_connector(self, board_id, captions=None, endItem=None, shape=None, startItem=None, style=None) -> Any:
1411
1254
  """
1412
1255
  Establishes a connection to a specific board by creating a new connector using the API at the path "/v2/boards/{board_id}/connectors" with the POST method.
1413
1256
 
@@ -1561,13 +1404,7 @@ class MiroApp(APIApplication):
1561
1404
  """
1562
1405
  if board_id is None:
1563
1406
  raise ValueError("Missing required parameter 'board_id'")
1564
- request_body = {
1565
- "captions": captions,
1566
- "endItem": endItem,
1567
- "shape": shape,
1568
- "startItem": startItem,
1569
- "style": style,
1570
- }
1407
+ request_body = {"captions": captions, "endItem": endItem, "shape": shape, "startItem": startItem, "style": style}
1571
1408
  request_body = {k: v for k, v in request_body.items() if v is not None}
1572
1409
  url = f"{self.base_url}/v2/boards/{board_id}/connectors"
1573
1410
  query_params = {}
@@ -1575,7 +1412,7 @@ class MiroApp(APIApplication):
1575
1412
  response.raise_for_status()
1576
1413
  return response.json()
1577
1414
 
1578
- def get_specific_connector(self, board_id, connector_id) -> Any:
1415
+ async def get_specific_connector(self, board_id, connector_id) -> Any:
1579
1416
  """
1580
1417
  Retrieves a specific connector from a board using the provided board and connector identifiers.
1581
1418
 
@@ -1599,7 +1436,7 @@ class MiroApp(APIApplication):
1599
1436
  response.raise_for_status()
1600
1437
  return response.json()
1601
1438
 
1602
- def delete_connector(self, board_id, connector_id) -> Any:
1439
+ async def delete_connector(self, board_id, connector_id) -> Any:
1603
1440
  """
1604
1441
  Deletes a specific connector associated with a board, identified by the provided `board_id` and `connector_id`, removing it along with any related configurations.
1605
1442
 
@@ -1623,16 +1460,7 @@ class MiroApp(APIApplication):
1623
1460
  response.raise_for_status()
1624
1461
  return response.json()
1625
1462
 
1626
- def update_connector(
1627
- self,
1628
- board_id,
1629
- connector_id,
1630
- captions=None,
1631
- endItem=None,
1632
- shape=None,
1633
- startItem=None,
1634
- style=None,
1635
- ) -> Any:
1463
+ async def update_connector(self, board_id, connector_id, captions=None, endItem=None, shape=None, startItem=None, style=None) -> Any:
1636
1464
  """
1637
1465
  Updates a connector on a specific board using the PATCH method, returning a status message upon successful modification.
1638
1466
 
@@ -1789,13 +1617,7 @@ class MiroApp(APIApplication):
1789
1617
  raise ValueError("Missing required parameter 'board_id'")
1790
1618
  if connector_id is None:
1791
1619
  raise ValueError("Missing required parameter 'connector_id'")
1792
- request_body = {
1793
- "captions": captions,
1794
- "endItem": endItem,
1795
- "shape": shape,
1796
- "startItem": startItem,
1797
- "style": style,
1798
- }
1620
+ request_body = {"captions": captions, "endItem": endItem, "shape": shape, "startItem": startItem, "style": style}
1799
1621
  request_body = {k: v for k, v in request_body.items() if v is not None}
1800
1622
  url = f"{self.base_url}/v2/boards/{board_id}/connectors/{connector_id}"
1801
1623
  query_params = {}
@@ -1803,9 +1625,7 @@ class MiroApp(APIApplication):
1803
1625
  response.raise_for_status()
1804
1626
  return response.json()
1805
1627
 
1806
- def create_document_item_using_url(
1807
- self, board_id, data=None, geometry=None, parent=None, position=None
1808
- ) -> Any:
1628
+ async def create_document_item_using_url(self, board_id, data=None, geometry=None, parent=None, position=None) -> Any:
1809
1629
  """
1810
1630
  Adds a document to a specified board using the POST method and returns a status message.
1811
1631
 
@@ -1845,12 +1665,7 @@ class MiroApp(APIApplication):
1845
1665
  """
1846
1666
  if board_id is None:
1847
1667
  raise ValueError("Missing required parameter 'board_id'")
1848
- request_body = {
1849
- "data": data,
1850
- "geometry": geometry,
1851
- "parent": parent,
1852
- "position": position,
1853
- }
1668
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position}
1854
1669
  request_body = {k: v for k, v in request_body.items() if v is not None}
1855
1670
  url = f"{self.base_url}/v2/boards/{board_id}/documents"
1856
1671
  query_params = {}
@@ -1858,7 +1673,7 @@ class MiroApp(APIApplication):
1858
1673
  response.raise_for_status()
1859
1674
  return response.json()
1860
1675
 
1861
- def get_document_item(self, board_id, item_id) -> Any:
1676
+ async def get_document_item(self, board_id, item_id) -> Any:
1862
1677
  """
1863
1678
  Retrieves a specific document from a board using the provided board ID and item ID.
1864
1679
 
@@ -1882,7 +1697,7 @@ class MiroApp(APIApplication):
1882
1697
  response.raise_for_status()
1883
1698
  return response.json()
1884
1699
 
1885
- def delete_document_item(self, board_id, item_id) -> Any:
1700
+ async def delete_document_item(self, board_id, item_id) -> Any:
1886
1701
  """
1887
1702
  Deletes a specified document from a board using its unique identifier and returns a success status upon completion.
1888
1703
 
@@ -1906,9 +1721,7 @@ class MiroApp(APIApplication):
1906
1721
  response.raise_for_status()
1907
1722
  return response.json()
1908
1723
 
1909
- def update_document_item_using_url(
1910
- self, board_id, item_id, data=None, geometry=None, parent=None, position=None
1911
- ) -> Any:
1724
+ async def update_document_item_using_url(self, board_id, item_id, data=None, geometry=None, parent=None, position=None) -> Any:
1912
1725
  """
1913
1726
  Updates a specific document within a board using partial modifications and returns a success status.
1914
1727
 
@@ -1951,12 +1764,7 @@ class MiroApp(APIApplication):
1951
1764
  raise ValueError("Missing required parameter 'board_id'")
1952
1765
  if item_id is None:
1953
1766
  raise ValueError("Missing required parameter 'item_id'")
1954
- request_body = {
1955
- "data": data,
1956
- "geometry": geometry,
1957
- "parent": parent,
1958
- "position": position,
1959
- }
1767
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position}
1960
1768
  request_body = {k: v for k, v in request_body.items() if v is not None}
1961
1769
  url = f"{self.base_url}/v2/boards/{board_id}/documents/{item_id}"
1962
1770
  query_params = {}
@@ -1964,9 +1772,7 @@ class MiroApp(APIApplication):
1964
1772
  response.raise_for_status()
1965
1773
  return response.json()
1966
1774
 
1967
- def create_embed_item(
1968
- self, board_id, data=None, geometry=None, parent=None, position=None
1969
- ) -> Any:
1775
+ async def create_embed_item(self, board_id, data=None, geometry=None, parent=None, position=None) -> Any:
1970
1776
  """
1971
1777
  Creates an embed associated with a specific board, returning the result upon successful creation.
1972
1778
 
@@ -2006,12 +1812,7 @@ class MiroApp(APIApplication):
2006
1812
  """
2007
1813
  if board_id is None:
2008
1814
  raise ValueError("Missing required parameter 'board_id'")
2009
- request_body = {
2010
- "data": data,
2011
- "geometry": geometry,
2012
- "parent": parent,
2013
- "position": position,
2014
- }
1815
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position}
2015
1816
  request_body = {k: v for k, v in request_body.items() if v is not None}
2016
1817
  url = f"{self.base_url}/v2/boards/{board_id}/embeds"
2017
1818
  query_params = {}
@@ -2019,7 +1820,7 @@ class MiroApp(APIApplication):
2019
1820
  response.raise_for_status()
2020
1821
  return response.json()
2021
1822
 
2022
- def get_embed_item(self, board_id, item_id) -> Any:
1823
+ async def get_embed_item(self, board_id, item_id) -> Any:
2023
1824
  """
2024
1825
  Retrieves an embedded item from a specified board using the provided board and item identifiers.
2025
1826
 
@@ -2043,7 +1844,7 @@ class MiroApp(APIApplication):
2043
1844
  response.raise_for_status()
2044
1845
  return response.json()
2045
1846
 
2046
- def delete_embed_item(self, board_id, item_id) -> Any:
1847
+ async def delete_embed_item(self, board_id, item_id) -> Any:
2047
1848
  """
2048
1849
  Deletes the specified embed item from the board by its ID and returns a success status upon removal.
2049
1850
 
@@ -2067,9 +1868,7 @@ class MiroApp(APIApplication):
2067
1868
  response.raise_for_status()
2068
1869
  return response.json()
2069
1870
 
2070
- def update_embed_item(
2071
- self, board_id, item_id, data=None, geometry=None, parent=None, position=None
2072
- ) -> Any:
1871
+ async def update_embed_item(self, board_id, item_id, data=None, geometry=None, parent=None, position=None) -> Any:
2073
1872
  """
2074
1873
  Updates an embedded item within a specified board and returns the updated result.
2075
1874
 
@@ -2112,12 +1911,7 @@ class MiroApp(APIApplication):
2112
1911
  raise ValueError("Missing required parameter 'board_id'")
2113
1912
  if item_id is None:
2114
1913
  raise ValueError("Missing required parameter 'item_id'")
2115
- request_body = {
2116
- "data": data,
2117
- "geometry": geometry,
2118
- "parent": parent,
2119
- "position": position,
2120
- }
1914
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position}
2121
1915
  request_body = {k: v for k, v in request_body.items() if v is not None}
2122
1916
  url = f"{self.base_url}/v2/boards/{board_id}/embeds/{item_id}"
2123
1917
  query_params = {}
@@ -2125,9 +1919,7 @@ class MiroApp(APIApplication):
2125
1919
  response.raise_for_status()
2126
1920
  return response.json()
2127
1921
 
2128
- def create_image_item_using_url(
2129
- self, board_id, data=None, geometry=None, parent=None, position=None
2130
- ) -> Any:
1922
+ async def create_image_item_using_url(self, board_id, data=None, geometry=None, parent=None, position=None) -> Any:
2131
1923
  """
2132
1924
  Uploads an image to a specified board and returns success status upon completion.
2133
1925
 
@@ -2167,12 +1959,7 @@ class MiroApp(APIApplication):
2167
1959
  """
2168
1960
  if board_id is None:
2169
1961
  raise ValueError("Missing required parameter 'board_id'")
2170
- request_body = {
2171
- "data": data,
2172
- "geometry": geometry,
2173
- "parent": parent,
2174
- "position": position,
2175
- }
1962
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position}
2176
1963
  request_body = {k: v for k, v in request_body.items() if v is not None}
2177
1964
  url = f"{self.base_url}/v2/boards/{board_id}/images"
2178
1965
  query_params = {}
@@ -2180,7 +1967,7 @@ class MiroApp(APIApplication):
2180
1967
  response.raise_for_status()
2181
1968
  return response.json()
2182
1969
 
2183
- def get_image_item(self, board_id, item_id) -> Any:
1970
+ async def get_image_item(self, board_id, item_id) -> Any:
2184
1971
  """
2185
1972
  Retrieves a specific image item from a designated board using the provided identifiers.
2186
1973
 
@@ -2204,7 +1991,7 @@ class MiroApp(APIApplication):
2204
1991
  response.raise_for_status()
2205
1992
  return response.json()
2206
1993
 
2207
- def delete_image_item(self, board_id, item_id) -> Any:
1994
+ async def delete_image_item(self, board_id, item_id) -> Any:
2208
1995
  """
2209
1996
  Deletes a specific image from a specified board.
2210
1997
 
@@ -2228,9 +2015,7 @@ class MiroApp(APIApplication):
2228
2015
  response.raise_for_status()
2229
2016
  return response.json()
2230
2017
 
2231
- def update_image_item_using_url(
2232
- self, board_id, item_id, data=None, geometry=None, parent=None, position=None
2233
- ) -> Any:
2018
+ async def update_image_item_using_url(self, board_id, item_id, data=None, geometry=None, parent=None, position=None) -> Any:
2234
2019
  """
2235
2020
  Updates a specific image in a board using the PATCH method, applying partial modifications to the image's properties.
2236
2021
 
@@ -2273,12 +2058,7 @@ class MiroApp(APIApplication):
2273
2058
  raise ValueError("Missing required parameter 'board_id'")
2274
2059
  if item_id is None:
2275
2060
  raise ValueError("Missing required parameter 'item_id'")
2276
- request_body = {
2277
- "data": data,
2278
- "geometry": geometry,
2279
- "parent": parent,
2280
- "position": position,
2281
- }
2061
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position}
2282
2062
  request_body = {k: v for k, v in request_body.items() if v is not None}
2283
2063
  url = f"{self.base_url}/v2/boards/{board_id}/images/{item_id}"
2284
2064
  query_params = {}
@@ -2286,7 +2066,7 @@ class MiroApp(APIApplication):
2286
2066
  response.raise_for_status()
2287
2067
  return response.json()
2288
2068
 
2289
- def get_items_on_board(self, board_id, limit=None, type=None, cursor=None) -> Any:
2069
+ async def get_items_on_board(self, board_id, limit=None, type=None, cursor=None) -> Any:
2290
2070
  """
2291
2071
  Retrieves a paginated list of items from a specified board using query parameters for limit, type, and cursor-based pagination.
2292
2072
 
@@ -2305,16 +2085,12 @@ class MiroApp(APIApplication):
2305
2085
  if board_id is None:
2306
2086
  raise ValueError("Missing required parameter 'board_id'")
2307
2087
  url = f"{self.base_url}/v2/boards/{board_id}/items"
2308
- query_params = {
2309
- k: v
2310
- for k, v in [("limit", limit), ("type", type), ("cursor", cursor)]
2311
- if v is not None
2312
- }
2088
+ query_params = {k: v for k, v in [("limit", limit), ("type", type), ("cursor", cursor)] if v is not None}
2313
2089
  response = self._get(url, params=query_params)
2314
2090
  response.raise_for_status()
2315
2091
  return response.json()
2316
2092
 
2317
- def get_specific_item_on_board(self, board_id, item_id) -> Any:
2093
+ async def get_specific_item_on_board(self, board_id, item_id) -> Any:
2318
2094
  """
2319
2095
  Retrieves details of a specific item from a board using the GET method and returns the data in response.
2320
2096
 
@@ -2338,7 +2114,7 @@ class MiroApp(APIApplication):
2338
2114
  response.raise_for_status()
2339
2115
  return response.json()
2340
2116
 
2341
- def delete_item(self, board_id, item_id) -> Any:
2117
+ async def delete_item(self, board_id, item_id) -> Any:
2342
2118
  """
2343
2119
  Deletes a specific item from a board by its ID and returns a success status.
2344
2120
 
@@ -2362,9 +2138,7 @@ class MiroApp(APIApplication):
2362
2138
  response.raise_for_status()
2363
2139
  return response.json()
2364
2140
 
2365
- def update_item_position_or_parent(
2366
- self, board_id, item_id, parent=None, position=None
2367
- ) -> Any:
2141
+ async def update_item_position_or_parent(self, board_id, item_id, parent=None, position=None) -> Any:
2368
2142
  """
2369
2143
  Partially updates an existing item on a board using the PATCH method, allowing for specific modifications to resource properties.
2370
2144
 
@@ -2396,10 +2170,7 @@ class MiroApp(APIApplication):
2396
2170
  raise ValueError("Missing required parameter 'board_id'")
2397
2171
  if item_id is None:
2398
2172
  raise ValueError("Missing required parameter 'item_id'")
2399
- request_body = {
2400
- "parent": parent,
2401
- "position": position,
2402
- }
2173
+ request_body = {"parent": parent, "position": position}
2403
2174
  request_body = {k: v for k, v in request_body.items() if v is not None}
2404
2175
  url = f"{self.base_url}/v2/boards/{board_id}/items/{item_id}"
2405
2176
  query_params = {}
@@ -2407,14 +2178,7 @@ class MiroApp(APIApplication):
2407
2178
  response.raise_for_status()
2408
2179
  return response.json()
2409
2180
 
2410
- def get_items_within_frame(
2411
- self,
2412
- board_id_PlatformContainers,
2413
- parent_item_id=None,
2414
- limit=None,
2415
- type=None,
2416
- cursor=None,
2417
- ) -> Any:
2181
+ async def get_items_within_frame(self, board_id_PlatformContainers, parent_item_id=None, limit=None, type=None, cursor=None) -> Any:
2418
2182
  """
2419
2183
  Retrieves a paginated list of items from a specified board, filtered by parent item ID and type, using cursor-based pagination.
2420
2184
 
@@ -2435,20 +2199,13 @@ class MiroApp(APIApplication):
2435
2199
  raise ValueError("Missing required parameter 'board_id_PlatformContainers'")
2436
2200
  url = f"{self.base_url}/v2/boards/{board_id_PlatformContainers}/items"
2437
2201
  query_params = {
2438
- k: v
2439
- for k, v in [
2440
- ("parent_item_id", parent_item_id),
2441
- ("limit", limit),
2442
- ("type", type),
2443
- ("cursor", cursor),
2444
- ]
2445
- if v is not None
2202
+ k: v for k, v in [("parent_item_id", parent_item_id), ("limit", limit), ("type", type), ("cursor", cursor)] if v is not None
2446
2203
  }
2447
2204
  response = self._get(url, params=query_params)
2448
2205
  response.raise_for_status()
2449
2206
  return response.json()
2450
2207
 
2451
- def get_specific_item_on_board1(self, board_id, item_id) -> Any:
2208
+ async def get_specific_item_on_board1(self, board_id, item_id) -> Any:
2452
2209
  """
2453
2210
  Retrieves a specific item from a board using the specified identifiers.
2454
2211
 
@@ -2472,7 +2229,7 @@ class MiroApp(APIApplication):
2472
2229
  response.raise_for_status()
2473
2230
  return response.json()
2474
2231
 
2475
- def delete_item1(self, board_id, item_id) -> Any:
2232
+ async def delete_item1(self, board_id, item_id) -> Any:
2476
2233
  """
2477
2234
  Deletes a specific item from a Miro board using the "DELETE" method.
2478
2235
 
@@ -2496,7 +2253,7 @@ class MiroApp(APIApplication):
2496
2253
  response.raise_for_status()
2497
2254
  return response.json()
2498
2255
 
2499
- def get_all_board_members(self, board_id, limit=None, offset=None) -> Any:
2256
+ async def get_all_board_members(self, board_id, limit=None, offset=None) -> Any:
2500
2257
  """
2501
2258
  Retrieves a paginated list of board members using query parameters for limit and offset, returning a 200 status on success.
2502
2259
 
@@ -2514,14 +2271,12 @@ class MiroApp(APIApplication):
2514
2271
  if board_id is None:
2515
2272
  raise ValueError("Missing required parameter 'board_id'")
2516
2273
  url = f"{self.base_url}/v2/boards/{board_id}/members"
2517
- query_params = {
2518
- k: v for k, v in [("limit", limit), ("offset", offset)] if v is not None
2519
- }
2274
+ query_params = {k: v for k, v in [("limit", limit), ("offset", offset)] if v is not None}
2520
2275
  response = self._get(url, params=query_params)
2521
2276
  response.raise_for_status()
2522
2277
  return response.json()
2523
2278
 
2524
- def share_board(self, board_id, emails=None, message=None, role=None) -> Any:
2279
+ async def share_board(self, board_id, emails=None, message=None, role=None) -> Any:
2525
2280
  """
2526
2281
  Adds a new member to a board using the API at path "/v2/boards/{board_id}/members" and returns a successful status message upon completion.
2527
2282
 
@@ -2549,11 +2304,7 @@ class MiroApp(APIApplication):
2549
2304
  """
2550
2305
  if board_id is None:
2551
2306
  raise ValueError("Missing required parameter 'board_id'")
2552
- request_body = {
2553
- "emails": emails,
2554
- "message": message,
2555
- "role": role,
2556
- }
2307
+ request_body = {"emails": emails, "message": message, "role": role}
2557
2308
  request_body = {k: v for k, v in request_body.items() if v is not None}
2558
2309
  url = f"{self.base_url}/v2/boards/{board_id}/members"
2559
2310
  query_params = {}
@@ -2561,7 +2312,7 @@ class MiroApp(APIApplication):
2561
2312
  response.raise_for_status()
2562
2313
  return response.json()
2563
2314
 
2564
- def get_specific_board_member(self, board_id, board_member_id) -> Any:
2315
+ async def get_specific_board_member(self, board_id, board_member_id) -> Any:
2565
2316
  """
2566
2317
  Retrieves information about a specific board member using the "GET" method, providing details associated with the member identified by `{board_member_id}` within the board identified by `{board_id}`.
2567
2318
 
@@ -2585,7 +2336,7 @@ class MiroApp(APIApplication):
2585
2336
  response.raise_for_status()
2586
2337
  return response.json()
2587
2338
 
2588
- def remove_board_member(self, board_id, board_member_id) -> Any:
2339
+ async def remove_board_member(self, board_id, board_member_id) -> Any:
2589
2340
  """
2590
2341
  Removes a user from a board using the Miro API and returns a successful response upon completion.
2591
2342
 
@@ -2609,7 +2360,7 @@ class MiroApp(APIApplication):
2609
2360
  response.raise_for_status()
2610
2361
  return response.json()
2611
2362
 
2612
- def update_board_member(self, board_id, board_member_id, role=None) -> Any:
2363
+ async def update_board_member(self, board_id, board_member_id, role=None) -> Any:
2613
2364
  """
2614
2365
  Updates a board member's details for the specified board using the PATCH method.
2615
2366
 
@@ -2634,9 +2385,7 @@ class MiroApp(APIApplication):
2634
2385
  raise ValueError("Missing required parameter 'board_id'")
2635
2386
  if board_member_id is None:
2636
2387
  raise ValueError("Missing required parameter 'board_member_id'")
2637
- request_body = {
2638
- "role": role,
2639
- }
2388
+ request_body = {"role": role}
2640
2389
  request_body = {k: v for k, v in request_body.items() if v is not None}
2641
2390
  url = f"{self.base_url}/v2/boards/{board_id}/members/{board_member_id}"
2642
2391
  query_params = {}
@@ -2644,9 +2393,7 @@ class MiroApp(APIApplication):
2644
2393
  response.raise_for_status()
2645
2394
  return response.json()
2646
2395
 
2647
- def create_shape_item(
2648
- self, board_id, data=None, geometry=None, parent=None, position=None, style=None
2649
- ) -> Any:
2396
+ async def create_shape_item(self, board_id, data=None, geometry=None, parent=None, position=None, style=None) -> Any:
2650
2397
  """
2651
2398
  Creates a new shape on a specified board using the provided data.
2652
2399
 
@@ -2700,13 +2447,7 @@ class MiroApp(APIApplication):
2700
2447
  """
2701
2448
  if board_id is None:
2702
2449
  raise ValueError("Missing required parameter 'board_id'")
2703
- request_body = {
2704
- "data": data,
2705
- "geometry": geometry,
2706
- "parent": parent,
2707
- "position": position,
2708
- "style": style,
2709
- }
2450
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position, "style": style}
2710
2451
  request_body = {k: v for k, v in request_body.items() if v is not None}
2711
2452
  url = f"{self.base_url}/v2/boards/{board_id}/shapes"
2712
2453
  query_params = {}
@@ -2714,7 +2455,7 @@ class MiroApp(APIApplication):
2714
2455
  response.raise_for_status()
2715
2456
  return response.json()
2716
2457
 
2717
- def get_shape_item(self, board_id, item_id) -> Any:
2458
+ async def get_shape_item(self, board_id, item_id) -> Any:
2718
2459
  """
2719
2460
  Retrieves a specific shape from the specified board.
2720
2461
 
@@ -2738,7 +2479,7 @@ class MiroApp(APIApplication):
2738
2479
  response.raise_for_status()
2739
2480
  return response.json()
2740
2481
 
2741
- def delete_shape_item(self, board_id, item_id) -> Any:
2482
+ async def delete_shape_item(self, board_id, item_id) -> Any:
2742
2483
  """
2743
2484
  Deletes a specified shape from a board using the provided board and item identifiers.
2744
2485
 
@@ -2762,16 +2503,7 @@ class MiroApp(APIApplication):
2762
2503
  response.raise_for_status()
2763
2504
  return response.json()
2764
2505
 
2765
- def update_shape_item(
2766
- self,
2767
- board_id,
2768
- item_id,
2769
- data=None,
2770
- geometry=None,
2771
- parent=None,
2772
- position=None,
2773
- style=None,
2774
- ) -> Any:
2506
+ async def update_shape_item(self, board_id, item_id, data=None, geometry=None, parent=None, position=None, style=None) -> Any:
2775
2507
  """
2776
2508
  Updates a specific shape on a board by its ID and returns a success status.
2777
2509
 
@@ -2828,13 +2560,7 @@ class MiroApp(APIApplication):
2828
2560
  raise ValueError("Missing required parameter 'board_id'")
2829
2561
  if item_id is None:
2830
2562
  raise ValueError("Missing required parameter 'item_id'")
2831
- request_body = {
2832
- "data": data,
2833
- "geometry": geometry,
2834
- "parent": parent,
2835
- "position": position,
2836
- "style": style,
2837
- }
2563
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position, "style": style}
2838
2564
  request_body = {k: v for k, v in request_body.items() if v is not None}
2839
2565
  url = f"{self.base_url}/v2/boards/{board_id}/shapes/{item_id}"
2840
2566
  query_params = {}
@@ -2842,9 +2568,7 @@ class MiroApp(APIApplication):
2842
2568
  response.raise_for_status()
2843
2569
  return response.json()
2844
2570
 
2845
- def create_sticky_note_item(
2846
- self, board_id, data=None, geometry=None, parent=None, position=None, style=None
2847
- ) -> Any:
2571
+ async def create_sticky_note_item(self, board_id, data=None, geometry=None, parent=None, position=None, style=None) -> Any:
2848
2572
  """
2849
2573
  Creates a new sticky note on a specific board using the "POST" method and returns a successful status message when the operation is completed.
2850
2574
 
@@ -2889,13 +2613,7 @@ class MiroApp(APIApplication):
2889
2613
  """
2890
2614
  if board_id is None:
2891
2615
  raise ValueError("Missing required parameter 'board_id'")
2892
- request_body = {
2893
- "data": data,
2894
- "geometry": geometry,
2895
- "parent": parent,
2896
- "position": position,
2897
- "style": style,
2898
- }
2616
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position, "style": style}
2899
2617
  request_body = {k: v for k, v in request_body.items() if v is not None}
2900
2618
  url = f"{self.base_url}/v2/boards/{board_id}/sticky_notes"
2901
2619
  query_params = {}
@@ -2903,7 +2621,7 @@ class MiroApp(APIApplication):
2903
2621
  response.raise_for_status()
2904
2622
  return response.json()
2905
2623
 
2906
- def get_sticky_note_item(self, board_id, item_id) -> Any:
2624
+ async def get_sticky_note_item(self, board_id, item_id) -> Any:
2907
2625
  """
2908
2626
  Retrieves a specific sticky note from a board using the provided board and item IDs.
2909
2627
 
@@ -2927,7 +2645,7 @@ class MiroApp(APIApplication):
2927
2645
  response.raise_for_status()
2928
2646
  return response.json()
2929
2647
 
2930
- def delete_sticky_note_item(self, board_id, item_id) -> Any:
2648
+ async def delete_sticky_note_item(self, board_id, item_id) -> Any:
2931
2649
  """
2932
2650
  Deletes a specific sticky note from a board using the DELETE method, returning a successful status message.
2933
2651
 
@@ -2951,16 +2669,7 @@ class MiroApp(APIApplication):
2951
2669
  response.raise_for_status()
2952
2670
  return response.json()
2953
2671
 
2954
- def update_sticky_note_item(
2955
- self,
2956
- board_id,
2957
- item_id,
2958
- data=None,
2959
- geometry=None,
2960
- parent=None,
2961
- position=None,
2962
- style=None,
2963
- ) -> Any:
2672
+ async def update_sticky_note_item(self, board_id, item_id, data=None, geometry=None, parent=None, position=None, style=None) -> Any:
2964
2673
  """
2965
2674
  Updates a sticky note on the specified board using partial modifications and returns a success status.
2966
2675
 
@@ -3008,13 +2717,7 @@ class MiroApp(APIApplication):
3008
2717
  raise ValueError("Missing required parameter 'board_id'")
3009
2718
  if item_id is None:
3010
2719
  raise ValueError("Missing required parameter 'item_id'")
3011
- request_body = {
3012
- "data": data,
3013
- "geometry": geometry,
3014
- "parent": parent,
3015
- "position": position,
3016
- "style": style,
3017
- }
2720
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position, "style": style}
3018
2721
  request_body = {k: v for k, v in request_body.items() if v is not None}
3019
2722
  url = f"{self.base_url}/v2/boards/{board_id}/sticky_notes/{item_id}"
3020
2723
  query_params = {}
@@ -3022,9 +2725,7 @@ class MiroApp(APIApplication):
3022
2725
  response.raise_for_status()
3023
2726
  return response.json()
3024
2727
 
3025
- def create_text_item(
3026
- self, board_id, data=None, geometry=None, parent=None, position=None, style=None
3027
- ) -> Any:
2728
+ async def create_text_item(self, board_id, data=None, geometry=None, parent=None, position=None, style=None) -> Any:
3028
2729
  """
3029
2730
  Creates a new text entry on a specified board and returns a success status.
3030
2731
 
@@ -3071,13 +2772,7 @@ class MiroApp(APIApplication):
3071
2772
  """
3072
2773
  if board_id is None:
3073
2774
  raise ValueError("Missing required parameter 'board_id'")
3074
- request_body = {
3075
- "data": data,
3076
- "geometry": geometry,
3077
- "parent": parent,
3078
- "position": position,
3079
- "style": style,
3080
- }
2775
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position, "style": style}
3081
2776
  request_body = {k: v for k, v in request_body.items() if v is not None}
3082
2777
  url = f"{self.base_url}/v2/boards/{board_id}/texts"
3083
2778
  query_params = {}
@@ -3085,7 +2780,7 @@ class MiroApp(APIApplication):
3085
2780
  response.raise_for_status()
3086
2781
  return response.json()
3087
2782
 
3088
- def get_text_item(self, board_id, item_id) -> Any:
2783
+ async def get_text_item(self, board_id, item_id) -> Any:
3089
2784
  """
3090
2785
  Retrieves a specific text item from a board using the provided board and item identifiers.
3091
2786
 
@@ -3109,7 +2804,7 @@ class MiroApp(APIApplication):
3109
2804
  response.raise_for_status()
3110
2805
  return response.json()
3111
2806
 
3112
- def delete_text_item(self, board_id, item_id) -> Any:
2807
+ async def delete_text_item(self, board_id, item_id) -> Any:
3113
2808
  """
3114
2809
  Deletes a specific text item from a board using the provided board and item identifiers.
3115
2810
 
@@ -3133,16 +2828,7 @@ class MiroApp(APIApplication):
3133
2828
  response.raise_for_status()
3134
2829
  return response.json()
3135
2830
 
3136
- def update_text_item(
3137
- self,
3138
- board_id,
3139
- item_id,
3140
- data=None,
3141
- geometry=None,
3142
- parent=None,
3143
- position=None,
3144
- style=None,
3145
- ) -> Any:
2831
+ async def update_text_item(self, board_id, item_id, data=None, geometry=None, parent=None, position=None, style=None) -> Any:
3146
2832
  """
3147
2833
  Updates a specific text item on a board using the PATCH method, allowing partial modifications of the item's properties.
3148
2834
 
@@ -3192,13 +2878,7 @@ class MiroApp(APIApplication):
3192
2878
  raise ValueError("Missing required parameter 'board_id'")
3193
2879
  if item_id is None:
3194
2880
  raise ValueError("Missing required parameter 'item_id'")
3195
- request_body = {
3196
- "data": data,
3197
- "geometry": geometry,
3198
- "parent": parent,
3199
- "position": position,
3200
- "style": style,
3201
- }
2881
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position, "style": style}
3202
2882
  request_body = {k: v for k, v in request_body.items() if v is not None}
3203
2883
  url = f"{self.base_url}/v2/boards/{board_id}/texts/{item_id}"
3204
2884
  query_params = {}
@@ -3206,7 +2886,7 @@ class MiroApp(APIApplication):
3206
2886
  response.raise_for_status()
3207
2887
  return response.json()
3208
2888
 
3209
- def create_items_in_bulk(self, board_id, items=None) -> Any:
2889
+ async def create_items_in_bulk(self, board_id, items=None) -> Any:
3210
2890
  """
3211
2891
  Bulk updates or creates items on a specified board using the API endpoint "/v2/boards/{board_id}/items/bulk" via the POST method.
3212
2892
 
@@ -3221,7 +2901,6 @@ class MiroApp(APIApplication):
3221
2901
  """
3222
2902
  if board_id is None:
3223
2903
  raise ValueError("Missing required parameter 'board_id'")
3224
- # Use items array directly as request body
3225
2904
  request_body = items
3226
2905
  url = f"{self.base_url}/v2/boards/{board_id}/items/bulk"
3227
2906
  query_params = {}
@@ -3229,9 +2908,7 @@ class MiroApp(APIApplication):
3229
2908
  response.raise_for_status()
3230
2909
  return response.json()
3231
2910
 
3232
- def create_frame(
3233
- self, board_id, data=None, geometry=None, position=None, style=None
3234
- ) -> Any:
2911
+ async def create_frame(self, board_id, data=None, geometry=None, position=None, style=None) -> Any:
3235
2912
  """
3236
2913
  Creates a new frame in the specified board using the API and returns a successful response.
3237
2914
 
@@ -3272,12 +2949,7 @@ class MiroApp(APIApplication):
3272
2949
  """
3273
2950
  if board_id is None:
3274
2951
  raise ValueError("Missing required parameter 'board_id'")
3275
- request_body = {
3276
- "data": data,
3277
- "geometry": geometry,
3278
- "position": position,
3279
- "style": style,
3280
- }
2952
+ request_body = {"data": data, "geometry": geometry, "position": position, "style": style}
3281
2953
  request_body = {k: v for k, v in request_body.items() if v is not None}
3282
2954
  url = f"{self.base_url}/v2/boards/{board_id}/frames"
3283
2955
  query_params = {}
@@ -3285,7 +2957,7 @@ class MiroApp(APIApplication):
3285
2957
  response.raise_for_status()
3286
2958
  return response.json()
3287
2959
 
3288
- def get_frame(self, board_id, item_id) -> Any:
2960
+ async def get_frame(self, board_id, item_id) -> Any:
3289
2961
  """
3290
2962
  Retrieves the details of a specific frame within a board using the "GET" method.
3291
2963
 
@@ -3309,7 +2981,7 @@ class MiroApp(APIApplication):
3309
2981
  response.raise_for_status()
3310
2982
  return response.json()
3311
2983
 
3312
- def delete_frame(self, board_id, item_id) -> Any:
2984
+ async def delete_frame(self, board_id, item_id) -> Any:
3313
2985
  """
3314
2986
  Deletes a frame with the specified item ID from a board with the given board ID.
3315
2987
 
@@ -3333,9 +3005,7 @@ class MiroApp(APIApplication):
3333
3005
  response.raise_for_status()
3334
3006
  return response.json()
3335
3007
 
3336
- def update_frame(
3337
- self, board_id, item_id, data=None, geometry=None, position=None, style=None
3338
- ) -> Any:
3008
+ async def update_frame(self, board_id, item_id, data=None, geometry=None, position=None, style=None) -> Any:
3339
3009
  """
3340
3010
  Updates specific frame properties for a board using partial modifications and returns a success status.
3341
3011
 
@@ -3379,12 +3049,7 @@ class MiroApp(APIApplication):
3379
3049
  raise ValueError("Missing required parameter 'board_id'")
3380
3050
  if item_id is None:
3381
3051
  raise ValueError("Missing required parameter 'item_id'")
3382
- request_body = {
3383
- "data": data,
3384
- "geometry": geometry,
3385
- "position": position,
3386
- "style": style,
3387
- }
3052
+ request_body = {"data": data, "geometry": geometry, "position": position, "style": style}
3388
3053
  request_body = {k: v for k, v in request_body.items() if v is not None}
3389
3054
  url = f"{self.base_url}/v2/boards/{board_id}/frames/{item_id}"
3390
3055
  query_params = {}
@@ -3392,7 +3057,7 @@ class MiroApp(APIApplication):
3392
3057
  response.raise_for_status()
3393
3058
  return response.json()
3394
3059
 
3395
- def get_app_metrics(self, app_id, startDate=None, endDate=None, period=None) -> Any:
3060
+ async def get_app_metrics(self, app_id, startDate=None, endDate=None, period=None) -> Any:
3396
3061
  """
3397
3062
  Retrieves application metrics for a specified time period using the `startDate`, `endDate`, and `period` query parameters.
3398
3063
 
@@ -3411,20 +3076,12 @@ class MiroApp(APIApplication):
3411
3076
  if app_id is None:
3412
3077
  raise ValueError("Missing required parameter 'app_id'")
3413
3078
  url = f"{self.base_url}/v2-experimental/apps/{app_id}/metrics"
3414
- query_params = {
3415
- k: v
3416
- for k, v in [
3417
- ("startDate", startDate),
3418
- ("endDate", endDate),
3419
- ("period", period),
3420
- ]
3421
- if v is not None
3422
- }
3079
+ query_params = {k: v for k, v in [("startDate", startDate), ("endDate", endDate), ("period", period)] if v is not None}
3423
3080
  response = self._get(url, params=query_params)
3424
3081
  response.raise_for_status()
3425
3082
  return response.json()
3426
3083
 
3427
- def get_total_app_metrics(self, app_id) -> Any:
3084
+ async def get_total_app_metrics(self, app_id) -> Any:
3428
3085
  """
3429
3086
  Retrieves total metrics for a specified application by its ID.
3430
3087
 
@@ -3445,9 +3102,7 @@ class MiroApp(APIApplication):
3445
3102
  response.raise_for_status()
3446
3103
  return response.json()
3447
3104
 
3448
- def create_webhook_subscription(
3449
- self, boardId=None, callbackUrl=None, status=None
3450
- ) -> Any:
3105
+ async def create_webhook_subscription(self, boardId=None, callbackUrl=None, status=None) -> Any:
3451
3106
  """
3452
3107
  Creates a board subscription webhook and returns a success status upon configuration.
3453
3108
 
@@ -3470,11 +3125,7 @@ class MiroApp(APIApplication):
3470
3125
  Tags:
3471
3126
  Webhooks (experimental)
3472
3127
  """
3473
- request_body = {
3474
- "boardId": boardId,
3475
- "callbackUrl": callbackUrl,
3476
- "status": status,
3477
- }
3128
+ request_body = {"boardId": boardId, "callbackUrl": callbackUrl, "status": status}
3478
3129
  request_body = {k: v for k, v in request_body.items() if v is not None}
3479
3130
  url = f"{self.base_url}/v2-experimental/webhooks/board_subscriptions"
3480
3131
  query_params = {}
@@ -3482,9 +3133,7 @@ class MiroApp(APIApplication):
3482
3133
  response.raise_for_status()
3483
3134
  return response.json()
3484
3135
 
3485
- def update_webhook_subscription(
3486
- self, subscription_id, callbackUrl=None, status=None
3487
- ) -> Any:
3136
+ async def update_webhook_subscription(self, subscription_id, callbackUrl=None, status=None) -> Any:
3488
3137
  """
3489
3138
  Updates a webhook subscription for a board using the GitHub API and returns a success status.
3490
3139
 
@@ -3508,10 +3157,7 @@ class MiroApp(APIApplication):
3508
3157
  """
3509
3158
  if subscription_id is None:
3510
3159
  raise ValueError("Missing required parameter 'subscription_id'")
3511
- request_body = {
3512
- "callbackUrl": callbackUrl,
3513
- "status": status,
3514
- }
3160
+ request_body = {"callbackUrl": callbackUrl, "status": status}
3515
3161
  request_body = {k: v for k, v in request_body.items() if v is not None}
3516
3162
  url = f"{self.base_url}/v2-experimental/webhooks/board_subscriptions/{subscription_id}"
3517
3163
  query_params = {}
@@ -3519,7 +3165,7 @@ class MiroApp(APIApplication):
3519
3165
  response.raise_for_status()
3520
3166
  return response.json()
3521
3167
 
3522
- def get_webhook_subscriptions(self, limit=None, cursor=None) -> Any:
3168
+ async def get_webhook_subscriptions(self, limit=None, cursor=None) -> Any:
3523
3169
  """
3524
3170
  Retrieves a paginated list of webhook subscriptions using cursor-based pagination.
3525
3171
 
@@ -3534,14 +3180,12 @@ class MiroApp(APIApplication):
3534
3180
  Webhooks (experimental)
3535
3181
  """
3536
3182
  url = f"{self.base_url}/v2-experimental/webhooks/subscriptions"
3537
- query_params = {
3538
- k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None
3539
- }
3183
+ query_params = {k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None}
3540
3184
  response = self._get(url, params=query_params)
3541
3185
  response.raise_for_status()
3542
3186
  return response.json()
3543
3187
 
3544
- def get_specific_webhook_subscription(self, subscription_id) -> Any:
3188
+ async def get_specific_webhook_subscription(self, subscription_id) -> Any:
3545
3189
  """
3546
3190
  Retrieves details about a specific webhook subscription identified by the provided subscription ID using the GET method.
3547
3191
 
@@ -3556,15 +3200,13 @@ class MiroApp(APIApplication):
3556
3200
  """
3557
3201
  if subscription_id is None:
3558
3202
  raise ValueError("Missing required parameter 'subscription_id'")
3559
- url = (
3560
- f"{self.base_url}/v2-experimental/webhooks/subscriptions/{subscription_id}"
3561
- )
3203
+ url = f"{self.base_url}/v2-experimental/webhooks/subscriptions/{subscription_id}"
3562
3204
  query_params = {}
3563
3205
  response = self._get(url, params=query_params)
3564
3206
  response.raise_for_status()
3565
3207
  return response.json()
3566
3208
 
3567
- def delete_webhook_subscription(self, subscription_id) -> Any:
3209
+ async def delete_webhook_subscription(self, subscription_id) -> Any:
3568
3210
  """
3569
3211
  Deletes a webhook subscription by a specified `subscription_id`, stopping the delivery of notifications associated with that subscription.
3570
3212
 
@@ -3579,15 +3221,13 @@ class MiroApp(APIApplication):
3579
3221
  """
3580
3222
  if subscription_id is None:
3581
3223
  raise ValueError("Missing required parameter 'subscription_id'")
3582
- url = (
3583
- f"{self.base_url}/v2-experimental/webhooks/subscriptions/{subscription_id}"
3584
- )
3224
+ url = f"{self.base_url}/v2-experimental/webhooks/subscriptions/{subscription_id}"
3585
3225
  query_params = {}
3586
3226
  response = self._delete(url, params=query_params)
3587
3227
  response.raise_for_status()
3588
3228
  return response.json()
3589
3229
 
3590
- def get_specific_mind_map_node(self, board_id, item_id) -> Any:
3230
+ async def get_specific_mind_map_node(self, board_id, item_id) -> Any:
3591
3231
  """
3592
3232
  Retrieves a specific mind map node by ID from a specified board using the GET method.
3593
3233
 
@@ -3605,15 +3245,13 @@ class MiroApp(APIApplication):
3605
3245
  raise ValueError("Missing required parameter 'board_id'")
3606
3246
  if item_id is None:
3607
3247
  raise ValueError("Missing required parameter 'item_id'")
3608
- url = (
3609
- f"{self.base_url}/v2-experimental/boards/{board_id}/mindmap_nodes/{item_id}"
3610
- )
3248
+ url = f"{self.base_url}/v2-experimental/boards/{board_id}/mindmap_nodes/{item_id}"
3611
3249
  query_params = {}
3612
3250
  response = self._get(url, params=query_params)
3613
3251
  response.raise_for_status()
3614
3252
  return response.json()
3615
3253
 
3616
- def delete_mind_map_node(self, board_id, item_id) -> Any:
3254
+ async def delete_mind_map_node(self, board_id, item_id) -> Any:
3617
3255
  """
3618
3256
  Deletes a specified mindmap node from a board using the experimental v2 API.
3619
3257
 
@@ -3631,15 +3269,13 @@ class MiroApp(APIApplication):
3631
3269
  raise ValueError("Missing required parameter 'board_id'")
3632
3270
  if item_id is None:
3633
3271
  raise ValueError("Missing required parameter 'item_id'")
3634
- url = (
3635
- f"{self.base_url}/v2-experimental/boards/{board_id}/mindmap_nodes/{item_id}"
3636
- )
3272
+ url = f"{self.base_url}/v2-experimental/boards/{board_id}/mindmap_nodes/{item_id}"
3637
3273
  query_params = {}
3638
3274
  response = self._delete(url, params=query_params)
3639
3275
  response.raise_for_status()
3640
3276
  return response.json()
3641
3277
 
3642
- def get_mind_map_nodes(self, board_id, limit=None, cursor=None) -> Any:
3278
+ async def get_mind_map_nodes(self, board_id, limit=None, cursor=None) -> Any:
3643
3279
  """
3644
3280
  Retrieves a paginated list of mindmap nodes from a specified Miro board, supporting limit and cursor parameters for result pagination.
3645
3281
 
@@ -3657,16 +3293,12 @@ class MiroApp(APIApplication):
3657
3293
  if board_id is None:
3658
3294
  raise ValueError("Missing required parameter 'board_id'")
3659
3295
  url = f"{self.base_url}/v2-experimental/boards/{board_id}/mindmap_nodes"
3660
- query_params = {
3661
- k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None
3662
- }
3296
+ query_params = {k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None}
3663
3297
  response = self._get(url, params=query_params)
3664
3298
  response.raise_for_status()
3665
3299
  return response.json()
3666
3300
 
3667
- def create_mind_map_node(
3668
- self, board_id, data=None, geometry=None, parent=None, position=None
3669
- ) -> Any:
3301
+ async def create_mind_map_node(self, board_id, data=None, geometry=None, parent=None, position=None) -> Any:
3670
3302
  """
3671
3303
  Creates a new mind map node in a specified Miro board using the POST method and returns a response upon successful creation.
3672
3304
 
@@ -3707,12 +3339,7 @@ class MiroApp(APIApplication):
3707
3339
  """
3708
3340
  if board_id is None:
3709
3341
  raise ValueError("Missing required parameter 'board_id'")
3710
- request_body = {
3711
- "data": data,
3712
- "geometry": geometry,
3713
- "parent": parent,
3714
- "position": position,
3715
- }
3342
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position}
3716
3343
  request_body = {k: v for k, v in request_body.items() if v is not None}
3717
3344
  url = f"{self.base_url}/v2-experimental/boards/{board_id}/mindmap_nodes"
3718
3345
  query_params = {}
@@ -3720,7 +3347,7 @@ class MiroApp(APIApplication):
3720
3347
  response.raise_for_status()
3721
3348
  return response.json()
3722
3349
 
3723
- def get_items_on_board1(self, board_id, limit=None, type=None, cursor=None) -> Any:
3350
+ async def get_items_on_board1(self, board_id, limit=None, type=None, cursor=None) -> Any:
3724
3351
  """
3725
3352
  Retrieves a paginated list of items from a specified board, filtered by type and limited by cursor-based pagination.
3726
3353
 
@@ -3739,18 +3366,12 @@ class MiroApp(APIApplication):
3739
3366
  if board_id is None:
3740
3367
  raise ValueError("Missing required parameter 'board_id'")
3741
3368
  url = f"{self.base_url}/v2-experimental/boards/{board_id}/items"
3742
- query_params = {
3743
- k: v
3744
- for k, v in [("limit", limit), ("type", type), ("cursor", cursor)]
3745
- if v is not None
3746
- }
3369
+ query_params = {k: v for k, v in [("limit", limit), ("type", type), ("cursor", cursor)] if v is not None}
3747
3370
  response = self._get(url, params=query_params)
3748
3371
  response.raise_for_status()
3749
3372
  return response.json()
3750
3373
 
3751
- def create_shape_item1(
3752
- self, board_id, data=None, geometry=None, parent=None, position=None, style=None
3753
- ) -> Any:
3374
+ async def create_shape_item1(self, board_id, data=None, geometry=None, parent=None, position=None, style=None) -> Any:
3754
3375
  """
3755
3376
  Creates a new shape on a board with the specified `board_id` using the API.
3756
3377
 
@@ -3804,13 +3425,7 @@ class MiroApp(APIApplication):
3804
3425
  """
3805
3426
  if board_id is None:
3806
3427
  raise ValueError("Missing required parameter 'board_id'")
3807
- request_body = {
3808
- "data": data,
3809
- "geometry": geometry,
3810
- "parent": parent,
3811
- "position": position,
3812
- "style": style,
3813
- }
3428
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position, "style": style}
3814
3429
  request_body = {k: v for k, v in request_body.items() if v is not None}
3815
3430
  url = f"{self.base_url}/v2-experimental/boards/{board_id}/shapes"
3816
3431
  query_params = {}
@@ -3818,7 +3433,7 @@ class MiroApp(APIApplication):
3818
3433
  response.raise_for_status()
3819
3434
  return response.json()
3820
3435
 
3821
- def get_shape_item1(self, board_id, item_id) -> Any:
3436
+ async def get_shape_item1(self, board_id, item_id) -> Any:
3822
3437
  """
3823
3438
  Retrieves shape details from a specific item within a board, identified by the board ID and item ID.
3824
3439
 
@@ -3842,7 +3457,7 @@ class MiroApp(APIApplication):
3842
3457
  response.raise_for_status()
3843
3458
  return response.json()
3844
3459
 
3845
- def delete_shape_item1(self, board_id, item_id) -> Any:
3460
+ async def delete_shape_item1(self, board_id, item_id) -> Any:
3846
3461
  """
3847
3462
  Deletes a specific shape from the specified board.
3848
3463
 
@@ -3866,16 +3481,7 @@ class MiroApp(APIApplication):
3866
3481
  response.raise_for_status()
3867
3482
  return response.json()
3868
3483
 
3869
- def update_shape_item1(
3870
- self,
3871
- board_id,
3872
- item_id,
3873
- data=None,
3874
- geometry=None,
3875
- parent=None,
3876
- position=None,
3877
- style=None,
3878
- ) -> Any:
3484
+ async def update_shape_item1(self, board_id, item_id, data=None, geometry=None, parent=None, position=None, style=None) -> Any:
3879
3485
  """
3880
3486
  Updates a specific shape on a board and returns a status message.
3881
3487
 
@@ -3932,13 +3538,7 @@ class MiroApp(APIApplication):
3932
3538
  raise ValueError("Missing required parameter 'board_id'")
3933
3539
  if item_id is None:
3934
3540
  raise ValueError("Missing required parameter 'item_id'")
3935
- request_body = {
3936
- "data": data,
3937
- "geometry": geometry,
3938
- "parent": parent,
3939
- "position": position,
3940
- "style": style,
3941
- }
3541
+ request_body = {"data": data, "geometry": geometry, "parent": parent, "position": position, "style": style}
3942
3542
  request_body = {k: v for k, v in request_body.items() if v is not None}
3943
3543
  url = f"{self.base_url}/v2-experimental/boards/{board_id}/shapes/{item_id}"
3944
3544
  query_params = {}
@@ -3946,7 +3546,7 @@ class MiroApp(APIApplication):
3946
3546
  response.raise_for_status()
3947
3547
  return response.json()
3948
3548
 
3949
- def get_all_groups_on_aboard(self, board_id, limit=None, cursor=None) -> Any:
3549
+ async def get_all_groups_on_aboard(self, board_id, limit=None, cursor=None) -> Any:
3950
3550
  """
3951
3551
  Retrieves a list of groups associated with a specified board, allowing for pagination with optional limit and cursor parameters.
3952
3552
 
@@ -3964,14 +3564,12 @@ class MiroApp(APIApplication):
3964
3564
  if board_id is None:
3965
3565
  raise ValueError("Missing required parameter 'board_id'")
3966
3566
  url = f"{self.base_url}/v2/boards/{board_id}/groups"
3967
- query_params = {
3968
- k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None
3969
- }
3567
+ query_params = {k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None}
3970
3568
  response = self._get(url, params=query_params)
3971
3569
  response.raise_for_status()
3972
3570
  return response.json()
3973
3571
 
3974
- def create_group(self, board_id, data=None) -> Any:
3572
+ async def create_group(self, board_id, data=None) -> Any:
3975
3573
  """
3976
3574
  Creates a new group in the specified board using the provided board ID and returns a success status.
3977
3575
 
@@ -3998,9 +3596,7 @@ class MiroApp(APIApplication):
3998
3596
  """
3999
3597
  if board_id is None:
4000
3598
  raise ValueError("Missing required parameter 'board_id'")
4001
- request_body = {
4002
- "data": data,
4003
- }
3599
+ request_body = {"data": data}
4004
3600
  request_body = {k: v for k, v in request_body.items() if v is not None}
4005
3601
  url = f"{self.base_url}/v2/boards/{board_id}/groups"
4006
3602
  query_params = {}
@@ -4008,9 +3604,7 @@ class MiroApp(APIApplication):
4008
3604
  response.raise_for_status()
4009
3605
  return response.json()
4010
3606
 
4011
- def get_items_of_agroup_by_id(
4012
- self, board_id, limit=None, cursor=None, group_item_id=None
4013
- ) -> Any:
3607
+ async def get_items_of_agroup_by_id(self, board_id, limit=None, cursor=None, group_item_id=None) -> Any:
4014
3608
  """
4015
3609
  Retrieves a paginated list of group items for a specific board, optionally filtered by group item ID, with cursor-based pagination support.
4016
3610
 
@@ -4029,20 +3623,12 @@ class MiroApp(APIApplication):
4029
3623
  if board_id is None:
4030
3624
  raise ValueError("Missing required parameter 'board_id'")
4031
3625
  url = f"{self.base_url}/v2/boards/{board_id}/groups/items"
4032
- query_params = {
4033
- k: v
4034
- for k, v in [
4035
- ("limit", limit),
4036
- ("cursor", cursor),
4037
- ("group_item_id", group_item_id),
4038
- ]
4039
- if v is not None
4040
- }
3626
+ query_params = {k: v for k, v in [("limit", limit), ("cursor", cursor), ("group_item_id", group_item_id)] if v is not None}
4041
3627
  response = self._get(url, params=query_params)
4042
3628
  response.raise_for_status()
4043
3629
  return response.json()
4044
3630
 
4045
- def get_agroup_by_its_id(self, board_id, group_id) -> Any:
3631
+ async def get_agroup_by_its_id(self, board_id, group_id) -> Any:
4046
3632
  """
4047
3633
  Retrieves a group associated with a specific board from the API.
4048
3634
 
@@ -4066,7 +3652,7 @@ class MiroApp(APIApplication):
4066
3652
  response.raise_for_status()
4067
3653
  return response.json()
4068
3654
 
4069
- def updates_agroup_with_new_items(self, board_id, group_id, data=None) -> Any:
3655
+ async def updates_agroup_with_new_items(self, board_id, group_id, data=None) -> Any:
4070
3656
  """
4071
3657
  Updates a group on a specific board using the provided group ID and board ID.
4072
3658
 
@@ -4096,9 +3682,7 @@ class MiroApp(APIApplication):
4096
3682
  raise ValueError("Missing required parameter 'board_id'")
4097
3683
  if group_id is None:
4098
3684
  raise ValueError("Missing required parameter 'group_id'")
4099
- request_body = {
4100
- "data": data,
4101
- }
3685
+ request_body = {"data": data}
4102
3686
  request_body = {k: v for k, v in request_body.items() if v is not None}
4103
3687
  url = f"{self.base_url}/v2/boards/{board_id}/groups/{group_id}"
4104
3688
  query_params = {}
@@ -4106,7 +3690,7 @@ class MiroApp(APIApplication):
4106
3690
  response.raise_for_status()
4107
3691
  return response.json()
4108
3692
 
4109
- def ungroup_items(self, board_id, group_id, delete_items=None) -> Any:
3693
+ async def ungroup_items(self, board_id, group_id, delete_items=None) -> Any:
4110
3694
  """
4111
3695
  Deletes a group from a specified board using the DELETE method, optionally allowing for the deletion of associated items.
4112
3696
 
@@ -4126,14 +3710,12 @@ class MiroApp(APIApplication):
4126
3710
  if group_id is None:
4127
3711
  raise ValueError("Missing required parameter 'group_id'")
4128
3712
  url = f"{self.base_url}/v2/boards/{board_id}/groups/{group_id}"
4129
- query_params = {
4130
- k: v for k, v in [("delete_items", delete_items)] if v is not None
4131
- }
3713
+ query_params = {k: v for k, v in [("delete_items", delete_items)] if v is not None}
4132
3714
  response = self._delete(url, params=query_params)
4133
3715
  response.raise_for_status()
4134
3716
  return response.json()
4135
3717
 
4136
- def deletes_the_group(self, board_id, delete_items=None) -> Any:
3718
+ async def deletes_the_group(self, board_id, delete_items=None) -> Any:
4137
3719
  """
4138
3720
  Deletes a group from a specified board, with an option to delete associated items, and returns a success status.
4139
3721
 
@@ -4151,16 +3733,12 @@ class MiroApp(APIApplication):
4151
3733
  if board_id is None:
4152
3734
  raise ValueError("Missing required parameter 'board_id'")
4153
3735
  url = f"{self.base_url}/v2/boards/{board_id}/groups/<string>"
4154
- query_params = {
4155
- k: v for k, v in [("delete_items", delete_items)] if v is not None
4156
- }
3736
+ query_params = {k: v for k, v in [("delete_items", delete_items)] if v is not None}
4157
3737
  response = self._delete(url, params=query_params)
4158
3738
  response.raise_for_status()
4159
3739
  return response.json()
4160
3740
 
4161
- def revoke_token_v2(
4162
- self, accessToken=None, clientId=None, clientSecret=None
4163
- ) -> Any:
3741
+ async def revoke_token_v2(self, accessToken=None, clientId=None, clientSecret=None) -> Any:
4164
3742
  """
4165
3743
  Revokes an OAuth 2.0 access or refresh token at the authorization server's revocation endpoint and returns a successful status upon invalidation.
4166
3744
 
@@ -4183,11 +3761,7 @@ class MiroApp(APIApplication):
4183
3761
  Tags:
4184
3762
  OAuth
4185
3763
  """
4186
- request_body = {
4187
- "accessToken": accessToken,
4188
- "clientId": clientId,
4189
- "clientSecret": clientSecret,
4190
- }
3764
+ request_body = {"accessToken": accessToken, "clientId": clientId, "clientSecret": clientSecret}
4191
3765
  request_body = {k: v for k, v in request_body.items() if v is not None}
4192
3766
  url = f"{self.base_url}/v2/oauth/revoke"
4193
3767
  query_params = {}
@@ -4195,7 +3769,7 @@ class MiroApp(APIApplication):
4195
3769
  response.raise_for_status()
4196
3770
  return response.json()
4197
3771
 
4198
- def get_tags_from_item(self, board_id, item_id) -> Any:
3772
+ async def get_tags_from_item(self, board_id, item_id) -> Any:
4199
3773
  """
4200
3774
  Retrieves tags associated with a specific item on a board using the API.
4201
3775
 
@@ -4219,7 +3793,7 @@ class MiroApp(APIApplication):
4219
3793
  response.raise_for_status()
4220
3794
  return response.json()
4221
3795
 
4222
- def get_tags_from_board(self, board_id, limit=None, offset=None) -> Any:
3796
+ async def get_tags_from_board(self, board_id, limit=None, offset=None) -> Any:
4223
3797
  """
4224
3798
  Retrieves a list of tags associated with a specific board, allowing for pagination control via limit and offset parameters.
4225
3799
 
@@ -4237,14 +3811,12 @@ class MiroApp(APIApplication):
4237
3811
  if board_id is None:
4238
3812
  raise ValueError("Missing required parameter 'board_id'")
4239
3813
  url = f"{self.base_url}/v2/boards/{board_id}/tags"
4240
- query_params = {
4241
- k: v for k, v in [("limit", limit), ("offset", offset)] if v is not None
4242
- }
3814
+ query_params = {k: v for k, v in [("limit", limit), ("offset", offset)] if v is not None}
4243
3815
  response = self._get(url, params=query_params)
4244
3816
  response.raise_for_status()
4245
3817
  return response.json()
4246
3818
 
4247
- def create_tag(self, board_id, fillColor=None, title=None) -> Any:
3819
+ async def create_tag(self, board_id, fillColor=None, title=None) -> Any:
4248
3820
  """
4249
3821
  Creates and adds new tags to a specific board using the provided board ID.
4250
3822
 
@@ -4268,10 +3840,7 @@ class MiroApp(APIApplication):
4268
3840
  """
4269
3841
  if board_id is None:
4270
3842
  raise ValueError("Missing required parameter 'board_id'")
4271
- request_body = {
4272
- "fillColor": fillColor,
4273
- "title": title,
4274
- }
3843
+ request_body = {"fillColor": fillColor, "title": title}
4275
3844
  request_body = {k: v for k, v in request_body.items() if v is not None}
4276
3845
  url = f"{self.base_url}/v2/boards/{board_id}/tags"
4277
3846
  query_params = {}
@@ -4279,7 +3848,7 @@ class MiroApp(APIApplication):
4279
3848
  response.raise_for_status()
4280
3849
  return response.json()
4281
3850
 
4282
- def get_tag(self, board_id, tag_id) -> Any:
3851
+ async def get_tag(self, board_id, tag_id) -> Any:
4283
3852
  """
4284
3853
  Retrieves information about a specific tag associated with a board, identified by the board ID and tag ID, using the GET method.
4285
3854
 
@@ -4303,7 +3872,7 @@ class MiroApp(APIApplication):
4303
3872
  response.raise_for_status()
4304
3873
  return response.json()
4305
3874
 
4306
- def delete_tag(self, board_id, tag_id) -> Any:
3875
+ async def delete_tag(self, board_id, tag_id) -> Any:
4307
3876
  """
4308
3877
  Deletes a tag from a specific board using the API and returns a successful status message.
4309
3878
 
@@ -4327,7 +3896,7 @@ class MiroApp(APIApplication):
4327
3896
  response.raise_for_status()
4328
3897
  return response.json()
4329
3898
 
4330
- def update_tag(self, board_id, tag_id, fillColor=None, title=None) -> Any:
3899
+ async def update_tag(self, board_id, tag_id, fillColor=None, title=None) -> Any:
4331
3900
  """
4332
3901
  Updates a tag associated with a specific board by modifying its details using the specified `board_id` and `tag_id`.
4333
3902
 
@@ -4354,10 +3923,7 @@ class MiroApp(APIApplication):
4354
3923
  raise ValueError("Missing required parameter 'board_id'")
4355
3924
  if tag_id is None:
4356
3925
  raise ValueError("Missing required parameter 'tag_id'")
4357
- request_body = {
4358
- "fillColor": fillColor,
4359
- "title": title,
4360
- }
3926
+ request_body = {"fillColor": fillColor, "title": title}
4361
3927
  request_body = {k: v for k, v in request_body.items() if v is not None}
4362
3928
  url = f"{self.base_url}/v2/boards/{board_id}/tags/{tag_id}"
4363
3929
  query_params = {}
@@ -4365,9 +3931,7 @@ class MiroApp(APIApplication):
4365
3931
  response.raise_for_status()
4366
3932
  return response.json()
4367
3933
 
4368
- def get_items_by_tag(
4369
- self, board_id_PlatformTags, limit=None, offset=None, tag_id=None
4370
- ) -> Any:
3934
+ async def get_items_by_tag(self, board_id_PlatformTags, limit=None, offset=None, tag_id=None) -> Any:
4371
3935
  """
4372
3936
  Retrieves paginated items from a specific board's platform tags, optionally filtered by tag ID.
4373
3937
 
@@ -4386,16 +3950,12 @@ class MiroApp(APIApplication):
4386
3950
  if board_id_PlatformTags is None:
4387
3951
  raise ValueError("Missing required parameter 'board_id_PlatformTags'")
4388
3952
  url = f"{self.base_url}/v2/boards/{board_id_PlatformTags}/items"
4389
- query_params = {
4390
- k: v
4391
- for k, v in [("limit", limit), ("offset", offset), ("tag_id", tag_id)]
4392
- if v is not None
4393
- }
3953
+ query_params = {k: v for k, v in [("limit", limit), ("offset", offset), ("tag_id", tag_id)] if v is not None}
4394
3954
  response = self._get(url, params=query_params)
4395
3955
  response.raise_for_status()
4396
3956
  return response.json()
4397
3957
 
4398
- def attach_tag_to_item(self, board_id_PlatformTags, item_id, tag_id=None) -> Any:
3958
+ async def attach_tag_to_item(self, board_id_PlatformTags, item_id, tag_id=None) -> Any:
4399
3959
  """
4400
3960
  Adds an item to a board with specific platform tags using the POST method, optionally specifying a tag ID in the query parameters.
4401
3961
 
@@ -4420,7 +3980,7 @@ class MiroApp(APIApplication):
4420
3980
  response.raise_for_status()
4421
3981
  return response.json()
4422
3982
 
4423
- def remove_tag_from_item(self, board_id_PlatformTags, item_id, tag_id=None) -> Any:
3983
+ async def remove_tag_from_item(self, board_id_PlatformTags, item_id, tag_id=None) -> Any:
4424
3984
  """
4425
3985
  Deletes a specific item from a board's PlatformTags collection, requiring a tag_id parameter for identification.
4426
3986
 
@@ -4445,7 +4005,7 @@ class MiroApp(APIApplication):
4445
4005
  response.raise_for_status()
4446
4006
  return response.json()
4447
4007
 
4448
- def list_of_projects(self, org_id, team_id, limit=None, cursor=None) -> Any:
4008
+ async def list_of_projects(self, org_id, team_id, limit=None, cursor=None) -> Any:
4449
4009
  """
4450
4010
  Retrieves a list of projects for a specified team within an organization, allowing pagination via limit and cursor parameters.
4451
4011
 
@@ -4466,14 +4026,12 @@ class MiroApp(APIApplication):
4466
4026
  if team_id is None:
4467
4027
  raise ValueError("Missing required parameter 'team_id'")
4468
4028
  url = f"{self.base_url}/v2/orgs/{org_id}/teams/{team_id}/projects"
4469
- query_params = {
4470
- k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None
4471
- }
4029
+ query_params = {k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None}
4472
4030
  response = self._get(url, params=query_params)
4473
4031
  response.raise_for_status()
4474
4032
  return response.json()
4475
4033
 
4476
- def create_project(self, org_id, team_id, name=None) -> Any:
4034
+ async def create_project(self, org_id, team_id, name=None) -> Any:
4477
4035
  """
4478
4036
  Assigns a project to a team within an organization using a POST request and returns a success status upon completion.
4479
4037
 
@@ -4498,9 +4056,7 @@ class MiroApp(APIApplication):
4498
4056
  raise ValueError("Missing required parameter 'org_id'")
4499
4057
  if team_id is None:
4500
4058
  raise ValueError("Missing required parameter 'team_id'")
4501
- request_body = {
4502
- "name": name,
4503
- }
4059
+ request_body = {"name": name}
4504
4060
  request_body = {k: v for k, v in request_body.items() if v is not None}
4505
4061
  url = f"{self.base_url}/v2/orgs/{org_id}/teams/{team_id}/projects"
4506
4062
  query_params = {}
@@ -4508,7 +4064,7 @@ class MiroApp(APIApplication):
4508
4064
  response.raise_for_status()
4509
4065
  return response.json()
4510
4066
 
4511
- def get_project(self, org_id, team_id, project_id) -> Any:
4067
+ async def get_project(self, org_id, team_id, project_id) -> Any:
4512
4068
  """
4513
4069
  Retrieves project details for a specific team within an organization.
4514
4070
 
@@ -4535,7 +4091,7 @@ class MiroApp(APIApplication):
4535
4091
  response.raise_for_status()
4536
4092
  return response.json()
4537
4093
 
4538
- def delete_project(self, org_id, team_id, project_id) -> Any:
4094
+ async def delete_project(self, org_id, team_id, project_id) -> Any:
4539
4095
  """
4540
4096
  Deletes a specific organization's team project and returns a success message upon removal.
4541
4097
 
@@ -4562,7 +4118,7 @@ class MiroApp(APIApplication):
4562
4118
  response.raise_for_status()
4563
4119
  return response.json()
4564
4120
 
4565
- def update_project(self, org_id, team_id, project_id, name=None) -> Any:
4121
+ async def update_project(self, org_id, team_id, project_id, name=None) -> Any:
4566
4122
  """
4567
4123
  Updates project details within the specified team and organization using the PATCH method and returns a successful response upon completion.
4568
4124
 
@@ -4590,9 +4146,7 @@ class MiroApp(APIApplication):
4590
4146
  raise ValueError("Missing required parameter 'team_id'")
4591
4147
  if project_id is None:
4592
4148
  raise ValueError("Missing required parameter 'project_id'")
4593
- request_body = {
4594
- "name": name,
4595
- }
4149
+ request_body = {"name": name}
4596
4150
  request_body = {k: v for k, v in request_body.items() if v is not None}
4597
4151
  url = f"{self.base_url}/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}"
4598
4152
  query_params = {}
@@ -4600,7 +4154,7 @@ class MiroApp(APIApplication):
4600
4154
  response.raise_for_status()
4601
4155
  return response.json()
4602
4156
 
4603
- def get_project_settings(self, org_id, team_id, project_id) -> Any:
4157
+ async def get_project_settings(self, org_id, team_id, project_id) -> Any:
4604
4158
  """
4605
4159
  Retrieves the settings for a specified organization's team project.
4606
4160
 
@@ -4627,9 +4181,7 @@ class MiroApp(APIApplication):
4627
4181
  response.raise_for_status()
4628
4182
  return response.json()
4629
4183
 
4630
- def update_project_settings(
4631
- self, org_id, team_id, project_id, sharingPolicySettings=None
4632
- ) -> Any:
4184
+ async def update_project_settings(self, org_id, team_id, project_id, sharingPolicySettings=None) -> Any:
4633
4185
  """
4634
4186
  Updates organization, team, and project settings for the specified project.
4635
4187
 
@@ -4659,9 +4211,7 @@ class MiroApp(APIApplication):
4659
4211
  raise ValueError("Missing required parameter 'team_id'")
4660
4212
  if project_id is None:
4661
4213
  raise ValueError("Missing required parameter 'project_id'")
4662
- request_body = {
4663
- "sharingPolicySettings": sharingPolicySettings,
4664
- }
4214
+ request_body = {"sharingPolicySettings": sharingPolicySettings}
4665
4215
  request_body = {k: v for k, v in request_body.items() if v is not None}
4666
4216
  url = f"{self.base_url}/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}/settings"
4667
4217
  query_params = {}
@@ -4669,9 +4219,7 @@ class MiroApp(APIApplication):
4669
4219
  response.raise_for_status()
4670
4220
  return response.json()
4671
4221
 
4672
- def list_of_project_members(
4673
- self, org_id, team_id, project_id, limit=None, cursor=None
4674
- ) -> Any:
4222
+ async def list_of_project_members(self, org_id, team_id, project_id, limit=None, cursor=None) -> Any:
4675
4223
  """
4676
4224
  Retrieves a list of members in a specific project within a team for an organization using the provided limit and cursor query parameters.
4677
4225
 
@@ -4695,16 +4243,12 @@ class MiroApp(APIApplication):
4695
4243
  if project_id is None:
4696
4244
  raise ValueError("Missing required parameter 'project_id'")
4697
4245
  url = f"{self.base_url}/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}/members"
4698
- query_params = {
4699
- k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None
4700
- }
4246
+ query_params = {k: v for k, v in [("limit", limit), ("cursor", cursor)] if v is not None}
4701
4247
  response = self._get(url, params=query_params)
4702
4248
  response.raise_for_status()
4703
4249
  return response.json()
4704
4250
 
4705
- def add_member_in_aproject(
4706
- self, org_id, team_id, project_id, email=None, role=None
4707
- ) -> Any:
4251
+ async def add_member_in_aproject(self, org_id, team_id, project_id, email=None, role=None) -> Any:
4708
4252
  """
4709
4253
  Adds a member to a specified project within a team and organization.
4710
4254
 
@@ -4734,10 +4278,7 @@ class MiroApp(APIApplication):
4734
4278
  raise ValueError("Missing required parameter 'team_id'")
4735
4279
  if project_id is None:
4736
4280
  raise ValueError("Missing required parameter 'project_id'")
4737
- request_body = {
4738
- "email": email,
4739
- "role": role,
4740
- }
4281
+ request_body = {"email": email, "role": role}
4741
4282
  request_body = {k: v for k, v in request_body.items() if v is not None}
4742
4283
  url = f"{self.base_url}/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}/members"
4743
4284
  query_params = {}
@@ -4745,7 +4286,7 @@ class MiroApp(APIApplication):
4745
4286
  response.raise_for_status()
4746
4287
  return response.json()
4747
4288
 
4748
- def get_project_member(self, org_id, team_id, project_id, member_id) -> Any:
4289
+ async def get_project_member(self, org_id, team_id, project_id, member_id) -> Any:
4749
4290
  """
4750
4291
  Retrieves a specific member's details from a project team within an organization.
4751
4292
 
@@ -4775,7 +4316,7 @@ class MiroApp(APIApplication):
4775
4316
  response.raise_for_status()
4776
4317
  return response.json()
4777
4318
 
4778
- def remove_project_member(self, org_id, team_id, project_id, member_id) -> Any:
4319
+ async def remove_project_member(self, org_id, team_id, project_id, member_id) -> Any:
4779
4320
  """
4780
4321
  Deletes a member from a specific project within a team in an organization using the provided member ID.
4781
4322
 
@@ -4805,9 +4346,7 @@ class MiroApp(APIApplication):
4805
4346
  response.raise_for_status()
4806
4347
  return response.json()
4807
4348
 
4808
- def update_project_member(
4809
- self, org_id, team_id, project_id, member_id, role=None
4810
- ) -> Any:
4349
+ async def update_project_member(self, org_id, team_id, project_id, member_id, role=None) -> Any:
4811
4350
  """
4812
4351
  Updates team member information in an organization project using the "PATCH" method and returns a successful status response.
4813
4352
 
@@ -4838,9 +4377,7 @@ class MiroApp(APIApplication):
4838
4377
  raise ValueError("Missing required parameter 'project_id'")
4839
4378
  if member_id is None:
4840
4379
  raise ValueError("Missing required parameter 'member_id'")
4841
- request_body = {
4842
- "role": role,
4843
- }
4380
+ request_body = {"role": role}
4844
4381
  request_body = {k: v for k, v in request_body.items() if v is not None}
4845
4382
  url = f"{self.base_url}/v2/orgs/{org_id}/teams/{team_id}/projects/{project_id}/members/{member_id}"
4846
4383
  query_params = {}
@@ -4848,7 +4385,7 @@ class MiroApp(APIApplication):
4848
4385
  response.raise_for_status()
4849
4386
  return response.json()
4850
4387
 
4851
- def list_teams(self, org_id, limit=None, cursor=None, name=None) -> Any:
4388
+ async def list_teams(self, org_id, limit=None, cursor=None, name=None) -> Any:
4852
4389
  """
4853
4390
  Retrieves a paginated list of teams for a specified organization with optional filtering by name.
4854
4391
 
@@ -4867,16 +4404,12 @@ class MiroApp(APIApplication):
4867
4404
  if org_id is None:
4868
4405
  raise ValueError("Missing required parameter 'org_id'")
4869
4406
  url = f"{self.base_url}/v2/orgs/{org_id}/teams"
4870
- query_params = {
4871
- k: v
4872
- for k, v in [("limit", limit), ("cursor", cursor), ("name", name)]
4873
- if v is not None
4874
- }
4407
+ query_params = {k: v for k, v in [("limit", limit), ("cursor", cursor), ("name", name)] if v is not None}
4875
4408
  response = self._get(url, params=query_params)
4876
4409
  response.raise_for_status()
4877
4410
  return response.json()
4878
4411
 
4879
- def create_team(self, org_id, name=None) -> Any:
4412
+ async def create_team(self, org_id, name=None) -> Any:
4880
4413
  """
4881
4414
  Creates a new team within the specified organization using the POST method.
4882
4415
 
@@ -4898,9 +4431,7 @@ class MiroApp(APIApplication):
4898
4431
  """
4899
4432
  if org_id is None:
4900
4433
  raise ValueError("Missing required parameter 'org_id'")
4901
- request_body = {
4902
- "name": name,
4903
- }
4434
+ request_body = {"name": name}
4904
4435
  request_body = {k: v for k, v in request_body.items() if v is not None}
4905
4436
  url = f"{self.base_url}/v2/orgs/{org_id}/teams"
4906
4437
  query_params = {}
@@ -4908,7 +4439,7 @@ class MiroApp(APIApplication):
4908
4439
  response.raise_for_status()
4909
4440
  return response.json()
4910
4441
 
4911
- def get_team(self, org_id, team_id) -> Any:
4442
+ async def get_team(self, org_id, team_id) -> Any:
4912
4443
  """
4913
4444
  Retrieves team details for the specified organization and team ID.
4914
4445
 
@@ -4932,7 +4463,7 @@ class MiroApp(APIApplication):
4932
4463
  response.raise_for_status()
4933
4464
  return response.json()
4934
4465
 
4935
- def delete_team(self, org_id, team_id) -> Any:
4466
+ async def delete_team(self, org_id, team_id) -> Any:
4936
4467
  """
4937
4468
  Deletes a team within an organization using the specified organization and team IDs.
4938
4469
 
@@ -4956,7 +4487,7 @@ class MiroApp(APIApplication):
4956
4487
  response.raise_for_status()
4957
4488
  return response.json()
4958
4489
 
4959
- def update_team(self, org_id, team_id, name=None) -> Any:
4490
+ async def update_team(self, org_id, team_id, name=None) -> Any:
4960
4491
  """
4961
4492
  Updates specific properties of a team within an organization using partial modifications.
4962
4493
 
@@ -4981,9 +4512,7 @@ class MiroApp(APIApplication):
4981
4512
  raise ValueError("Missing required parameter 'org_id'")
4982
4513
  if team_id is None:
4983
4514
  raise ValueError("Missing required parameter 'team_id'")
4984
- request_body = {
4985
- "name": name,
4986
- }
4515
+ request_body = {"name": name}
4987
4516
  request_body = {k: v for k, v in request_body.items() if v is not None}
4988
4517
  url = f"{self.base_url}/v2/orgs/{org_id}/teams/{team_id}"
4989
4518
  query_params = {}
@@ -4991,9 +4520,7 @@ class MiroApp(APIApplication):
4991
4520
  response.raise_for_status()
4992
4521
  return response.json()
4993
4522
 
4994
- def list_team_members(
4995
- self, org_id, team_id, limit=None, cursor=None, role=None
4996
- ) -> Any:
4523
+ async def list_team_members(self, org_id, team_id, limit=None, cursor=None, role=None) -> Any:
4997
4524
  """
4998
4525
  Retrieves a paginated list of members for a specified team within an organization, optionally filtered by role.
4999
4526
 
@@ -5019,16 +4546,12 @@ class MiroApp(APIApplication):
5019
4546
  if team_id is None:
5020
4547
  raise ValueError("Missing required parameter 'team_id'")
5021
4548
  url = f"{self.base_url}/v2/orgs/{org_id}/teams/{team_id}/members"
5022
- query_params = {
5023
- k: v
5024
- for k, v in [("limit", limit), ("cursor", cursor), ("role", role)]
5025
- if v is not None
5026
- }
4549
+ query_params = {k: v for k, v in [("limit", limit), ("cursor", cursor), ("role", role)] if v is not None}
5027
4550
  response = self._get(url, params=query_params)
5028
4551
  response.raise_for_status()
5029
4552
  return response.json()
5030
4553
 
5031
- def invite_team_members(self, org_id, team_id, email=None, role=None) -> Any:
4554
+ async def invite_team_members(self, org_id, team_id, email=None, role=None) -> Any:
5032
4555
  """
5033
4556
  Adds a member to a specific team within an organization using the API endpoint at "/v2/orgs/{org_id}/teams/{team_id}/members".
5034
4557
 
@@ -5055,10 +4578,7 @@ class MiroApp(APIApplication):
5055
4578
  raise ValueError("Missing required parameter 'org_id'")
5056
4579
  if team_id is None:
5057
4580
  raise ValueError("Missing required parameter 'team_id'")
5058
- request_body = {
5059
- "email": email,
5060
- "role": role,
5061
- }
4581
+ request_body = {"email": email, "role": role}
5062
4582
  request_body = {k: v for k, v in request_body.items() if v is not None}
5063
4583
  url = f"{self.base_url}/v2/orgs/{org_id}/teams/{team_id}/members"
5064
4584
  query_params = {}
@@ -5066,7 +4586,7 @@ class MiroApp(APIApplication):
5066
4586
  response.raise_for_status()
5067
4587
  return response.json()
5068
4588
 
5069
- def get_team_member(self, org_id, team_id, member_id) -> Any:
4589
+ async def get_team_member(self, org_id, team_id, member_id) -> Any:
5070
4590
  """
5071
4591
  Retrieves information about a specific team member using the provided organization, team, and member identifiers.
5072
4592
 
@@ -5093,7 +4613,7 @@ class MiroApp(APIApplication):
5093
4613
  response.raise_for_status()
5094
4614
  return response.json()
5095
4615
 
5096
- def delete_team_member_from_team(self, org_id, team_id, member_id) -> Any:
4616
+ async def delete_team_member_from_team(self, org_id, team_id, member_id) -> Any:
5097
4617
  """
5098
4618
  Removes a member from a specified team in an organization using the GitHub API.
5099
4619
 
@@ -5120,7 +4640,7 @@ class MiroApp(APIApplication):
5120
4640
  response.raise_for_status()
5121
4641
  return response.json()
5122
4642
 
5123
- def update_team_member(self, org_id, team_id, member_id, role=None) -> Any:
4643
+ async def update_team_member(self, org_id, team_id, member_id, role=None) -> Any:
5124
4644
  """
5125
4645
  Updates the membership details of a team member in an organization using the GitHub API.
5126
4646
 
@@ -5148,9 +4668,7 @@ class MiroApp(APIApplication):
5148
4668
  raise ValueError("Missing required parameter 'team_id'")
5149
4669
  if member_id is None:
5150
4670
  raise ValueError("Missing required parameter 'member_id'")
5151
- request_body = {
5152
- "role": role,
5153
- }
4671
+ request_body = {"role": role}
5154
4672
  request_body = {k: v for k, v in request_body.items() if v is not None}
5155
4673
  url = f"{self.base_url}/v2/orgs/{org_id}/teams/{team_id}/members/{member_id}"
5156
4674
  query_params = {}
@@ -5158,7 +4676,7 @@ class MiroApp(APIApplication):
5158
4676
  response.raise_for_status()
5159
4677
  return response.json()
5160
4678
 
5161
- def get_default_team_settings(self, org_id) -> Any:
4679
+ async def get_default_team_settings(self, org_id) -> Any:
5162
4680
  """
5163
4681
  Retrieves the default team settings for an organization via the GitHub API.
5164
4682
 
@@ -5179,7 +4697,7 @@ class MiroApp(APIApplication):
5179
4697
  response.raise_for_status()
5180
4698
  return response.json()
5181
4699
 
5182
- def get_team_settings1(self, org_id, team_id) -> Any:
4700
+ async def get_team_settings1(self, org_id, team_id) -> Any:
5183
4701
  """
5184
4702
  Retrieves team settings for a specified team within an organization using the "GET" method.
5185
4703
 
@@ -5203,7 +4721,7 @@ class MiroApp(APIApplication):
5203
4721
  response.raise_for_status()
5204
4722
  return response.json()
5205
4723
 
5206
- def update_team_settings1(
4724
+ async def update_team_settings1(
5207
4725
  self,
5208
4726
  org_id,
5209
4727
  team_id,