universal-mcp-applications 0.1.22__py3-none-any.whl → 0.1.39rc8__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 (120) hide show
  1. universal_mcp/applications/ahrefs/app.py +92 -238
  2. universal_mcp/applications/airtable/app.py +23 -122
  3. universal_mcp/applications/apollo/app.py +122 -475
  4. universal_mcp/applications/asana/app.py +605 -1755
  5. universal_mcp/applications/aws_s3/app.py +36 -103
  6. universal_mcp/applications/bill/app.py +644 -2055
  7. universal_mcp/applications/box/app.py +1246 -4159
  8. universal_mcp/applications/braze/app.py +410 -1476
  9. universal_mcp/applications/browser_use/README.md +15 -1
  10. universal_mcp/applications/browser_use/__init__.py +1 -0
  11. universal_mcp/applications/browser_use/app.py +94 -37
  12. universal_mcp/applications/cal_com_v2/app.py +207 -625
  13. universal_mcp/applications/calendly/app.py +103 -242
  14. universal_mcp/applications/canva/app.py +75 -140
  15. universal_mcp/applications/clickup/app.py +331 -798
  16. universal_mcp/applications/coda/app.py +240 -520
  17. universal_mcp/applications/confluence/app.py +497 -1285
  18. universal_mcp/applications/contentful/app.py +36 -151
  19. universal_mcp/applications/crustdata/app.py +42 -121
  20. universal_mcp/applications/dialpad/app.py +451 -924
  21. universal_mcp/applications/digitalocean/app.py +2071 -6082
  22. universal_mcp/applications/domain_checker/app.py +3 -54
  23. universal_mcp/applications/e2b/app.py +14 -64
  24. universal_mcp/applications/elevenlabs/app.py +9 -47
  25. universal_mcp/applications/exa/README.md +8 -4
  26. universal_mcp/applications/exa/app.py +408 -186
  27. universal_mcp/applications/falai/app.py +24 -101
  28. universal_mcp/applications/figma/app.py +91 -175
  29. universal_mcp/applications/file_system/app.py +2 -13
  30. universal_mcp/applications/firecrawl/app.py +186 -163
  31. universal_mcp/applications/fireflies/app.py +59 -281
  32. universal_mcp/applications/fpl/app.py +92 -529
  33. universal_mcp/applications/fpl/utils/fixtures.py +15 -49
  34. universal_mcp/applications/fpl/utils/helper.py +25 -89
  35. universal_mcp/applications/fpl/utils/league_utils.py +20 -64
  36. universal_mcp/applications/ghost_content/app.py +66 -175
  37. universal_mcp/applications/github/app.py +28 -65
  38. universal_mcp/applications/gong/app.py +140 -300
  39. universal_mcp/applications/google_calendar/app.py +26 -78
  40. universal_mcp/applications/google_docs/app.py +324 -354
  41. universal_mcp/applications/google_drive/app.py +194 -793
  42. universal_mcp/applications/google_gemini/app.py +29 -64
  43. universal_mcp/applications/google_mail/README.md +1 -0
  44. universal_mcp/applications/google_mail/app.py +93 -214
  45. universal_mcp/applications/google_searchconsole/app.py +25 -58
  46. universal_mcp/applications/google_sheet/app.py +174 -623
  47. universal_mcp/applications/google_sheet/helper.py +26 -53
  48. universal_mcp/applications/hashnode/app.py +57 -269
  49. universal_mcp/applications/heygen/app.py +77 -155
  50. universal_mcp/applications/http_tools/app.py +10 -32
  51. universal_mcp/applications/hubspot/README.md +1 -1
  52. universal_mcp/applications/hubspot/app.py +7508 -99
  53. universal_mcp/applications/jira/app.py +2419 -8334
  54. universal_mcp/applications/klaviyo/app.py +737 -1619
  55. universal_mcp/applications/linkedin/README.md +23 -4
  56. universal_mcp/applications/linkedin/app.py +861 -155
  57. universal_mcp/applications/mailchimp/app.py +696 -1851
  58. universal_mcp/applications/markitdown/app.py +8 -20
  59. universal_mcp/applications/miro/app.py +333 -815
  60. universal_mcp/applications/ms_teams/app.py +85 -207
  61. universal_mcp/applications/neon/app.py +144 -250
  62. universal_mcp/applications/notion/app.py +36 -51
  63. universal_mcp/applications/onedrive/README.md +24 -0
  64. universal_mcp/applications/onedrive/__init__.py +1 -0
  65. universal_mcp/applications/onedrive/app.py +316 -0
  66. universal_mcp/applications/openai/app.py +42 -165
  67. universal_mcp/applications/outlook/README.md +22 -9
  68. universal_mcp/applications/outlook/app.py +606 -262
  69. universal_mcp/applications/perplexity/README.md +2 -1
  70. universal_mcp/applications/perplexity/app.py +162 -20
  71. universal_mcp/applications/pipedrive/app.py +1021 -3331
  72. universal_mcp/applications/posthog/app.py +272 -541
  73. universal_mcp/applications/reddit/app.py +88 -204
  74. universal_mcp/applications/resend/app.py +41 -107
  75. universal_mcp/applications/retell/app.py +23 -50
  76. universal_mcp/applications/rocketlane/app.py +250 -963
  77. universal_mcp/applications/scraper/README.md +7 -4
  78. universal_mcp/applications/scraper/app.py +245 -283
  79. universal_mcp/applications/semanticscholar/app.py +36 -78
  80. universal_mcp/applications/semrush/app.py +43 -77
  81. universal_mcp/applications/sendgrid/app.py +826 -1576
  82. universal_mcp/applications/sentry/app.py +444 -1079
  83. universal_mcp/applications/serpapi/app.py +40 -143
  84. universal_mcp/applications/sharepoint/README.md +16 -14
  85. universal_mcp/applications/sharepoint/app.py +245 -154
  86. universal_mcp/applications/shopify/app.py +1743 -4479
  87. universal_mcp/applications/shortcut/app.py +272 -534
  88. universal_mcp/applications/slack/app.py +58 -109
  89. universal_mcp/applications/spotify/app.py +206 -405
  90. universal_mcp/applications/supabase/app.py +174 -283
  91. universal_mcp/applications/tavily/app.py +2 -2
  92. universal_mcp/applications/trello/app.py +853 -2816
  93. universal_mcp/applications/twilio/app.py +14 -50
  94. universal_mcp/applications/twitter/api_segments/compliance_api.py +4 -14
  95. universal_mcp/applications/twitter/api_segments/dm_conversations_api.py +6 -18
  96. universal_mcp/applications/twitter/api_segments/likes_api.py +1 -3
  97. universal_mcp/applications/twitter/api_segments/lists_api.py +5 -15
  98. universal_mcp/applications/twitter/api_segments/trends_api.py +1 -3
  99. universal_mcp/applications/twitter/api_segments/tweets_api.py +9 -31
  100. universal_mcp/applications/twitter/api_segments/usage_api.py +1 -5
  101. universal_mcp/applications/twitter/api_segments/users_api.py +14 -42
  102. universal_mcp/applications/whatsapp/app.py +35 -186
  103. universal_mcp/applications/whatsapp/audio.py +2 -6
  104. universal_mcp/applications/whatsapp/whatsapp.py +17 -51
  105. universal_mcp/applications/whatsapp_business/app.py +86 -299
  106. universal_mcp/applications/wrike/app.py +80 -153
  107. universal_mcp/applications/yahoo_finance/app.py +19 -65
  108. universal_mcp/applications/youtube/app.py +120 -306
  109. universal_mcp/applications/zenquotes/app.py +4 -4
  110. {universal_mcp_applications-0.1.22.dist-info → universal_mcp_applications-0.1.39rc8.dist-info}/METADATA +4 -2
  111. {universal_mcp_applications-0.1.22.dist-info → universal_mcp_applications-0.1.39rc8.dist-info}/RECORD +113 -117
  112. {universal_mcp_applications-0.1.22.dist-info → universal_mcp_applications-0.1.39rc8.dist-info}/WHEEL +1 -1
  113. universal_mcp/applications/hubspot/api_segments/__init__.py +0 -0
  114. universal_mcp/applications/hubspot/api_segments/api_segment_base.py +0 -54
  115. universal_mcp/applications/hubspot/api_segments/crm_api.py +0 -7337
  116. universal_mcp/applications/hubspot/api_segments/marketing_api.py +0 -1467
  117. universal_mcp/applications/unipile/README.md +0 -28
  118. universal_mcp/applications/unipile/__init__.py +0 -1
  119. universal_mcp/applications/unipile/app.py +0 -1077
  120. {universal_mcp_applications-0.1.22.dist-info → universal_mcp_applications-0.1.39rc8.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,15 +8,8 @@ class FigmaApp(APIApplication):
9
8
  super().__init__(name="figma", integration=integration, **kwargs)
10
9
  self.base_url = "https://api.figma.com"
11
10
 
12
- def get_file(
13
- self,
14
- file_key,
15
- version=None,
16
- ids=None,
17
- depth=None,
18
- geometry=None,
19
- plugin_data=None,
20
- branch_data=None,
11
+ async def get_file(
12
+ self, file_key, version=None, ids=None, depth=None, geometry=None, plugin_data=None, branch_data=None
21
13
  ) -> dict[str, Any]:
22
14
  """
23
15
  Retrieves a specified file's data (including versions, geometry, and plugin information) from the API using a unique file identifier.
@@ -52,13 +44,11 @@ class FigmaApp(APIApplication):
52
44
  ]
53
45
  if v is not None
54
46
  }
55
- response = self._get(url, params=query_params)
47
+ response = await self._aget(url, params=query_params)
56
48
  response.raise_for_status()
57
49
  return response.json()
58
50
 
59
- def get_file_nodes(
60
- self, file_key, ids, version=None, depth=None, geometry=None, plugin_data=None
61
- ) -> dict[str, Any]:
51
+ async def get_file_nodes(self, file_key, ids, version=None, depth=None, geometry=None, plugin_data=None) -> dict[str, Any]:
62
52
  """
63
53
  Retrieves nodes related to a file identified by the "file_key" using the specified query parameters for filtering by "ids", "version", "depth", "geometry", and "plugin_data".
64
54
 
@@ -81,20 +71,14 @@ class FigmaApp(APIApplication):
81
71
  url = f"{self.base_url}/v1/files/{file_key}/nodes"
82
72
  query_params = {
83
73
  k: v
84
- for k, v in [
85
- ("ids", ids),
86
- ("version", version),
87
- ("depth", depth),
88
- ("geometry", geometry),
89
- ("plugin_data", plugin_data),
90
- ]
74
+ for k, v in [("ids", ids), ("version", version), ("depth", depth), ("geometry", geometry), ("plugin_data", plugin_data)]
91
75
  if v is not None
92
76
  }
93
- response = self._get(url, params=query_params)
77
+ response = await self._aget(url, params=query_params)
94
78
  response.raise_for_status()
95
79
  return response.json()
96
80
 
97
- def get_images(
81
+ async def get_images(
98
82
  self,
99
83
  file_key,
100
84
  ids,
@@ -149,11 +133,11 @@ class FigmaApp(APIApplication):
149
133
  ]
150
134
  if v is not None
151
135
  }
152
- response = self._get(url, params=query_params)
136
+ response = await self._aget(url, params=query_params)
153
137
  response.raise_for_status()
154
138
  return response.json()
155
139
 
156
- def get_image_fills(self, file_key) -> dict[str, Any]:
140
+ async def get_image_fills(self, file_key) -> dict[str, Any]:
157
141
  """
158
142
  Retrieves images associated with a file identified by the `{file_key}` using the `/v1/files/{file_key}/images` API endpoint.
159
143
 
@@ -170,11 +154,11 @@ class FigmaApp(APIApplication):
170
154
  raise ValueError("Missing required parameter 'file_key'")
171
155
  url = f"{self.base_url}/v1/files/{file_key}/images"
172
156
  query_params = {}
173
- response = self._get(url, params=query_params)
157
+ response = await self._aget(url, params=query_params)
174
158
  response.raise_for_status()
175
159
  return response.json()
176
160
 
177
- def get_team_projects(self, team_id) -> dict[str, Any]:
161
+ async def get_team_projects(self, team_id) -> dict[str, Any]:
178
162
  """
179
163
  Retrieves a list of projects associated with a specific team identified by the team_id parameter.
180
164
 
@@ -191,11 +175,11 @@ class FigmaApp(APIApplication):
191
175
  raise ValueError("Missing required parameter 'team_id'")
192
176
  url = f"{self.base_url}/v1/teams/{team_id}/projects"
193
177
  query_params = {}
194
- response = self._get(url, params=query_params)
178
+ response = await self._aget(url, params=query_params)
195
179
  response.raise_for_status()
196
180
  return response.json()
197
181
 
198
- def get_project_files(self, project_id, branch_data=None) -> dict[str, Any]:
182
+ async def get_project_files(self, project_id, branch_data=None) -> dict[str, Any]:
199
183
  """
200
184
  Retrieves files from a specified project, optionally including branch data, using the provided project identifier.
201
185
 
@@ -212,16 +196,12 @@ class FigmaApp(APIApplication):
212
196
  if project_id is None:
213
197
  raise ValueError("Missing required parameter 'project_id'")
214
198
  url = f"{self.base_url}/v1/projects/{project_id}/files"
215
- query_params = {
216
- k: v for k, v in [("branch_data", branch_data)] if v is not None
217
- }
218
- response = self._get(url, params=query_params)
199
+ query_params = {k: v for k, v in [("branch_data", branch_data)] if v is not None}
200
+ response = await self._aget(url, params=query_params)
219
201
  response.raise_for_status()
220
202
  return response.json()
221
203
 
222
- def get_file_versions(
223
- self, file_key, page_size=None, before=None, after=None
224
- ) -> dict[str, Any]:
204
+ async def get_file_versions(self, file_key, page_size=None, before=None, after=None) -> dict[str, Any]:
225
205
  """
226
206
  Retrieves a list of file versions using the "GET" method, filtering by file key and optional query parameters for pagination and sorting.
227
207
 
@@ -240,16 +220,12 @@ class FigmaApp(APIApplication):
240
220
  if file_key is None:
241
221
  raise ValueError("Missing required parameter 'file_key'")
242
222
  url = f"{self.base_url}/v1/files/{file_key}/versions"
243
- query_params = {
244
- k: v
245
- for k, v in [("page_size", page_size), ("before", before), ("after", after)]
246
- if v is not None
247
- }
248
- response = self._get(url, params=query_params)
223
+ query_params = {k: v for k, v in [("page_size", page_size), ("before", before), ("after", after)] if v is not None}
224
+ response = await self._aget(url, params=query_params)
249
225
  response.raise_for_status()
250
226
  return response.json()
251
227
 
252
- def get_comments(self, file_key, as_md=None) -> dict[str, Any]:
228
+ async def get_comments(self, file_key, as_md=None) -> dict[str, Any]:
253
229
  """
254
230
  Retrieves comments associated with a specified file and optionally returns them in Markdown format based on the query parameter.
255
231
 
@@ -267,13 +243,11 @@ class FigmaApp(APIApplication):
267
243
  raise ValueError("Missing required parameter 'file_key'")
268
244
  url = f"{self.base_url}/v1/files/{file_key}/comments"
269
245
  query_params = {k: v for k, v in [("as_md", as_md)] if v is not None}
270
- response = self._get(url, params=query_params)
246
+ response = await self._aget(url, params=query_params)
271
247
  response.raise_for_status()
272
248
  return response.json()
273
249
 
274
- def post_comment(
275
- self, file_key, message, comment_id=None, client_meta=None
276
- ) -> dict[str, Any]:
250
+ async def post_comment(self, file_key, message, comment_id=None, client_meta=None) -> dict[str, Any]:
277
251
  """
278
252
  Creates a new comment on a file specified by the file_key and returns an appropriate status code.
279
253
 
@@ -291,19 +265,15 @@ class FigmaApp(APIApplication):
291
265
  """
292
266
  if file_key is None:
293
267
  raise ValueError("Missing required parameter 'file_key'")
294
- request_body = {
295
- "message": message,
296
- "comment_id": comment_id,
297
- "client_meta": client_meta,
298
- }
268
+ request_body = {"message": message, "comment_id": comment_id, "client_meta": client_meta}
299
269
  request_body = {k: v for k, v in request_body.items() if v is not None}
300
270
  url = f"{self.base_url}/v1/files/{file_key}/comments"
301
271
  query_params = {}
302
- response = self._post(url, data=request_body, params=query_params)
272
+ response = await self._apost(url, data=request_body, params=query_params)
303
273
  response.raise_for_status()
304
274
  return response.json()
305
275
 
306
- def delete_comment(self, file_key, comment_id) -> dict[str, Any]:
276
+ async def delete_comment(self, file_key, comment_id) -> dict[str, Any]:
307
277
  """
308
278
  Deletes a specified comment from a file identified by its file key and comment ID.
309
279
 
@@ -323,13 +293,11 @@ class FigmaApp(APIApplication):
323
293
  raise ValueError("Missing required parameter 'comment_id'")
324
294
  url = f"{self.base_url}/v1/files/{file_key}/comments/{comment_id}"
325
295
  query_params = {}
326
- response = self._delete(url, params=query_params)
296
+ response = await self._adelete(url, params=query_params)
327
297
  response.raise_for_status()
328
298
  return response.json()
329
299
 
330
- def get_comment_reactions(
331
- self, file_key, comment_id, cursor=None
332
- ) -> dict[str, Any]:
300
+ async def get_comment_reactions(self, file_key, comment_id, cursor=None) -> dict[str, Any]:
333
301
  """
334
302
  Retrieves reactions for a specific comment in a file using the provided file key and comment ID.
335
303
 
@@ -350,11 +318,11 @@ class FigmaApp(APIApplication):
350
318
  raise ValueError("Missing required parameter 'comment_id'")
351
319
  url = f"{self.base_url}/v1/files/{file_key}/comments/{comment_id}/reactions"
352
320
  query_params = {k: v for k, v in [("cursor", cursor)] if v is not None}
353
- response = self._get(url, params=query_params)
321
+ response = await self._aget(url, params=query_params)
354
322
  response.raise_for_status()
355
323
  return response.json()
356
324
 
357
- def post_comment_reaction(self, file_key, comment_id, emoji) -> dict[str, Any]:
325
+ async def post_comment_reaction(self, file_key, comment_id, emoji) -> dict[str, Any]:
358
326
  """
359
327
  Adds a reaction to a specific comment on a file identified by the file key and comment ID using the "POST" method at the "/v1/files/{file_key}/comments/{comment_id}/reactions" endpoint.
360
328
 
@@ -373,17 +341,15 @@ class FigmaApp(APIApplication):
373
341
  raise ValueError("Missing required parameter 'file_key'")
374
342
  if comment_id is None:
375
343
  raise ValueError("Missing required parameter 'comment_id'")
376
- request_body = {
377
- "emoji": emoji,
378
- }
344
+ request_body = {"emoji": emoji}
379
345
  request_body = {k: v for k, v in request_body.items() if v is not None}
380
346
  url = f"{self.base_url}/v1/files/{file_key}/comments/{comment_id}/reactions"
381
347
  query_params = {}
382
- response = self._post(url, data=request_body, params=query_params)
348
+ response = await self._apost(url, data=request_body, params=query_params)
383
349
  response.raise_for_status()
384
350
  return response.json()
385
351
 
386
- def delete_comment_reaction(self, file_key, comment_id, emoji) -> dict[str, Any]:
352
+ async def delete_comment_reaction(self, file_key, comment_id, emoji) -> dict[str, Any]:
387
353
  """
388
354
  Removes a reaction emoji from a comment on a file using the specified emoji parameter.
389
355
 
@@ -404,11 +370,11 @@ class FigmaApp(APIApplication):
404
370
  raise ValueError("Missing required parameter 'comment_id'")
405
371
  url = f"{self.base_url}/v1/files/{file_key}/comments/{comment_id}/reactions"
406
372
  query_params = {k: v for k, v in [("emoji", emoji)] if v is not None}
407
- response = self._delete(url, params=query_params)
373
+ response = await self._adelete(url, params=query_params)
408
374
  response.raise_for_status()
409
375
  return response.json()
410
376
 
411
- def get_me(self) -> Any:
377
+ async def get_me(self) -> Any:
412
378
  """
413
379
  Retrieves the authenticated user's profile data.
414
380
 
@@ -420,13 +386,11 @@ class FigmaApp(APIApplication):
420
386
  """
421
387
  url = f"{self.base_url}/v1/me"
422
388
  query_params = {}
423
- response = self._get(url, params=query_params)
389
+ response = await self._aget(url, params=query_params)
424
390
  response.raise_for_status()
425
391
  return response.json()
426
392
 
427
- def get_team_components(
428
- self, team_id, page_size=None, after=None, before=None
429
- ) -> dict[str, Any]:
393
+ async def get_team_components(self, team_id, page_size=None, after=None, before=None) -> dict[str, Any]:
430
394
  """
431
395
  Retrieves a list of components for a specified team with pagination support using page_size, after, and before parameters.
432
396
 
@@ -445,16 +409,12 @@ class FigmaApp(APIApplication):
445
409
  if team_id is None:
446
410
  raise ValueError("Missing required parameter 'team_id'")
447
411
  url = f"{self.base_url}/v1/teams/{team_id}/components"
448
- query_params = {
449
- k: v
450
- for k, v in [("page_size", page_size), ("after", after), ("before", before)]
451
- if v is not None
452
- }
453
- response = self._get(url, params=query_params)
412
+ query_params = {k: v for k, v in [("page_size", page_size), ("after", after), ("before", before)] if v is not None}
413
+ response = await self._aget(url, params=query_params)
454
414
  response.raise_for_status()
455
415
  return response.json()
456
416
 
457
- def get_file_components(self, file_key) -> dict[str, Any]:
417
+ async def get_file_components(self, file_key) -> dict[str, Any]:
458
418
  """
459
419
  Retrieves a list of components associated with a file identified by the specified file key using the API endpoint "/v1/files/{file_key}/components".
460
420
 
@@ -471,11 +431,11 @@ class FigmaApp(APIApplication):
471
431
  raise ValueError("Missing required parameter 'file_key'")
472
432
  url = f"{self.base_url}/v1/files/{file_key}/components"
473
433
  query_params = {}
474
- response = self._get(url, params=query_params)
434
+ response = await self._aget(url, params=query_params)
475
435
  response.raise_for_status()
476
436
  return response.json()
477
437
 
478
- def get_component(self, key) -> dict[str, Any]:
438
+ async def get_component(self, key) -> dict[str, Any]:
479
439
  """
480
440
  Retrieves component information for a specific key using the API endpoint at "/v1/components/{key}" with the GET method.
481
441
 
@@ -492,13 +452,11 @@ class FigmaApp(APIApplication):
492
452
  raise ValueError("Missing required parameter 'key'")
493
453
  url = f"{self.base_url}/v1/components/{key}"
494
454
  query_params = {}
495
- response = self._get(url, params=query_params)
455
+ response = await self._aget(url, params=query_params)
496
456
  response.raise_for_status()
497
457
  return response.json()
498
458
 
499
- def get_team_component_sets(
500
- self, team_id, page_size=None, after=None, before=None
501
- ) -> dict[str, Any]:
459
+ async def get_team_component_sets(self, team_id, page_size=None, after=None, before=None) -> dict[str, Any]:
502
460
  """
503
461
  Retrieves a paginated list of component sets associated with a specific team ID, supporting pagination via page size, after, and before query parameters.
504
462
 
@@ -517,16 +475,12 @@ class FigmaApp(APIApplication):
517
475
  if team_id is None:
518
476
  raise ValueError("Missing required parameter 'team_id'")
519
477
  url = f"{self.base_url}/v1/teams/{team_id}/component_sets"
520
- query_params = {
521
- k: v
522
- for k, v in [("page_size", page_size), ("after", after), ("before", before)]
523
- if v is not None
524
- }
525
- response = self._get(url, params=query_params)
478
+ query_params = {k: v for k, v in [("page_size", page_size), ("after", after), ("before", before)] if v is not None}
479
+ response = await self._aget(url, params=query_params)
526
480
  response.raise_for_status()
527
481
  return response.json()
528
482
 
529
- def get_file_component_sets(self, file_key) -> dict[str, Any]:
483
+ async def get_file_component_sets(self, file_key) -> dict[str, Any]:
530
484
  """
531
485
  Retrieves the component sets associated with a file identified by a specific file key using the "GET" method at the "/v1/files/{file_key}/component_sets" endpoint.
532
486
 
@@ -543,11 +497,11 @@ class FigmaApp(APIApplication):
543
497
  raise ValueError("Missing required parameter 'file_key'")
544
498
  url = f"{self.base_url}/v1/files/{file_key}/component_sets"
545
499
  query_params = {}
546
- response = self._get(url, params=query_params)
500
+ response = await self._aget(url, params=query_params)
547
501
  response.raise_for_status()
548
502
  return response.json()
549
503
 
550
- def get_component_set(self, key) -> dict[str, Any]:
504
+ async def get_component_set(self, key) -> dict[str, Any]:
551
505
  """
552
506
  Retrieves a component set by its unique key identifier and returns the associated component data.
553
507
 
@@ -564,13 +518,11 @@ class FigmaApp(APIApplication):
564
518
  raise ValueError("Missing required parameter 'key'")
565
519
  url = f"{self.base_url}/v1/component_sets/{key}"
566
520
  query_params = {}
567
- response = self._get(url, params=query_params)
521
+ response = await self._aget(url, params=query_params)
568
522
  response.raise_for_status()
569
523
  return response.json()
570
524
 
571
- def get_team_styles(
572
- self, team_id, page_size=None, after=None, before=None
573
- ) -> dict[str, Any]:
525
+ async def get_team_styles(self, team_id, page_size=None, after=None, before=None) -> dict[str, Any]:
574
526
  """
575
527
  Retrieves paginated style resources associated with a specific team using query parameters for pagination control.
576
528
 
@@ -589,16 +541,12 @@ class FigmaApp(APIApplication):
589
541
  if team_id is None:
590
542
  raise ValueError("Missing required parameter 'team_id'")
591
543
  url = f"{self.base_url}/v1/teams/{team_id}/styles"
592
- query_params = {
593
- k: v
594
- for k, v in [("page_size", page_size), ("after", after), ("before", before)]
595
- if v is not None
596
- }
597
- response = self._get(url, params=query_params)
544
+ query_params = {k: v for k, v in [("page_size", page_size), ("after", after), ("before", before)] if v is not None}
545
+ response = await self._aget(url, params=query_params)
598
546
  response.raise_for_status()
599
547
  return response.json()
600
548
 
601
- def get_file_styles(self, file_key) -> dict[str, Any]:
549
+ async def get_file_styles(self, file_key) -> dict[str, Any]:
602
550
  """
603
551
  Retrieves styles information for a specific file identified by the file key using the API endpoint "/v1/files/{file_key}/styles" with the GET method.
604
552
 
@@ -615,11 +563,11 @@ class FigmaApp(APIApplication):
615
563
  raise ValueError("Missing required parameter 'file_key'")
616
564
  url = f"{self.base_url}/v1/files/{file_key}/styles"
617
565
  query_params = {}
618
- response = self._get(url, params=query_params)
566
+ response = await self._aget(url, params=query_params)
619
567
  response.raise_for_status()
620
568
  return response.json()
621
569
 
622
- def get_style(self, key) -> dict[str, Any]:
570
+ async def get_style(self, key) -> dict[str, Any]:
623
571
  """
624
572
  Retrieves a style object associated with the specified key using the "GET" method at the "/v1/styles/{key}" endpoint.
625
573
 
@@ -636,13 +584,11 @@ class FigmaApp(APIApplication):
636
584
  raise ValueError("Missing required parameter 'key'")
637
585
  url = f"{self.base_url}/v1/styles/{key}"
638
586
  query_params = {}
639
- response = self._get(url, params=query_params)
587
+ response = await self._aget(url, params=query_params)
640
588
  response.raise_for_status()
641
589
  return response.json()
642
590
 
643
- def post_webhook(
644
- self, event_type, team_id, endpoint, passcode, status=None, description=None
645
- ) -> dict[str, Any]:
591
+ async def post_webhook(self, event_type, team_id, endpoint, passcode, status=None, description=None) -> dict[str, Any]:
646
592
  """
647
593
  Registers a new webhook to receive HTTP callbacks for specified events, returning success or error status codes.
648
594
 
@@ -673,11 +619,11 @@ class FigmaApp(APIApplication):
673
619
  request_body = {k: v for k, v in request_body.items() if v is not None}
674
620
  url = f"{self.base_url}/v2/webhooks"
675
621
  query_params = {}
676
- response = self._post(url, data=request_body, params=query_params)
622
+ response = await self._apost(url, data=request_body, params=query_params)
677
623
  response.raise_for_status()
678
624
  return response.json()
679
625
 
680
- def get_webhook(self, webhook_id) -> dict[str, Any]:
626
+ async def get_webhook(self, webhook_id) -> dict[str, Any]:
681
627
  """
682
628
  Retrieves information about a specific webhook by its ID using the "GET" method at the path "/v2/webhooks/{webhook_id}".
683
629
 
@@ -694,13 +640,11 @@ class FigmaApp(APIApplication):
694
640
  raise ValueError("Missing required parameter 'webhook_id'")
695
641
  url = f"{self.base_url}/v2/webhooks/{webhook_id}"
696
642
  query_params = {}
697
- response = self._get(url, params=query_params)
643
+ response = await self._aget(url, params=query_params)
698
644
  response.raise_for_status()
699
645
  return response.json()
700
646
 
701
- def put_webhook(
702
- self, webhook_id, event_type, endpoint, passcode, status=None, description=None
703
- ) -> dict[str, Any]:
647
+ async def put_webhook(self, webhook_id, event_type, endpoint, passcode, status=None, description=None) -> dict[str, Any]:
704
648
  """
705
649
  Updates an existing webhook's configuration using the provided webhook ID and returns an HTTP status code indicating success or failure.
706
650
 
@@ -722,21 +666,15 @@ class FigmaApp(APIApplication):
722
666
  """
723
667
  if webhook_id is None:
724
668
  raise ValueError("Missing required parameter 'webhook_id'")
725
- request_body = {
726
- "event_type": event_type,
727
- "endpoint": endpoint,
728
- "passcode": passcode,
729
- "status": status,
730
- "description": description,
731
- }
669
+ request_body = {"event_type": event_type, "endpoint": endpoint, "passcode": passcode, "status": status, "description": description}
732
670
  request_body = {k: v for k, v in request_body.items() if v is not None}
733
671
  url = f"{self.base_url}/v2/webhooks/{webhook_id}"
734
672
  query_params = {}
735
- response = self._put(url, data=request_body, params=query_params)
673
+ response = await self._aput(url, data=request_body, params=query_params)
736
674
  response.raise_for_status()
737
675
  return response.json()
738
676
 
739
- def delete_webhook(self, webhook_id) -> dict[str, Any]:
677
+ async def delete_webhook(self, webhook_id) -> dict[str, Any]:
740
678
  """
741
679
  Deletes a webhook identified by its `webhook_id`, permanently removing it to manage and optimize webhook configurations.
742
680
 
@@ -753,11 +691,11 @@ class FigmaApp(APIApplication):
753
691
  raise ValueError("Missing required parameter 'webhook_id'")
754
692
  url = f"{self.base_url}/v2/webhooks/{webhook_id}"
755
693
  query_params = {}
756
- response = self._delete(url, params=query_params)
694
+ response = await self._adelete(url, params=query_params)
757
695
  response.raise_for_status()
758
696
  return response.json()
759
697
 
760
- def get_team_webhooks(self, team_id) -> dict[str, Any]:
698
+ async def get_team_webhooks(self, team_id) -> dict[str, Any]:
761
699
  """
762
700
  Retrieves a list of webhooks for a specified team using the "GET" method, with the team identified by the `team_id` path parameter.
763
701
 
@@ -774,11 +712,11 @@ class FigmaApp(APIApplication):
774
712
  raise ValueError("Missing required parameter 'team_id'")
775
713
  url = f"{self.base_url}/v2/teams/{team_id}/webhooks"
776
714
  query_params = {}
777
- response = self._get(url, params=query_params)
715
+ response = await self._aget(url, params=query_params)
778
716
  response.raise_for_status()
779
717
  return response.json()
780
718
 
781
- def get_webhook_requests(self, webhook_id) -> dict[str, Any]:
719
+ async def get_webhook_requests(self, webhook_id) -> dict[str, Any]:
782
720
  """
783
721
  Retrieves a list of requests for a specific webhook identified by `{webhook_id}` using the "GET" method.
784
722
 
@@ -795,13 +733,11 @@ class FigmaApp(APIApplication):
795
733
  raise ValueError("Missing required parameter 'webhook_id'")
796
734
  url = f"{self.base_url}/v2/webhooks/{webhook_id}/requests"
797
735
  query_params = {}
798
- response = self._get(url, params=query_params)
736
+ response = await self._aget(url, params=query_params)
799
737
  response.raise_for_status()
800
738
  return response.json()
801
739
 
802
- def get_activity_logs(
803
- self, events=None, start_time=None, end_time=None, limit=None, order=None
804
- ) -> dict[str, Any]:
740
+ async def get_activity_logs(self, events=None, start_time=None, end_time=None, limit=None, order=None) -> dict[str, Any]:
805
741
  """
806
742
  Retrieves a list of activity logs filtered by specified events, time range, and other parameters, returning the results in a specified order with a limited number of entries.
807
743
 
@@ -821,26 +757,15 @@ class FigmaApp(APIApplication):
821
757
  url = f"{self.base_url}/v1/activity_logs"
822
758
  query_params = {
823
759
  k: v
824
- for k, v in [
825
- ("events", events),
826
- ("start_time", start_time),
827
- ("end_time", end_time),
828
- ("limit", limit),
829
- ("order", order),
830
- ]
760
+ for k, v in [("events", events), ("start_time", start_time), ("end_time", end_time), ("limit", limit), ("order", order)]
831
761
  if v is not None
832
762
  }
833
- response = self._get(url, params=query_params)
763
+ response = await self._aget(url, params=query_params)
834
764
  response.raise_for_status()
835
765
  return response.json()
836
766
 
837
- def get_payments(
838
- self,
839
- plugin_payment_token=None,
840
- user_id=None,
841
- community_file_id=None,
842
- plugin_id=None,
843
- widget_id=None,
767
+ async def get_payments(
768
+ self, plugin_payment_token=None, user_id=None, community_file_id=None, plugin_id=None, widget_id=None
844
769
  ) -> dict[str, Any]:
845
770
  """
846
771
  Retrieves payment information based on specified parameters, including plugin payment token, user ID, community file ID, plugin ID, and widget ID, using the "/v1/payments" API endpoint with a GET request.
@@ -870,11 +795,11 @@ class FigmaApp(APIApplication):
870
795
  ]
871
796
  if v is not None
872
797
  }
873
- response = self._get(url, params=query_params)
798
+ response = await self._aget(url, params=query_params)
874
799
  response.raise_for_status()
875
800
  return response.json()
876
801
 
877
- def get_local_variables(self, file_key) -> dict[str, Any]:
802
+ async def get_local_variables(self, file_key) -> dict[str, Any]:
878
803
  """
879
804
  Retrieves local variables for a file specified by the "file_key" using the "GET" method.
880
805
 
@@ -891,11 +816,11 @@ class FigmaApp(APIApplication):
891
816
  raise ValueError("Missing required parameter 'file_key'")
892
817
  url = f"{self.base_url}/v1/files/{file_key}/variables/local"
893
818
  query_params = {}
894
- response = self._get(url, params=query_params)
819
+ response = await self._aget(url, params=query_params)
895
820
  response.raise_for_status()
896
821
  return response.json()
897
822
 
898
- def get_published_variables(self, file_key) -> dict[str, Any]:
823
+ async def get_published_variables(self, file_key) -> dict[str, Any]:
899
824
  """
900
825
  Retrieves the published variables for a file identified by the `{file_key}` using the `GET` method.
901
826
 
@@ -912,17 +837,12 @@ class FigmaApp(APIApplication):
912
837
  raise ValueError("Missing required parameter 'file_key'")
913
838
  url = f"{self.base_url}/v1/files/{file_key}/variables/published"
914
839
  query_params = {}
915
- response = self._get(url, params=query_params)
840
+ response = await self._aget(url, params=query_params)
916
841
  response.raise_for_status()
917
842
  return response.json()
918
843
 
919
- def post_variables(
920
- self,
921
- file_key,
922
- variableCollections=None,
923
- variableModes=None,
924
- variables=None,
925
- variableModeValues=None,
844
+ async def post_variables(
845
+ self, file_key, variableCollections=None, variableModes=None, variables=None, variableModeValues=None
926
846
  ) -> dict[str, Any]:
927
847
  """
928
848
  Creates variables for a specific file identified by its file_key and returns an appropriate status code based on the operation's outcome.
@@ -951,11 +871,11 @@ class FigmaApp(APIApplication):
951
871
  request_body = {k: v for k, v in request_body.items() if v is not None}
952
872
  url = f"{self.base_url}/v1/files/{file_key}/variables"
953
873
  query_params = {}
954
- response = self._post(url, data=request_body, params=query_params)
874
+ response = await self._apost(url, data=request_body, params=query_params)
955
875
  response.raise_for_status()
956
876
  return response.json()
957
877
 
958
- def get_dev_resources(self, file_key, node_ids=None) -> dict[str, Any]:
878
+ async def get_dev_resources(self, file_key, node_ids=None) -> dict[str, Any]:
959
879
  """
960
880
  Retrieves development resources associated with a specific file, identified by its file_key, with optional filtering by node IDs.
961
881
 
@@ -973,11 +893,11 @@ class FigmaApp(APIApplication):
973
893
  raise ValueError("Missing required parameter 'file_key'")
974
894
  url = f"{self.base_url}/v1/files/{file_key}/dev_resources"
975
895
  query_params = {k: v for k, v in [("node_ids", node_ids)] if v is not None}
976
- response = self._get(url, params=query_params)
896
+ response = await self._aget(url, params=query_params)
977
897
  response.raise_for_status()
978
898
  return response.json()
979
899
 
980
- def post_dev_resources(self, dev_resources) -> dict[str, Any]:
900
+ async def post_dev_resources(self, dev_resources) -> dict[str, Any]:
981
901
  """
982
902
  Creates developer resources via the API and returns a status response.
983
903
 
@@ -990,17 +910,15 @@ class FigmaApp(APIApplication):
990
910
  Tags:
991
911
  Dev Resources
992
912
  """
993
- request_body = {
994
- "dev_resources": dev_resources,
995
- }
913
+ request_body = {"dev_resources": dev_resources}
996
914
  request_body = {k: v for k, v in request_body.items() if v is not None}
997
915
  url = f"{self.base_url}/v1/dev_resources"
998
916
  query_params = {}
999
- response = self._post(url, data=request_body, params=query_params)
917
+ response = await self._apost(url, data=request_body, params=query_params)
1000
918
  response.raise_for_status()
1001
919
  return response.json()
1002
920
 
1003
- def put_dev_resources(self, dev_resources) -> dict[str, Any]:
921
+ async def put_dev_resources(self, dev_resources) -> dict[str, Any]:
1004
922
  """
1005
923
  Replaces a specific developer resource at the specified path with updated data, returning a status code for success or error conditions.
1006
924
 
@@ -1013,17 +931,15 @@ class FigmaApp(APIApplication):
1013
931
  Tags:
1014
932
  Dev Resources
1015
933
  """
1016
- request_body = {
1017
- "dev_resources": dev_resources,
1018
- }
934
+ request_body = {"dev_resources": dev_resources}
1019
935
  request_body = {k: v for k, v in request_body.items() if v is not None}
1020
936
  url = f"{self.base_url}/v1/dev_resources"
1021
937
  query_params = {}
1022
- response = self._put(url, data=request_body, params=query_params)
938
+ response = await self._aput(url, data=request_body, params=query_params)
1023
939
  response.raise_for_status()
1024
940
  return response.json()
1025
941
 
1026
- def delete_dev_resource(self, file_key, dev_resource_id) -> Any:
942
+ async def delete_dev_resource(self, file_key, dev_resource_id) -> Any:
1027
943
  """
1028
944
  Deletes a specific development resource associated with a file using the provided file key and development resource ID.
1029
945
 
@@ -1043,7 +959,7 @@ class FigmaApp(APIApplication):
1043
959
  raise ValueError("Missing required parameter 'dev_resource_id'")
1044
960
  url = f"{self.base_url}/v1/files/{file_key}/dev_resources/{dev_resource_id}"
1045
961
  query_params = {}
1046
- response = self._delete(url, params=query_params)
962
+ response = await self._adelete(url, params=query_params)
1047
963
  response.raise_for_status()
1048
964
  return response.json()
1049
965