universal-mcp-applications 0.1.30rc2__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.
- universal_mcp/applications/ahrefs/app.py +52 -198
- universal_mcp/applications/airtable/app.py +23 -122
- universal_mcp/applications/apollo/app.py +111 -464
- universal_mcp/applications/asana/app.py +417 -1567
- universal_mcp/applications/aws_s3/app.py +36 -103
- universal_mcp/applications/bill/app.py +546 -1957
- universal_mcp/applications/box/app.py +1068 -3981
- universal_mcp/applications/braze/app.py +364 -1430
- universal_mcp/applications/browser_use/app.py +2 -8
- universal_mcp/applications/cal_com_v2/app.py +207 -625
- universal_mcp/applications/calendly/app.py +61 -200
- universal_mcp/applications/canva/app.py +45 -110
- universal_mcp/applications/clickup/app.py +207 -674
- universal_mcp/applications/coda/app.py +146 -426
- universal_mcp/applications/confluence/app.py +310 -1098
- universal_mcp/applications/contentful/app.py +36 -151
- universal_mcp/applications/crustdata/app.py +28 -107
- universal_mcp/applications/dialpad/app.py +283 -756
- universal_mcp/applications/digitalocean/app.py +1766 -5777
- universal_mcp/applications/domain_checker/app.py +3 -54
- universal_mcp/applications/e2b/app.py +14 -64
- universal_mcp/applications/elevenlabs/app.py +9 -47
- universal_mcp/applications/exa/app.py +6 -17
- universal_mcp/applications/falai/app.py +24 -101
- universal_mcp/applications/figma/app.py +53 -137
- universal_mcp/applications/file_system/app.py +2 -13
- universal_mcp/applications/firecrawl/app.py +51 -152
- universal_mcp/applications/fireflies/app.py +59 -281
- universal_mcp/applications/fpl/app.py +91 -528
- universal_mcp/applications/fpl/utils/fixtures.py +15 -49
- universal_mcp/applications/fpl/utils/helper.py +25 -89
- universal_mcp/applications/fpl/utils/league_utils.py +20 -64
- universal_mcp/applications/ghost_content/app.py +52 -161
- universal_mcp/applications/github/app.py +19 -56
- universal_mcp/applications/gong/app.py +88 -248
- universal_mcp/applications/google_calendar/app.py +16 -68
- universal_mcp/applications/google_docs/app.py +88 -188
- universal_mcp/applications/google_drive/app.py +141 -463
- universal_mcp/applications/google_gemini/app.py +12 -64
- universal_mcp/applications/google_mail/app.py +28 -157
- universal_mcp/applications/google_searchconsole/app.py +15 -48
- universal_mcp/applications/google_sheet/app.py +103 -580
- universal_mcp/applications/google_sheet/helper.py +10 -37
- universal_mcp/applications/hashnode/app.py +57 -269
- universal_mcp/applications/heygen/app.py +44 -122
- universal_mcp/applications/http_tools/app.py +10 -32
- universal_mcp/applications/hubspot/api_segments/crm_api.py +460 -1573
- universal_mcp/applications/hubspot/api_segments/marketing_api.py +74 -262
- universal_mcp/applications/hubspot/app.py +23 -87
- universal_mcp/applications/jira/app.py +2071 -7986
- universal_mcp/applications/klaviyo/app.py +494 -1376
- universal_mcp/applications/linkedin/README.md +9 -2
- universal_mcp/applications/linkedin/app.py +392 -212
- universal_mcp/applications/mailchimp/app.py +450 -1605
- universal_mcp/applications/markitdown/app.py +8 -20
- universal_mcp/applications/miro/app.py +217 -699
- universal_mcp/applications/ms_teams/app.py +64 -186
- universal_mcp/applications/neon/app.py +86 -192
- universal_mcp/applications/notion/app.py +21 -36
- universal_mcp/applications/onedrive/app.py +16 -38
- universal_mcp/applications/openai/app.py +42 -165
- universal_mcp/applications/outlook/app.py +24 -84
- universal_mcp/applications/perplexity/app.py +4 -19
- universal_mcp/applications/pipedrive/app.py +832 -3142
- universal_mcp/applications/posthog/app.py +163 -432
- universal_mcp/applications/reddit/app.py +40 -139
- universal_mcp/applications/resend/app.py +41 -107
- universal_mcp/applications/retell/app.py +14 -41
- universal_mcp/applications/rocketlane/app.py +221 -934
- universal_mcp/applications/scraper/README.md +7 -4
- universal_mcp/applications/scraper/app.py +216 -102
- universal_mcp/applications/semanticscholar/app.py +22 -64
- universal_mcp/applications/semrush/app.py +43 -77
- universal_mcp/applications/sendgrid/app.py +512 -1262
- universal_mcp/applications/sentry/app.py +271 -906
- universal_mcp/applications/serpapi/app.py +40 -143
- universal_mcp/applications/sharepoint/app.py +17 -39
- universal_mcp/applications/shopify/app.py +1551 -4287
- universal_mcp/applications/shortcut/app.py +155 -417
- universal_mcp/applications/slack/app.py +50 -101
- universal_mcp/applications/spotify/app.py +126 -325
- universal_mcp/applications/supabase/app.py +104 -213
- universal_mcp/applications/tavily/app.py +1 -1
- universal_mcp/applications/trello/app.py +693 -2656
- universal_mcp/applications/twilio/app.py +14 -50
- universal_mcp/applications/twitter/api_segments/compliance_api.py +4 -14
- universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +6 -18
- universal_mcp/applications/twitter/api_segments/likes_api.py +1 -3
- universal_mcp/applications/twitter/api_segments/lists_api.py +5 -15
- universal_mcp/applications/twitter/api_segments/trends_api.py +1 -3
- universal_mcp/applications/twitter/api_segments/tweets_api.py +9 -31
- universal_mcp/applications/twitter/api_segments/usage_api.py +1 -5
- universal_mcp/applications/twitter/api_segments/users_api.py +14 -42
- universal_mcp/applications/whatsapp/app.py +35 -186
- universal_mcp/applications/whatsapp/audio.py +2 -6
- universal_mcp/applications/whatsapp/whatsapp.py +17 -51
- universal_mcp/applications/whatsapp_business/app.py +70 -283
- universal_mcp/applications/wrike/app.py +45 -118
- universal_mcp/applications/yahoo_finance/app.py +19 -65
- universal_mcp/applications/youtube/app.py +75 -261
- universal_mcp/applications/zenquotes/app.py +2 -2
- {universal_mcp_applications-0.1.30rc2.dist-info → universal_mcp_applications-0.1.36rc2.dist-info}/METADATA +2 -2
- {universal_mcp_applications-0.1.30rc2.dist-info → universal_mcp_applications-0.1.36rc2.dist-info}/RECORD +105 -105
- {universal_mcp_applications-0.1.30rc2.dist-info → universal_mcp_applications-0.1.36rc2.dist-info}/WHEEL +0 -0
- {universal_mcp_applications-0.1.30rc2.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()
|