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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. universal_mcp/applications/ahrefs/app.py +52 -198
  2. universal_mcp/applications/airtable/app.py +23 -122
  3. universal_mcp/applications/apollo/app.py +111 -464
  4. universal_mcp/applications/asana/app.py +417 -1567
  5. universal_mcp/applications/aws_s3/app.py +36 -103
  6. universal_mcp/applications/bill/app.py +546 -1957
  7. universal_mcp/applications/box/app.py +1068 -3981
  8. universal_mcp/applications/braze/app.py +364 -1430
  9. universal_mcp/applications/browser_use/app.py +2 -8
  10. universal_mcp/applications/cal_com_v2/app.py +207 -625
  11. universal_mcp/applications/calendly/app.py +61 -200
  12. universal_mcp/applications/canva/app.py +45 -110
  13. universal_mcp/applications/clickup/app.py +207 -674
  14. universal_mcp/applications/coda/app.py +146 -426
  15. universal_mcp/applications/confluence/app.py +310 -1098
  16. universal_mcp/applications/contentful/app.py +36 -151
  17. universal_mcp/applications/crustdata/app.py +28 -107
  18. universal_mcp/applications/dialpad/app.py +283 -756
  19. universal_mcp/applications/digitalocean/app.py +1766 -5777
  20. universal_mcp/applications/domain_checker/app.py +3 -54
  21. universal_mcp/applications/e2b/app.py +14 -64
  22. universal_mcp/applications/elevenlabs/app.py +9 -47
  23. universal_mcp/applications/exa/app.py +6 -17
  24. universal_mcp/applications/falai/app.py +24 -101
  25. universal_mcp/applications/figma/app.py +53 -137
  26. universal_mcp/applications/file_system/app.py +2 -13
  27. universal_mcp/applications/firecrawl/app.py +51 -152
  28. universal_mcp/applications/fireflies/app.py +59 -281
  29. universal_mcp/applications/fpl/app.py +91 -528
  30. universal_mcp/applications/fpl/utils/fixtures.py +15 -49
  31. universal_mcp/applications/fpl/utils/helper.py +25 -89
  32. universal_mcp/applications/fpl/utils/league_utils.py +20 -64
  33. universal_mcp/applications/ghost_content/app.py +52 -161
  34. universal_mcp/applications/github/app.py +19 -56
  35. universal_mcp/applications/gong/app.py +88 -248
  36. universal_mcp/applications/google_calendar/app.py +16 -68
  37. universal_mcp/applications/google_docs/app.py +85 -189
  38. universal_mcp/applications/google_drive/app.py +141 -463
  39. universal_mcp/applications/google_gemini/app.py +12 -64
  40. universal_mcp/applications/google_mail/app.py +28 -157
  41. universal_mcp/applications/google_searchconsole/app.py +15 -48
  42. universal_mcp/applications/google_sheet/app.py +100 -581
  43. universal_mcp/applications/google_sheet/helper.py +10 -37
  44. universal_mcp/applications/hashnode/app.py +57 -269
  45. universal_mcp/applications/heygen/app.py +44 -122
  46. universal_mcp/applications/http_tools/app.py +10 -32
  47. universal_mcp/applications/hubspot/api_segments/crm_api.py +460 -1573
  48. universal_mcp/applications/hubspot/api_segments/marketing_api.py +74 -262
  49. universal_mcp/applications/hubspot/app.py +23 -87
  50. universal_mcp/applications/jira/app.py +2071 -7986
  51. universal_mcp/applications/klaviyo/app.py +494 -1376
  52. universal_mcp/applications/linkedin/README.md +9 -2
  53. universal_mcp/applications/linkedin/app.py +240 -181
  54. universal_mcp/applications/mailchimp/app.py +450 -1605
  55. universal_mcp/applications/markitdown/app.py +8 -20
  56. universal_mcp/applications/miro/app.py +217 -699
  57. universal_mcp/applications/ms_teams/app.py +64 -186
  58. universal_mcp/applications/neon/app.py +86 -192
  59. universal_mcp/applications/notion/app.py +21 -36
  60. universal_mcp/applications/onedrive/app.py +16 -38
  61. universal_mcp/applications/openai/app.py +42 -165
  62. universal_mcp/applications/outlook/app.py +24 -84
  63. universal_mcp/applications/perplexity/app.py +4 -19
  64. universal_mcp/applications/pipedrive/app.py +832 -3142
  65. universal_mcp/applications/posthog/app.py +163 -432
  66. universal_mcp/applications/reddit/app.py +40 -139
  67. universal_mcp/applications/resend/app.py +41 -107
  68. universal_mcp/applications/retell/app.py +14 -41
  69. universal_mcp/applications/rocketlane/app.py +221 -934
  70. universal_mcp/applications/scraper/README.md +7 -4
  71. universal_mcp/applications/scraper/app.py +50 -109
  72. universal_mcp/applications/semanticscholar/app.py +22 -64
  73. universal_mcp/applications/semrush/app.py +43 -77
  74. universal_mcp/applications/sendgrid/app.py +512 -1262
  75. universal_mcp/applications/sentry/app.py +271 -906
  76. universal_mcp/applications/serpapi/app.py +40 -143
  77. universal_mcp/applications/sharepoint/app.py +17 -39
  78. universal_mcp/applications/shopify/app.py +1551 -4287
  79. universal_mcp/applications/shortcut/app.py +155 -417
  80. universal_mcp/applications/slack/app.py +33 -115
  81. universal_mcp/applications/spotify/app.py +126 -325
  82. universal_mcp/applications/supabase/app.py +104 -213
  83. universal_mcp/applications/tavily/app.py +1 -1
  84. universal_mcp/applications/trello/app.py +693 -2656
  85. universal_mcp/applications/twilio/app.py +14 -50
  86. universal_mcp/applications/twitter/api_segments/compliance_api.py +4 -14
  87. universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +6 -18
  88. universal_mcp/applications/twitter/api_segments/likes_api.py +1 -3
  89. universal_mcp/applications/twitter/api_segments/lists_api.py +5 -15
  90. universal_mcp/applications/twitter/api_segments/trends_api.py +1 -3
  91. universal_mcp/applications/twitter/api_segments/tweets_api.py +9 -31
  92. universal_mcp/applications/twitter/api_segments/usage_api.py +1 -5
  93. universal_mcp/applications/twitter/api_segments/users_api.py +14 -42
  94. universal_mcp/applications/whatsapp/app.py +35 -186
  95. universal_mcp/applications/whatsapp/audio.py +2 -6
  96. universal_mcp/applications/whatsapp/whatsapp.py +17 -51
  97. universal_mcp/applications/whatsapp_business/app.py +70 -283
  98. universal_mcp/applications/wrike/app.py +45 -118
  99. universal_mcp/applications/yahoo_finance/app.py +19 -65
  100. universal_mcp/applications/youtube/app.py +75 -261
  101. universal_mcp/applications/zenquotes/app.py +2 -2
  102. {universal_mcp_applications-0.1.32.dist-info → universal_mcp_applications-0.1.36rc2.dist-info}/METADATA +2 -2
  103. {universal_mcp_applications-0.1.32.dist-info → universal_mcp_applications-0.1.36rc2.dist-info}/RECORD +105 -105
  104. {universal_mcp_applications-0.1.32.dist-info → universal_mcp_applications-0.1.36rc2.dist-info}/WHEEL +0 -0
  105. {universal_mcp_applications-0.1.32.dist-info → universal_mcp_applications-0.1.36rc2.dist-info}/licenses/LICENSE +0 -0
@@ -1,5 +1,4 @@
1
1
  from typing import Any
2
-
3
2
  from universal_mcp.applications.application import APIApplication
4
3
  from universal_mcp.integrations import Integration
5
4
 
@@ -9,9 +8,7 @@ class CalendlyApp(APIApplication):
9
8
  super().__init__(name="calendly", integration=integration, **kwargs)
10
9
  self.base_url = "https://api.calendly.com"
11
10
 
12
- def list_event_invitees(
13
- self, uuid, status=None, sort=None, email=None, page_token=None, count=None
14
- ) -> dict[str, Any]:
11
+ async def list_event_invitees(self, uuid, status=None, sort=None, email=None, page_token=None, count=None) -> dict[str, Any]:
15
12
  """
16
13
  Retrieves a paginated list of invitees for a specific scheduled event, identified by its UUID. The results can be filtered by invitee status or email, sorted by creation date, and the list size can be controlled using pagination parameters.
17
14
 
@@ -34,20 +31,14 @@ class CalendlyApp(APIApplication):
34
31
  url = f"{self.base_url}/scheduled_events/{uuid}/invitees"
35
32
  query_params = {
36
33
  k: v
37
- for k, v in [
38
- ("status", status),
39
- ("sort", sort),
40
- ("email", email),
41
- ("page_token", page_token),
42
- ("count", count),
43
- ]
34
+ for k, v in [("status", status), ("sort", sort), ("email", email), ("page_token", page_token), ("count", count)]
44
35
  if v is not None
45
36
  }
46
37
  response = self._get(url, params=query_params)
47
38
  response.raise_for_status()
48
39
  return response.json()
49
40
 
50
- def get_scheduled_event(self, uuid) -> dict[str, Any]:
41
+ async def get_scheduled_event(self, uuid) -> dict[str, Any]:
51
42
  """
52
43
  Retrieves the details for a specific scheduled event using its unique identifier (UUID). This targets a single event instance, differentiating it from `list_events` which fetches a collection of events and `get_event_type` which retrieves an event template.
53
44
 
@@ -68,7 +59,7 @@ class CalendlyApp(APIApplication):
68
59
  response.raise_for_status()
69
60
  return response.json()
70
61
 
71
- def get_event_invitee(self, event_uuid, invitee_uuid) -> dict[str, Any]:
62
+ async def get_event_invitee(self, event_uuid, invitee_uuid) -> dict[str, Any]:
72
63
  """
73
64
  Fetches detailed information for a single invitee associated with a specific scheduled event. It uses both the event's UUID and the invitee's UUID to uniquely identify and retrieve the correct record, distinguishing it from `list_event_invitees` which returns a collection.
74
65
 
@@ -92,7 +83,7 @@ class CalendlyApp(APIApplication):
92
83
  response.raise_for_status()
93
84
  return response.json()
94
85
 
95
- def list_scheduled_events(
86
+ async def list_scheduled_events(
96
87
  self,
97
88
  user=None,
98
89
  organization=None,
@@ -149,7 +140,7 @@ class CalendlyApp(APIApplication):
149
140
  response.raise_for_status()
150
141
  return response.json()
151
142
 
152
- def get_event_type(self, uuid) -> dict[str, Any]:
143
+ async def get_event_type(self, uuid) -> dict[str, Any]:
153
144
  """
154
145
  Retrieves the full details of a specific event type, such as its name, duration, and scheduling rules, by providing its unique identifier (UUID). It fetches a single resource, unlike list_user_sevent_types which retrieves a collection.
155
146
 
@@ -170,7 +161,7 @@ class CalendlyApp(APIApplication):
170
161
  response.raise_for_status()
171
162
  return response.json()
172
163
 
173
- def list_event_types(
164
+ async def list_event_types(
174
165
  self,
175
166
  active=None,
176
167
  organization=None,
@@ -219,7 +210,7 @@ class CalendlyApp(APIApplication):
219
210
  response.raise_for_status()
220
211
  return response.json()
221
212
 
222
- def get_user(self, uuid) -> dict[str, Any]:
213
+ async def get_user(self, uuid) -> dict[str, Any]:
223
214
  """
224
215
  Retrieves the details of a specific user identified by their unique identifier (UUID). This differs from `get_current_user`, which fetches the profile of the currently authenticated user.
225
216
 
@@ -240,7 +231,7 @@ class CalendlyApp(APIApplication):
240
231
  response.raise_for_status()
241
232
  return response.json()
242
233
 
243
- def get_current_user(self) -> dict[str, Any]:
234
+ async def get_current_user(self) -> dict[str, Any]:
244
235
  """
245
236
  Retrieves profile information for the currently authenticated user by querying the `/users/me` endpoint. This function requires no parameters, unlike `get_user` which fetches a specific user by their UUID.
246
237
 
@@ -256,9 +247,7 @@ class CalendlyApp(APIApplication):
256
247
  response.raise_for_status()
257
248
  return response.json()
258
249
 
259
- def list_organization_invitations(
260
- self, uuid, count=None, page_token=None, sort=None, email=None, status=None
261
- ) -> dict[str, Any]:
250
+ async def list_organization_invitations(self, uuid, count=None, page_token=None, sort=None, email=None, status=None) -> dict[str, Any]:
262
251
  """
263
252
  Retrieves a paginated list of invitations for a specific organization, identified by its UUID. It allows optional filtering by email and status (e.g., pending, accepted) and sorting. This function fetches a collection of invitations, unlike `get_organization_invitation` which retrieves a single one.
264
253
 
@@ -281,20 +270,14 @@ class CalendlyApp(APIApplication):
281
270
  url = f"{self.base_url}/organizations/{uuid}/invitations"
282
271
  query_params = {
283
272
  k: v
284
- for k, v in [
285
- ("count", count),
286
- ("page_token", page_token),
287
- ("sort", sort),
288
- ("email", email),
289
- ("status", status),
290
- ]
273
+ for k, v in [("count", count), ("page_token", page_token), ("sort", sort), ("email", email), ("status", status)]
291
274
  if v is not None
292
275
  }
293
276
  response = self._get(url, params=query_params)
294
277
  response.raise_for_status()
295
278
  return response.json()
296
279
 
297
- def create_organization_invitation(self, uuid, email=None) -> dict[str, Any]:
280
+ async def create_organization_invitation(self, uuid, email=None) -> dict[str, Any]:
298
281
  """
299
282
  Invites a user via email to join a specific organization, identified by the organization's UUID. This function creates a new pending invitation, distinguishing it from functions that list, retrieve, or revoke existing invitations.
300
283
 
@@ -316,9 +299,7 @@ class CalendlyApp(APIApplication):
316
299
  """
317
300
  if uuid is None:
318
301
  raise ValueError("Missing required parameter 'uuid'")
319
- request_body = {
320
- "email": email,
321
- }
302
+ request_body = {"email": email}
322
303
  request_body = {k: v for k, v in request_body.items() if v is not None}
323
304
  url = f"{self.base_url}/organizations/{uuid}/invitations"
324
305
  query_params = {}
@@ -326,7 +307,7 @@ class CalendlyApp(APIApplication):
326
307
  response.raise_for_status()
327
308
  return response.json()
328
309
 
329
- def get_organization_invitation(self, org_uuid, uuid) -> dict[str, Any]:
310
+ async def get_organization_invitation(self, org_uuid, uuid) -> dict[str, Any]:
330
311
  """
331
312
  Retrieves the details of a single, specific invitation within an organization. It requires both the organization's unique identifier (`org_uuid`) and the invitation's unique identifier (`uuid`) for the lookup.
332
313
 
@@ -350,7 +331,7 @@ class CalendlyApp(APIApplication):
350
331
  response.raise_for_status()
351
332
  return response.json()
352
333
 
353
- def revoke_user_organization_invitation(self, org_uuid, uuid) -> Any:
334
+ async def revoke_user_organization_invitation(self, org_uuid, uuid) -> Any:
354
335
  """
355
336
  Revokes a specific user's invitation to an organization, identified by the organization and invitation UUIDs. This action permanently deletes the pending invitation, preventing it from being accepted.
356
337
 
@@ -374,7 +355,7 @@ class CalendlyApp(APIApplication):
374
355
  response.raise_for_status()
375
356
  return response.json()
376
357
 
377
- def get_organization_membership(self, uuid) -> dict[str, Any]:
358
+ async def get_organization_membership(self, uuid) -> dict[str, Any]:
378
359
  """
379
360
  Fetches the details of a specific organization membership using its unique identifier (UUID). Unlike `list_organization_memberships`, this function retrieves a single membership record rather than a collection.
380
361
 
@@ -395,7 +376,7 @@ class CalendlyApp(APIApplication):
395
376
  response.raise_for_status()
396
377
  return response.json()
397
378
 
398
- def delete_organization_membership(self, uuid) -> Any:
379
+ async def delete_organization_membership(self, uuid) -> Any:
399
380
  """
400
381
  Deletes an organization membership by its unique UUID, effectively removing the associated user from the organization. This function is the destructive counterpart to `get_organization_membership` and acts on active members, not pending invitations.
401
382
 
@@ -416,9 +397,7 @@ class CalendlyApp(APIApplication):
416
397
  response.raise_for_status()
417
398
  return response.json()
418
399
 
419
- def list_organization_memberships(
420
- self, page_token=None, count=None, email=None, organization=None, user=None
421
- ) -> dict[str, Any]:
400
+ async def list_organization_memberships(self, page_token=None, count=None, email=None, organization=None, user=None) -> dict[str, Any]:
422
401
  """
423
402
  Retrieves a paginated list of organization memberships. The results can be filtered by user, organization, or email address to narrow down the search for specific members within one or more organizations.
424
403
 
@@ -438,20 +417,14 @@ class CalendlyApp(APIApplication):
438
417
  url = f"{self.base_url}/organization_memberships"
439
418
  query_params = {
440
419
  k: v
441
- for k, v in [
442
- ("page_token", page_token),
443
- ("count", count),
444
- ("email", email),
445
- ("organization", organization),
446
- ("user", user),
447
- ]
420
+ for k, v in [("page_token", page_token), ("count", count), ("email", email), ("organization", organization), ("user", user)]
448
421
  if v is not None
449
422
  }
450
423
  response = self._get(url, params=query_params)
451
424
  response.raise_for_status()
452
425
  return response.json()
453
426
 
454
- def get_webhook_subscription(self, webhook_uuid) -> dict[str, Any]:
427
+ async def get_webhook_subscription(self, webhook_uuid) -> dict[str, Any]:
455
428
  """
456
429
  Fetches detailed information for a single webhook subscription using its unique identifier (UUID). Unlike `list_webhook_subscriptions`, which returns a collection, this function retrieves one specific subscription's configuration and status.
457
430
 
@@ -472,7 +445,7 @@ class CalendlyApp(APIApplication):
472
445
  response.raise_for_status()
473
446
  return response.json()
474
447
 
475
- def delete_webhook_subscription(self, webhook_uuid) -> Any:
448
+ async def delete_webhook_subscription(self, webhook_uuid) -> Any:
476
449
  """
477
450
  Deletes a specific webhook subscription using its unique `webhook_uuid`. This function sends a DELETE request to the Calendly API to permanently remove the subscription, stopping all future event notifications. It raises an error if the deletion fails.
478
451
 
@@ -493,14 +466,8 @@ class CalendlyApp(APIApplication):
493
466
  response.raise_for_status()
494
467
  return response.json()
495
468
 
496
- def list_webhook_subscriptions(
497
- self,
498
- organization=None,
499
- user=None,
500
- page_token=None,
501
- count=None,
502
- sort=None,
503
- scope=None,
469
+ async def list_webhook_subscriptions(
470
+ self, organization=None, user=None, page_token=None, count=None, sort=None, scope=None
504
471
  ) -> dict[str, Any]:
505
472
  """
506
473
  Retrieves a collection of webhook subscriptions for a given scope (organization or user). Supports filtering, sorting, and pagination to browse multiple subscriptions, unlike functions like `get_webhook_subscription` which fetches a single subscription by its unique ID.
@@ -538,15 +505,8 @@ class CalendlyApp(APIApplication):
538
505
  response.raise_for_status()
539
506
  return response.json()
540
507
 
541
- def create_webhook_subscription(
542
- self,
543
- events=None,
544
- group=None,
545
- organization=None,
546
- scope=None,
547
- signing_key=None,
548
- url=None,
549
- user=None,
508
+ async def create_webhook_subscription(
509
+ self, events=None, group=None, organization=None, scope=None, signing_key=None, url=None, user=None
550
510
  ) -> dict[str, Any]:
551
511
  """
552
512
  Creates a Calendly webhook subscription for specified events. It requires a callback URL, the scope (e.g., organization, user), and the list of events to monitor, registering the webhook via a POST request to the API.
@@ -597,9 +557,7 @@ class CalendlyApp(APIApplication):
597
557
  response.raise_for_status()
598
558
  return response.json()
599
559
 
600
- def create_limited_use_scheduling_link(
601
- self, max_event_count=None, owner=None, owner_type=None
602
- ) -> dict[str, Any]:
560
+ async def create_limited_use_scheduling_link(self, max_event_count=None, owner=None, owner_type=None) -> dict[str, Any]:
603
561
  """
604
562
  Generates a unique, limited-use scheduling link for a specific owner, such as an event type. The link is valid for a specified maximum number of bookings, after which it expires.
605
563
 
@@ -622,11 +580,7 @@ class CalendlyApp(APIApplication):
622
580
  Tags:
623
581
  scheduling_links
624
582
  """
625
- request_body = {
626
- "max_event_count": max_event_count,
627
- "owner": owner,
628
- "owner_type": owner_type,
629
- }
583
+ request_body = {"max_event_count": max_event_count, "owner": owner, "owner_type": owner_type}
630
584
  request_body = {k: v for k, v in request_body.items() if v is not None}
631
585
  url = f"{self.base_url}/scheduling_links"
632
586
  query_params = {}
@@ -634,7 +588,7 @@ class CalendlyApp(APIApplication):
634
588
  response.raise_for_status()
635
589
  return response.json()
636
590
 
637
- def request_invitee_data_deletion(self, emails=None) -> dict[str, Any]:
591
+ async def request_invitee_data_deletion(self, emails=None) -> dict[str, Any]:
638
592
  """
639
593
  Submits an asynchronous data deletion request for one or more invitees, identified by their email addresses, to comply with privacy regulations. This action permanently removes invitee information from the system.
640
594
 
@@ -656,9 +610,7 @@ class CalendlyApp(APIApplication):
656
610
  Tags:
657
611
  data_compliance, deletion, invitees12
658
612
  """
659
- request_body = {
660
- "emails": emails,
661
- }
613
+ request_body = {"emails": emails}
662
614
  request_body = {k: v for k, v in request_body.items() if v is not None}
663
615
  url = f"{self.base_url}/data_compliance/deletion/invitees"
664
616
  query_params = {}
@@ -666,9 +618,7 @@ class CalendlyApp(APIApplication):
666
618
  response.raise_for_status()
667
619
  return response.json()
668
620
 
669
- def request_scheduled_event_data_deletion(
670
- self, end_time=None, start_time=None
671
- ) -> dict[str, Any]:
621
+ async def request_scheduled_event_data_deletion(self, end_time=None, start_time=None) -> dict[str, Any]:
672
622
  """
673
623
  For data compliance, submits an asynchronous request to delete scheduled event data within a specified `start_time` and `end_time`. This targets events by time range, unlike `delete_invitee_data` which targets specific individuals.
674
624
 
@@ -689,10 +639,7 @@ class CalendlyApp(APIApplication):
689
639
  Tags:
690
640
  data_compliance, deletion, events
691
641
  """
692
- request_body = {
693
- "end_time": end_time,
694
- "start_time": start_time,
695
- }
642
+ request_body = {"end_time": end_time, "start_time": start_time}
696
643
  request_body = {k: v for k, v in request_body.items() if v is not None}
697
644
  url = f"{self.base_url}/data_compliance/deletion/events"
698
645
  query_params = {}
@@ -700,7 +647,7 @@ class CalendlyApp(APIApplication):
700
647
  response.raise_for_status()
701
648
  return response.json()
702
649
 
703
- def get_invitee_no_show(self, uuid) -> dict[str, Any]:
650
+ async def get_invitee_no_show(self, uuid) -> dict[str, Any]:
704
651
  """
705
652
  Retrieves the details for a specific 'no-show' record associated with an invitee, identified by its unique ID (UUID). This function fetches a single record, unlike create_invitee_no_show which creates one.
706
653
 
@@ -721,7 +668,7 @@ class CalendlyApp(APIApplication):
721
668
  response.raise_for_status()
722
669
  return response.json()
723
670
 
724
- def revoke_invitee_no_show(self, uuid) -> Any:
671
+ async def revoke_invitee_no_show(self, uuid) -> Any:
725
672
  """
726
673
  Deletes an invitee's 'no-show' record using its unique UUID. This operation revokes the no-show status previously assigned to an invitee, effectively undoing the action of `create_invitee_no_show`.
727
674
 
@@ -742,7 +689,7 @@ class CalendlyApp(APIApplication):
742
689
  response.raise_for_status()
743
690
  return response.json()
744
691
 
745
- def mark_invitee_as_no_show(self, invitee=None) -> dict[str, Any]:
692
+ async def mark_invitee_as_no_show(self, invitee=None) -> dict[str, Any]:
746
693
  """
747
694
  Marks a specific invitee as a 'no-show' by creating a no-show record. It requires the invitee's URI and sends a POST request to the `/invitee_no_shows` endpoint, returning the details of the newly created entry.
748
695
 
@@ -761,9 +708,7 @@ class CalendlyApp(APIApplication):
761
708
  Tags:
762
709
  invitee_no_shows
763
710
  """
764
- request_body = {
765
- "invitee": invitee,
766
- }
711
+ request_body = {"invitee": invitee}
767
712
  request_body = {k: v for k, v in request_body.items() if v is not None}
768
713
  url = f"{self.base_url}/invitee_no_shows"
769
714
  query_params = {}
@@ -771,7 +716,7 @@ class CalendlyApp(APIApplication):
771
716
  response.raise_for_status()
772
717
  return response.json()
773
718
 
774
- def get_group_by_id(self, uuid) -> dict[str, Any]:
719
+ async def get_group_by_id(self, uuid) -> dict[str, Any]:
775
720
  """
776
721
  Retrieves the details of a specific group by its unique identifier (UUID). Unlike `list_groups`, which returns multiple group records, this function fetches information for a single group.
777
722
 
@@ -792,9 +737,7 @@ class CalendlyApp(APIApplication):
792
737
  response.raise_for_status()
793
738
  return response.json()
794
739
 
795
- def list_groups(
796
- self, organization=None, page_token=None, count=None
797
- ) -> dict[str, Any]:
740
+ async def list_groups(self, organization=None, page_token=None, count=None) -> dict[str, Any]:
798
741
  """
799
742
  Retrieves a paginated list of groups associated with a specific organization. The result set can be controlled using pagination parameters for the page token and the number of items to return per page.
800
743
 
@@ -810,20 +753,12 @@ class CalendlyApp(APIApplication):
810
753
  groups
811
754
  """
812
755
  url = f"{self.base_url}/groups"
813
- query_params = {
814
- k: v
815
- for k, v in [
816
- ("organization", organization),
817
- ("page_token", page_token),
818
- ("count", count),
819
- ]
820
- if v is not None
821
- }
756
+ query_params = {k: v for k, v in [("organization", organization), ("page_token", page_token), ("count", count)] if v is not None}
822
757
  response = self._get(url, params=query_params)
823
758
  response.raise_for_status()
824
759
  return response.json()
825
760
 
826
- def get_group_relationship(self, uuid) -> dict[str, Any]:
761
+ async def get_group_relationship(self, uuid) -> dict[str, Any]:
827
762
  """
828
763
  Retrieves the details of a specific group relationship, which connects an owner (like a user or invitation) to a group, by its unique identifier (UUID). This differs from `list_group_relationships` which fetches a list.
829
764
 
@@ -844,9 +779,7 @@ class CalendlyApp(APIApplication):
844
779
  response.raise_for_status()
845
780
  return response.json()
846
781
 
847
- def list_group_relationships(
848
- self, count=None, page_token=None, organization=None, owner=None, group=None
849
- ) -> dict[str, Any]:
782
+ async def list_group_relationships(self, count=None, page_token=None, organization=None, owner=None, group=None) -> dict[str, Any]:
850
783
  """
851
784
  Fetches a paginated list of group relationships. The results can be filtered by organization, owner, or a specific group to refine the search and control the returned data set.
852
785
 
@@ -867,20 +800,14 @@ class CalendlyApp(APIApplication):
867
800
  url = f"{self.base_url}/group_relationships"
868
801
  query_params = {
869
802
  k: v
870
- for k, v in [
871
- ("count", count),
872
- ("page_token", page_token),
873
- ("organization", organization),
874
- ("owner", owner),
875
- ("group", group),
876
- ]
803
+ for k, v in [("count", count), ("page_token", page_token), ("organization", organization), ("owner", owner), ("group", group)]
877
804
  if v is not None
878
805
  }
879
806
  response = self._get(url, params=query_params)
880
807
  response.raise_for_status()
881
808
  return response.json()
882
809
 
883
- def get_routing_form(self, uuid) -> dict[str, Any]:
810
+ async def get_routing_form(self, uuid) -> dict[str, Any]:
884
811
  """
885
812
  Retrieves the details of a specific routing form using its unique identifier (UUID). This is distinct from `list_routing_forms`, which fetches a collection, and from functions that retrieve form submissions.
886
813
 
@@ -901,9 +828,7 @@ class CalendlyApp(APIApplication):
901
828
  response.raise_for_status()
902
829
  return response.json()
903
830
 
904
- def list_routing_forms(
905
- self, organization=None, count=None, page_token=None, sort=None
906
- ) -> dict[str, Any]:
831
+ async def list_routing_forms(self, organization=None, count=None, page_token=None, sort=None) -> dict[str, Any]:
907
832
  """
908
833
  Retrieves a list of routing forms for a specified organization. This function supports pagination using a page token, sorting by creation date, and limiting the number of results returned per request, distinguishing it from `get_routing_form` which fetches a single item.
909
834
 
@@ -921,20 +846,13 @@ class CalendlyApp(APIApplication):
921
846
  """
922
847
  url = f"{self.base_url}/routing_forms"
923
848
  query_params = {
924
- k: v
925
- for k, v in [
926
- ("organization", organization),
927
- ("count", count),
928
- ("page_token", page_token),
929
- ("sort", sort),
930
- ]
931
- if v is not None
849
+ k: v for k, v in [("organization", organization), ("count", count), ("page_token", page_token), ("sort", sort)] if v is not None
932
850
  }
933
851
  response = self._get(url, params=query_params)
934
852
  response.raise_for_status()
935
853
  return response.json()
936
854
 
937
- def get_routing_form_submission(self, uuid) -> dict[str, Any]:
855
+ async def get_routing_form_submission(self, uuid) -> dict[str, Any]:
938
856
  """
939
857
  Fetches details for a single routing form submission using its unique identifier (UUID). It queries the `/routing_form_submissions/{uuid}` endpoint, distinct from `list_routing_form_submissions` which retrieves multiple submissions.
940
858
 
@@ -955,9 +873,7 @@ class CalendlyApp(APIApplication):
955
873
  response.raise_for_status()
956
874
  return response.json()
957
875
 
958
- def get_routing_form_submissions(
959
- self, form=None, count=None, page_token=None, sort=None
960
- ) -> dict[str, Any]:
876
+ async def get_routing_form_submissions(self, form=None, count=None, page_token=None, sort=None) -> dict[str, Any]:
961
877
  """
962
878
  Retrieves a paginated list of submissions associated with a specific routing form. The results can be sorted by creation date and navigated using count and page_token parameters.
963
879
 
@@ -974,23 +890,12 @@ class CalendlyApp(APIApplication):
974
890
  routing_form_submissions
975
891
  """
976
892
  url = f"{self.base_url}/routing_form_submissions"
977
- query_params = {
978
- k: v
979
- for k, v in [
980
- ("form", form),
981
- ("count", count),
982
- ("page_token", page_token),
983
- ("sort", sort),
984
- ]
985
- if v is not None
986
- }
893
+ query_params = {k: v for k, v in [("form", form), ("count", count), ("page_token", page_token), ("sort", sort)] if v is not None}
987
894
  response = self._get(url, params=query_params)
988
895
  response.raise_for_status()
989
896
  return response.json()
990
897
 
991
- def list_event_type_available_times(
992
- self, event_type=None, start_time=None, end_time=None
993
- ) -> dict[str, Any]:
898
+ async def list_event_type_available_times(self, event_type=None, start_time=None, end_time=None) -> dict[str, Any]:
994
899
  """
995
900
  Retrieves a list of concrete, bookable time slots for a specific event type within a defined start and end time. It provides specific availability, distinct from functions that list a user's general busy times or configured schedules.
996
901
 
@@ -1006,20 +911,12 @@ class CalendlyApp(APIApplication):
1006
911
  event_type_available_times
1007
912
  """
1008
913
  url = f"{self.base_url}/event_type_available_times"
1009
- query_params = {
1010
- k: v
1011
- for k, v in [
1012
- ("event_type", event_type),
1013
- ("start_time", start_time),
1014
- ("end_time", end_time),
1015
- ]
1016
- if v is not None
1017
- }
914
+ query_params = {k: v for k, v in [("event_type", event_type), ("start_time", start_time), ("end_time", end_time)] if v is not None}
1018
915
  response = self._get(url, params=query_params)
1019
916
  response.raise_for_status()
1020
917
  return response.json()
1021
918
 
1022
- def list_activity_log_entries(
919
+ async def list_activity_log_entries(
1023
920
  self,
1024
921
  organization=None,
1025
922
  search_term=None,
@@ -1074,7 +971,7 @@ class CalendlyApp(APIApplication):
1074
971
  response.raise_for_status()
1075
972
  return response.json()
1076
973
 
1077
- def create_shareable_link(
974
+ async def create_shareable_link(
1078
975
  self,
1079
976
  availability_rule=None,
1080
977
  duration=None,
@@ -1191,9 +1088,7 @@ class CalendlyApp(APIApplication):
1191
1088
  response.raise_for_status()
1192
1089
  return response.json()
1193
1090
 
1194
- def list_user_busy_times(
1195
- self, user=None, start_time=None, end_time=None
1196
- ) -> dict[str, Any]:
1091
+ async def list_user_busy_times(self, user=None, start_time=None, end_time=None) -> dict[str, Any]:
1197
1092
  """
1198
1093
  Fetches a user's busy time intervals within a specified date range, including all scheduled events. This helps determine actual unavailability, differing from `list_user_availability_schedules` which retrieves a user's general working hours.
1199
1094
 
@@ -1209,20 +1104,12 @@ class CalendlyApp(APIApplication):
1209
1104
  user_busy_times
1210
1105
  """
1211
1106
  url = f"{self.base_url}/user_busy_times"
1212
- query_params = {
1213
- k: v
1214
- for k, v in [
1215
- ("user", user),
1216
- ("start_time", start_time),
1217
- ("end_time", end_time),
1218
- ]
1219
- if v is not None
1220
- }
1107
+ query_params = {k: v for k, v in [("user", user), ("start_time", start_time), ("end_time", end_time)] if v is not None}
1221
1108
  response = self._get(url, params=query_params)
1222
1109
  response.raise_for_status()
1223
1110
  return response.json()
1224
1111
 
1225
- def get_user_availability_schedule(self, uuid) -> dict[str, Any]:
1112
+ async def get_user_availability_schedule(self, uuid) -> dict[str, Any]:
1226
1113
  """
1227
1114
  Retrieves a specific user availability schedule by its unique identifier (UUID). It fetches a single schedule resource, unlike `list_user_availability_schedules`, which returns all schedules associated with a user.
1228
1115
 
@@ -1243,7 +1130,7 @@ class CalendlyApp(APIApplication):
1243
1130
  response.raise_for_status()
1244
1131
  return response.json()
1245
1132
 
1246
- def list_schedules_for_user(self, user=None) -> dict[str, Any]:
1133
+ async def list_schedules_for_user(self, user=None) -> dict[str, Any]:
1247
1134
  """
1248
1135
  Retrieves all availability schedules for a specified user via their URI. Unlike `get_user_availability_schedule`, which fetches a single schedule by its UUID, this function returns a collection of all schedules defining a user's availability intervals.
1249
1136
 
@@ -1262,9 +1149,7 @@ class CalendlyApp(APIApplication):
1262
1149
  response.raise_for_status()
1263
1150
  return response.json()
1264
1151
 
1265
- def list_event_type_memberships(
1266
- self, event_type=None, count=None, page_token=None
1267
- ) -> dict[str, Any]:
1152
+ async def list_event_type_memberships(self, event_type=None, count=None, page_token=None) -> dict[str, Any]:
1268
1153
  """
1269
1154
  Retrieves a paginated list of all user memberships (hosts) for a specific event type. It requires the event type's URI and allows for navigating through results using `count` and `page_token` parameters, returning the membership objects.
1270
1155
 
@@ -1280,28 +1165,13 @@ class CalendlyApp(APIApplication):
1280
1165
  event_type_memberships
1281
1166
  """
1282
1167
  url = f"{self.base_url}/event_type_memberships"
1283
- query_params = {
1284
- k: v
1285
- for k, v in [
1286
- ("event_type", event_type),
1287
- ("count", count),
1288
- ("page_token", page_token),
1289
- ]
1290
- if v is not None
1291
- }
1168
+ query_params = {k: v for k, v in [("event_type", event_type), ("count", count), ("page_token", page_token)] if v is not None}
1292
1169
  response = self._get(url, params=query_params)
1293
1170
  response.raise_for_status()
1294
1171
  return response.json()
1295
1172
 
1296
- def create_one_off_event_type(
1297
- self,
1298
- co_hosts=None,
1299
- date_setting=None,
1300
- duration=None,
1301
- host=None,
1302
- location=None,
1303
- name=None,
1304
- timezone=None,
1173
+ async def create_one_off_event_type(
1174
+ self, co_hosts=None, date_setting=None, duration=None, host=None, location=None, name=None, timezone=None
1305
1175
  ) -> dict[str, Any]:
1306
1176
  """
1307
1177
  Creates a unique, non-reusable event type for a single, ad-hoc meeting. It defines event details like host, co-hosts, duration, and location, distinguishing it from standard, reusable event types.
@@ -1356,9 +1226,7 @@ class CalendlyApp(APIApplication):
1356
1226
  response.raise_for_status()
1357
1227
  return response.json()
1358
1228
 
1359
- def get_sample_webhook_data(
1360
- self, event=None, organization=None, user=None, scope=None
1361
- ) -> dict[str, Any]:
1229
+ async def get_sample_webhook_data(self, event=None, organization=None, user=None, scope=None) -> dict[str, Any]:
1362
1230
  """
1363
1231
  Fetches a sample webhook data payload for a specified event, organization, and scope. This helps developers preview the JSON structure for a webhook notification, facilitating testing and integration without needing to trigger a live event.
1364
1232
 
@@ -1376,14 +1244,7 @@ class CalendlyApp(APIApplication):
1376
1244
  """
1377
1245
  url = f"{self.base_url}/sample_webhook_data"
1378
1246
  query_params = {
1379
- k: v
1380
- for k, v in [
1381
- ("event", event),
1382
- ("organization", organization),
1383
- ("user", user),
1384
- ("scope", scope),
1385
- ]
1386
- if v is not None
1247
+ k: v for k, v in [("event", event), ("organization", organization), ("user", user), ("scope", scope)] if v is not None
1387
1248
  }
1388
1249
  response = self._get(url, params=query_params)
1389
1250
  response.raise_for_status()