universal-mcp-applications 0.1.33__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.
- universal_mcp/applications/ahrefs/app.py +92 -238
- universal_mcp/applications/airtable/app.py +23 -122
- universal_mcp/applications/apollo/app.py +122 -475
- universal_mcp/applications/asana/app.py +605 -1755
- universal_mcp/applications/aws_s3/app.py +36 -103
- universal_mcp/applications/bill/app.py +644 -2055
- universal_mcp/applications/box/app.py +1246 -4159
- universal_mcp/applications/braze/app.py +410 -1476
- universal_mcp/applications/browser_use/README.md +15 -1
- universal_mcp/applications/browser_use/__init__.py +1 -0
- universal_mcp/applications/browser_use/app.py +86 -24
- universal_mcp/applications/cal_com_v2/app.py +207 -625
- universal_mcp/applications/calendly/app.py +103 -242
- universal_mcp/applications/canva/app.py +75 -140
- universal_mcp/applications/clickup/app.py +331 -798
- universal_mcp/applications/coda/app.py +240 -520
- universal_mcp/applications/confluence/app.py +497 -1285
- universal_mcp/applications/contentful/app.py +36 -151
- universal_mcp/applications/crustdata/app.py +42 -121
- universal_mcp/applications/dialpad/app.py +451 -924
- universal_mcp/applications/digitalocean/app.py +2071 -6082
- 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/README.md +8 -4
- universal_mcp/applications/exa/app.py +408 -186
- universal_mcp/applications/falai/app.py +24 -101
- universal_mcp/applications/figma/app.py +91 -175
- universal_mcp/applications/file_system/app.py +2 -13
- universal_mcp/applications/firecrawl/app.py +186 -163
- universal_mcp/applications/fireflies/app.py +59 -281
- universal_mcp/applications/fpl/app.py +92 -529
- 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 +66 -175
- universal_mcp/applications/github/app.py +28 -65
- universal_mcp/applications/gong/app.py +140 -300
- universal_mcp/applications/google_calendar/app.py +26 -78
- universal_mcp/applications/google_docs/app.py +98 -202
- universal_mcp/applications/google_drive/app.py +194 -793
- universal_mcp/applications/google_gemini/app.py +27 -62
- universal_mcp/applications/google_mail/README.md +1 -0
- universal_mcp/applications/google_mail/app.py +93 -214
- universal_mcp/applications/google_searchconsole/app.py +25 -58
- universal_mcp/applications/google_sheet/app.py +171 -624
- universal_mcp/applications/google_sheet/helper.py +26 -53
- universal_mcp/applications/hashnode/app.py +57 -269
- universal_mcp/applications/heygen/app.py +77 -155
- universal_mcp/applications/http_tools/app.py +10 -32
- universal_mcp/applications/hubspot/README.md +1 -1
- universal_mcp/applications/hubspot/app.py +7508 -99
- universal_mcp/applications/jira/app.py +2419 -8334
- universal_mcp/applications/klaviyo/app.py +737 -1619
- universal_mcp/applications/linkedin/README.md +5 -0
- universal_mcp/applications/linkedin/app.py +332 -227
- universal_mcp/applications/mailchimp/app.py +696 -1851
- universal_mcp/applications/markitdown/app.py +8 -20
- universal_mcp/applications/miro/app.py +333 -815
- universal_mcp/applications/ms_teams/app.py +85 -207
- universal_mcp/applications/neon/app.py +144 -250
- universal_mcp/applications/notion/app.py +36 -51
- universal_mcp/applications/onedrive/app.py +26 -48
- universal_mcp/applications/openai/app.py +42 -165
- universal_mcp/applications/outlook/README.md +22 -9
- universal_mcp/applications/outlook/app.py +403 -141
- universal_mcp/applications/perplexity/README.md +2 -1
- universal_mcp/applications/perplexity/app.py +162 -20
- universal_mcp/applications/pipedrive/app.py +1021 -3331
- universal_mcp/applications/posthog/app.py +272 -541
- universal_mcp/applications/reddit/app.py +61 -160
- universal_mcp/applications/resend/app.py +41 -107
- universal_mcp/applications/retell/app.py +23 -50
- universal_mcp/applications/rocketlane/app.py +250 -963
- universal_mcp/applications/scraper/app.py +67 -125
- universal_mcp/applications/semanticscholar/app.py +36 -78
- universal_mcp/applications/semrush/app.py +43 -77
- universal_mcp/applications/sendgrid/app.py +826 -1576
- universal_mcp/applications/sentry/app.py +444 -1079
- universal_mcp/applications/serpapi/app.py +40 -143
- universal_mcp/applications/sharepoint/app.py +27 -49
- universal_mcp/applications/shopify/app.py +1743 -4479
- universal_mcp/applications/shortcut/app.py +272 -534
- universal_mcp/applications/slack/app.py +41 -123
- universal_mcp/applications/spotify/app.py +206 -405
- universal_mcp/applications/supabase/app.py +174 -283
- universal_mcp/applications/tavily/app.py +2 -2
- universal_mcp/applications/trello/app.py +853 -2816
- 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 +86 -299
- universal_mcp/applications/wrike/app.py +80 -153
- universal_mcp/applications/yahoo_finance/app.py +19 -65
- universal_mcp/applications/youtube/app.py +120 -306
- universal_mcp/applications/zenquotes/app.py +3 -3
- {universal_mcp_applications-0.1.33.dist-info → universal_mcp_applications-0.1.39rc8.dist-info}/METADATA +4 -2
- {universal_mcp_applications-0.1.33.dist-info → universal_mcp_applications-0.1.39rc8.dist-info}/RECORD +109 -113
- {universal_mcp_applications-0.1.33.dist-info → universal_mcp_applications-0.1.39rc8.dist-info}/WHEEL +1 -1
- universal_mcp/applications/hubspot/api_segments/__init__.py +0 -0
- universal_mcp/applications/hubspot/api_segments/api_segment_base.py +0 -54
- universal_mcp/applications/hubspot/api_segments/crm_api.py +0 -7337
- universal_mcp/applications/hubspot/api_segments/marketing_api.py +0 -1467
- {universal_mcp_applications-0.1.33.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
|
|
|
@@ -19,7 +18,7 @@ class WrikeApp(APIApplication):
|
|
|
19
18
|
super().__init__(name="wrike", integration=integration, **kwargs)
|
|
20
19
|
self.base_url = "https://www.wrike.com/api/v4"
|
|
21
20
|
|
|
22
|
-
def get_contacts(self, deleted=None, fields=None, metadata=None) -> Any:
|
|
21
|
+
async def get_contacts(self, deleted=None, fields=None, metadata=None) -> Any:
|
|
23
22
|
"""
|
|
24
23
|
Retrieves contacts from the server with optional deleted status filtering, field selection, and metadata inclusion.
|
|
25
24
|
|
|
@@ -38,20 +37,12 @@ class WrikeApp(APIApplication):
|
|
|
38
37
|
retrieve, contacts, filter, api, important
|
|
39
38
|
"""
|
|
40
39
|
url = f"{self.base_url}/contacts"
|
|
41
|
-
query_params = {
|
|
42
|
-
|
|
43
|
-
for k, v in [
|
|
44
|
-
("deleted", deleted),
|
|
45
|
-
("fields", fields),
|
|
46
|
-
("metadata", metadata),
|
|
47
|
-
]
|
|
48
|
-
if v is not None
|
|
49
|
-
}
|
|
50
|
-
response = self._get(url, params=query_params)
|
|
40
|
+
query_params = {k: v for k, v in [("deleted", deleted), ("fields", fields), ("metadata", metadata)] if v is not None}
|
|
41
|
+
response = await self._aget(url, params=query_params)
|
|
51
42
|
response.raise_for_status()
|
|
52
43
|
return response.json()
|
|
53
44
|
|
|
54
|
-
def get_contacts_by_contactid(self, contactId, fields=None) -> Any:
|
|
45
|
+
async def get_contacts_by_contactid(self, contactId, fields=None) -> Any:
|
|
55
46
|
"""
|
|
56
47
|
Retrieves contact information for a specific contact ID, optionally returning only specified fields.
|
|
57
48
|
|
|
@@ -72,19 +63,12 @@ class WrikeApp(APIApplication):
|
|
|
72
63
|
raise ValueError("Missing required parameter 'contactId'")
|
|
73
64
|
url = f"{self.base_url}/contacts/{contactId}"
|
|
74
65
|
query_params = {k: v for k, v in [("fields", fields)] if v is not None}
|
|
75
|
-
response = self.
|
|
66
|
+
response = await self._aget(url, params=query_params)
|
|
76
67
|
response.raise_for_status()
|
|
77
68
|
return response.json()
|
|
78
69
|
|
|
79
|
-
def put_contacts_by_contactid(
|
|
80
|
-
self,
|
|
81
|
-
contactId,
|
|
82
|
-
metadata=None,
|
|
83
|
-
currentBillRate=None,
|
|
84
|
-
currentCostRate=None,
|
|
85
|
-
jobRoleId=None,
|
|
86
|
-
customFields=None,
|
|
87
|
-
fields=None,
|
|
70
|
+
async def put_contacts_by_contactid(
|
|
71
|
+
self, contactId, metadata=None, currentBillRate=None, currentCostRate=None, jobRoleId=None, customFields=None, fields=None
|
|
88
72
|
) -> Any:
|
|
89
73
|
"""
|
|
90
74
|
Updates an existing contact using the specified contact ID with provided details including metadata, billing/cost rates, job role, and custom fields.
|
|
@@ -121,11 +105,11 @@ class WrikeApp(APIApplication):
|
|
|
121
105
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
122
106
|
url = f"{self.base_url}/contacts/{contactId}"
|
|
123
107
|
query_params = {}
|
|
124
|
-
response = self.
|
|
108
|
+
response = await self._aput(url, data=request_body, params=query_params)
|
|
125
109
|
response.raise_for_status()
|
|
126
110
|
return response.json()
|
|
127
111
|
|
|
128
|
-
def get_users_by_userid(self, userId) -> Any:
|
|
112
|
+
async def get_users_by_userid(self, userId) -> Any:
|
|
129
113
|
"""
|
|
130
114
|
Retrieves user information by ID from the API endpoint.
|
|
131
115
|
|
|
@@ -146,11 +130,11 @@ class WrikeApp(APIApplication):
|
|
|
146
130
|
raise ValueError("Missing required parameter 'userId'")
|
|
147
131
|
url = f"{self.base_url}/users/{userId}"
|
|
148
132
|
query_params = {}
|
|
149
|
-
response = self.
|
|
133
|
+
response = await self._aget(url, params=query_params)
|
|
150
134
|
response.raise_for_status()
|
|
151
135
|
return response.json()
|
|
152
136
|
|
|
153
|
-
def put_users_by_userid(self, userId, profile=None) -> Any:
|
|
137
|
+
async def put_users_by_userid(self, userId, profile=None) -> Any:
|
|
154
138
|
"""
|
|
155
139
|
Updates a user's profile information by user ID using a PUT request.
|
|
156
140
|
|
|
@@ -170,19 +154,15 @@ class WrikeApp(APIApplication):
|
|
|
170
154
|
"""
|
|
171
155
|
if userId is None:
|
|
172
156
|
raise ValueError("Missing required parameter 'userId'")
|
|
173
|
-
request_body = {
|
|
174
|
-
"profile": profile,
|
|
175
|
-
}
|
|
157
|
+
request_body = {"profile": profile}
|
|
176
158
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
177
159
|
url = f"{self.base_url}/users/{userId}"
|
|
178
160
|
query_params = {}
|
|
179
|
-
response = self.
|
|
161
|
+
response = await self._aput(url, data=request_body, params=query_params)
|
|
180
162
|
response.raise_for_status()
|
|
181
163
|
return response.json()
|
|
182
164
|
|
|
183
|
-
def get_groups(
|
|
184
|
-
self, metadata=None, pageSize=None, pageToken=None, fields=None
|
|
185
|
-
) -> Any:
|
|
165
|
+
async def get_groups(self, metadata=None, pageSize=None, pageToken=None, fields=None) -> Any:
|
|
186
166
|
"""
|
|
187
167
|
Retrieves a list of groups from the API, applying optional filtering and pagination parameters.
|
|
188
168
|
|
|
@@ -203,22 +183,13 @@ class WrikeApp(APIApplication):
|
|
|
203
183
|
"""
|
|
204
184
|
url = f"{self.base_url}/groups"
|
|
205
185
|
query_params = {
|
|
206
|
-
k: v
|
|
207
|
-
for k, v in [
|
|
208
|
-
("metadata", metadata),
|
|
209
|
-
("pageSize", pageSize),
|
|
210
|
-
("pageToken", pageToken),
|
|
211
|
-
("fields", fields),
|
|
212
|
-
]
|
|
213
|
-
if v is not None
|
|
186
|
+
k: v for k, v in [("metadata", metadata), ("pageSize", pageSize), ("pageToken", pageToken), ("fields", fields)] if v is not None
|
|
214
187
|
}
|
|
215
|
-
response = self.
|
|
188
|
+
response = await self._aget(url, params=query_params)
|
|
216
189
|
response.raise_for_status()
|
|
217
190
|
return response.json()
|
|
218
191
|
|
|
219
|
-
def post_groups(
|
|
220
|
-
self, title, members=None, parent=None, avatar=None, metadata=None
|
|
221
|
-
) -> Any:
|
|
192
|
+
async def post_groups(self, title, members=None, parent=None, avatar=None, metadata=None) -> Any:
|
|
222
193
|
"""
|
|
223
194
|
Creates a new group with the specified title and optional details via a POST request to the groups endpoint.
|
|
224
195
|
|
|
@@ -240,21 +211,15 @@ class WrikeApp(APIApplication):
|
|
|
240
211
|
"""
|
|
241
212
|
if title is None:
|
|
242
213
|
raise ValueError("Missing required parameter 'title'")
|
|
243
|
-
request_body = {
|
|
244
|
-
"title": title,
|
|
245
|
-
"members": members,
|
|
246
|
-
"parent": parent,
|
|
247
|
-
"avatar": avatar,
|
|
248
|
-
"metadata": metadata,
|
|
249
|
-
}
|
|
214
|
+
request_body = {"title": title, "members": members, "parent": parent, "avatar": avatar, "metadata": metadata}
|
|
250
215
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
251
216
|
url = f"{self.base_url}/groups"
|
|
252
217
|
query_params = {}
|
|
253
|
-
response = self.
|
|
218
|
+
response = await self._apost(url, data=request_body, params=query_params)
|
|
254
219
|
response.raise_for_status()
|
|
255
220
|
return response.json()
|
|
256
221
|
|
|
257
|
-
def get_groups_by_groupid(self, groupId, fields=None) -> Any:
|
|
222
|
+
async def get_groups_by_groupid(self, groupId, fields=None) -> Any:
|
|
258
223
|
"""
|
|
259
224
|
Retrieves details for a specific group by its group ID, optionally returning only specified fields.
|
|
260
225
|
|
|
@@ -275,11 +240,11 @@ class WrikeApp(APIApplication):
|
|
|
275
240
|
raise ValueError("Missing required parameter 'groupId'")
|
|
276
241
|
url = f"{self.base_url}/groups/{groupId}"
|
|
277
242
|
query_params = {k: v for k, v in [("fields", fields)] if v is not None}
|
|
278
|
-
response = self.
|
|
243
|
+
response = await self._aget(url, params=query_params)
|
|
279
244
|
response.raise_for_status()
|
|
280
245
|
return response.json()
|
|
281
246
|
|
|
282
|
-
def put_groups_by_groupid(
|
|
247
|
+
async def put_groups_by_groupid(
|
|
283
248
|
self,
|
|
284
249
|
groupId,
|
|
285
250
|
title=None,
|
|
@@ -329,11 +294,11 @@ class WrikeApp(APIApplication):
|
|
|
329
294
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
330
295
|
url = f"{self.base_url}/groups/{groupId}"
|
|
331
296
|
query_params = {}
|
|
332
|
-
response = self.
|
|
297
|
+
response = await self._aput(url, data=request_body, params=query_params)
|
|
333
298
|
response.raise_for_status()
|
|
334
299
|
return response.json()
|
|
335
300
|
|
|
336
|
-
def delete_groups_by_groupid(self, groupId) -> Any:
|
|
301
|
+
async def delete_groups_by_groupid(self, groupId) -> Any:
|
|
337
302
|
"""
|
|
338
303
|
Deletes a group resource identified by the provided groupId using an HTTP DELETE request.
|
|
339
304
|
|
|
@@ -353,11 +318,11 @@ class WrikeApp(APIApplication):
|
|
|
353
318
|
raise ValueError("Missing required parameter 'groupId'")
|
|
354
319
|
url = f"{self.base_url}/groups/{groupId}"
|
|
355
320
|
query_params = {}
|
|
356
|
-
response = self.
|
|
321
|
+
response = await self._adelete(url, params=query_params)
|
|
357
322
|
response.raise_for_status()
|
|
358
323
|
return response.json()
|
|
359
324
|
|
|
360
|
-
def put_groups_bulk(self, members) -> Any:
|
|
325
|
+
async def put_groups_bulk(self, members) -> Any:
|
|
361
326
|
"""
|
|
362
327
|
Updates multiple group memberships in bulk by sending a PUT request with the given member data.
|
|
363
328
|
|
|
@@ -375,19 +340,15 @@ class WrikeApp(APIApplication):
|
|
|
375
340
|
"""
|
|
376
341
|
if members is None:
|
|
377
342
|
raise ValueError("Missing required parameter 'members'")
|
|
378
|
-
request_body = {
|
|
379
|
-
"members": members,
|
|
380
|
-
}
|
|
343
|
+
request_body = {"members": members}
|
|
381
344
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
382
345
|
url = f"{self.base_url}/groups_bulk"
|
|
383
346
|
query_params = {}
|
|
384
|
-
response = self.
|
|
347
|
+
response = await self._aput(url, data=request_body, params=query_params)
|
|
385
348
|
response.raise_for_status()
|
|
386
349
|
return response.json()
|
|
387
350
|
|
|
388
|
-
def get_invitations(
|
|
389
|
-
self,
|
|
390
|
-
) -> Any:
|
|
351
|
+
async def get_invitations(self) -> Any:
|
|
391
352
|
"""
|
|
392
353
|
Retrieves all invitations from the server using a GET request.
|
|
393
354
|
|
|
@@ -405,20 +366,12 @@ class WrikeApp(APIApplication):
|
|
|
405
366
|
"""
|
|
406
367
|
url = f"{self.base_url}/invitations"
|
|
407
368
|
query_params = {}
|
|
408
|
-
response = self.
|
|
369
|
+
response = await self._aget(url, params=query_params)
|
|
409
370
|
response.raise_for_status()
|
|
410
371
|
return response.json()
|
|
411
372
|
|
|
412
|
-
def post_invitations(
|
|
413
|
-
self,
|
|
414
|
-
email,
|
|
415
|
-
firstName=None,
|
|
416
|
-
lastName=None,
|
|
417
|
-
role=None,
|
|
418
|
-
external=None,
|
|
419
|
-
subject=None,
|
|
420
|
-
message=None,
|
|
421
|
-
userTypeId=None,
|
|
373
|
+
async def post_invitations(
|
|
374
|
+
self, email, firstName=None, lastName=None, role=None, external=None, subject=None, message=None, userTypeId=None
|
|
422
375
|
) -> Any:
|
|
423
376
|
"""
|
|
424
377
|
Sends an invitation email to a user with optional details such as name, role, and custom message.
|
|
@@ -457,13 +410,11 @@ class WrikeApp(APIApplication):
|
|
|
457
410
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
458
411
|
url = f"{self.base_url}/invitations"
|
|
459
412
|
query_params = {}
|
|
460
|
-
response = self.
|
|
413
|
+
response = await self._apost(url, data=request_body, params=query_params)
|
|
461
414
|
response.raise_for_status()
|
|
462
415
|
return response.json()
|
|
463
416
|
|
|
464
|
-
def put_invitations_by_invitationid(
|
|
465
|
-
self, invitationId, resend=None, role=None, external=None, userTypeId=None
|
|
466
|
-
) -> Any:
|
|
417
|
+
async def put_invitations_by_invitationid(self, invitationId, resend=None, role=None, external=None, userTypeId=None) -> Any:
|
|
467
418
|
"""
|
|
468
419
|
Updates an existing invitation by its unique ID with optional parameters, handling conditional updates and API communication.
|
|
469
420
|
|
|
@@ -486,20 +437,15 @@ class WrikeApp(APIApplication):
|
|
|
486
437
|
"""
|
|
487
438
|
if invitationId is None:
|
|
488
439
|
raise ValueError("Missing required parameter 'invitationId'")
|
|
489
|
-
request_body = {
|
|
490
|
-
"resend": resend,
|
|
491
|
-
"role": role,
|
|
492
|
-
"external": external,
|
|
493
|
-
"userTypeId": userTypeId,
|
|
494
|
-
}
|
|
440
|
+
request_body = {"resend": resend, "role": role, "external": external, "userTypeId": userTypeId}
|
|
495
441
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
496
442
|
url = f"{self.base_url}/invitations/{invitationId}"
|
|
497
443
|
query_params = {}
|
|
498
|
-
response = self.
|
|
444
|
+
response = await self._aput(url, data=request_body, params=query_params)
|
|
499
445
|
response.raise_for_status()
|
|
500
446
|
return response.json()
|
|
501
447
|
|
|
502
|
-
def delete_invitations_by_invitationid(self, invitationId) -> Any:
|
|
448
|
+
async def delete_invitations_by_invitationid(self, invitationId) -> Any:
|
|
503
449
|
"""
|
|
504
450
|
Deletes a specific invitation using its unique identifier
|
|
505
451
|
|
|
@@ -520,11 +466,11 @@ class WrikeApp(APIApplication):
|
|
|
520
466
|
raise ValueError("Missing required parameter 'invitationId'")
|
|
521
467
|
url = f"{self.base_url}/invitations/{invitationId}"
|
|
522
468
|
query_params = {}
|
|
523
|
-
response = self.
|
|
469
|
+
response = await self._adelete(url, params=query_params)
|
|
524
470
|
response.raise_for_status()
|
|
525
471
|
return response.json()
|
|
526
472
|
|
|
527
|
-
def get_a_ccount(self, fields=None) -> Any:
|
|
473
|
+
async def get_a_ccount(self, fields=None) -> Any:
|
|
528
474
|
"""
|
|
529
475
|
Retrieves account information from the API, optionally including only specified fields.
|
|
530
476
|
|
|
@@ -542,11 +488,11 @@ class WrikeApp(APIApplication):
|
|
|
542
488
|
"""
|
|
543
489
|
url = f"{self.base_url}/account"
|
|
544
490
|
query_params = {k: v for k, v in [("fields", fields)] if v is not None}
|
|
545
|
-
response = self.
|
|
491
|
+
response = await self._aget(url, params=query_params)
|
|
546
492
|
response.raise_for_status()
|
|
547
493
|
return response.json()
|
|
548
494
|
|
|
549
|
-
def put_a_ccount(self, metadata=None) -> Any:
|
|
495
|
+
async def put_a_ccount(self, metadata=None) -> Any:
|
|
550
496
|
"""
|
|
551
497
|
Sends a PUT request to update or create an account with the provided metadata and returns the server response as a JSON object.
|
|
552
498
|
|
|
@@ -562,19 +508,15 @@ class WrikeApp(APIApplication):
|
|
|
562
508
|
Tags:
|
|
563
509
|
put, account, metadata, async_job
|
|
564
510
|
"""
|
|
565
|
-
request_body = {
|
|
566
|
-
"metadata": metadata,
|
|
567
|
-
}
|
|
511
|
+
request_body = {"metadata": metadata}
|
|
568
512
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
569
513
|
url = f"{self.base_url}/account"
|
|
570
514
|
query_params = {}
|
|
571
|
-
response = self.
|
|
515
|
+
response = await self._aput(url, data=request_body, params=query_params)
|
|
572
516
|
response.raise_for_status()
|
|
573
517
|
return response.json()
|
|
574
518
|
|
|
575
|
-
def get_workflows(
|
|
576
|
-
self,
|
|
577
|
-
) -> Any:
|
|
519
|
+
async def get_workflows(self) -> Any:
|
|
578
520
|
"""
|
|
579
521
|
Retrieves all workflows from the server using a GET request.
|
|
580
522
|
|
|
@@ -592,11 +534,11 @@ class WrikeApp(APIApplication):
|
|
|
592
534
|
"""
|
|
593
535
|
url = f"{self.base_url}/workflows"
|
|
594
536
|
query_params = {}
|
|
595
|
-
response = self.
|
|
537
|
+
response = await self._aget(url, params=query_params)
|
|
596
538
|
response.raise_for_status()
|
|
597
539
|
return response.json()
|
|
598
540
|
|
|
599
|
-
def post_workflows(self, name=None, request_body=None) -> Any:
|
|
541
|
+
async def post_workflows(self, name=None, request_body=None) -> Any:
|
|
600
542
|
"""
|
|
601
543
|
Creates a new workflow by sending a POST request to the workflows endpoint with optional name and request body.
|
|
602
544
|
|
|
@@ -615,13 +557,11 @@ class WrikeApp(APIApplication):
|
|
|
615
557
|
"""
|
|
616
558
|
url = f"{self.base_url}/workflows"
|
|
617
559
|
query_params = {k: v for k, v in [("name", name)] if v is not None}
|
|
618
|
-
response = self.
|
|
560
|
+
response = await self._apost(url, data=request_body, params=query_params)
|
|
619
561
|
response.raise_for_status()
|
|
620
562
|
return response.json()
|
|
621
563
|
|
|
622
|
-
def put_workflows_by_workflowid(
|
|
623
|
-
self, workflowId, name=None, hidden=None, request_body=None
|
|
624
|
-
) -> Any:
|
|
564
|
+
async def put_workflows_by_workflowid(self, workflowId, name=None, hidden=None, request_body=None) -> Any:
|
|
625
565
|
"""
|
|
626
566
|
Updates an existing workflow by workflow ID with optional name, hidden status, and request body data.
|
|
627
567
|
|
|
@@ -643,16 +583,12 @@ class WrikeApp(APIApplication):
|
|
|
643
583
|
if workflowId is None:
|
|
644
584
|
raise ValueError("Missing required parameter 'workflowId'")
|
|
645
585
|
url = f"{self.base_url}/workflows/{workflowId}"
|
|
646
|
-
query_params = {
|
|
647
|
-
|
|
648
|
-
}
|
|
649
|
-
response = self._put(url, data=request_body, params=query_params)
|
|
586
|
+
query_params = {k: v for k, v in [("name", name), ("hidden", hidden)] if v is not None}
|
|
587
|
+
response = await self._aput(url, data=request_body, params=query_params)
|
|
650
588
|
response.raise_for_status()
|
|
651
589
|
return response.json()
|
|
652
590
|
|
|
653
|
-
def get_customfields(
|
|
654
|
-
self,
|
|
655
|
-
) -> Any:
|
|
591
|
+
async def get_customfields(self) -> Any:
|
|
656
592
|
"""
|
|
657
593
|
Retrieves all custom fields from the API and returns them as a parsed JSON object.
|
|
658
594
|
|
|
@@ -670,20 +606,11 @@ class WrikeApp(APIApplication):
|
|
|
670
606
|
"""
|
|
671
607
|
url = f"{self.base_url}/customfields"
|
|
672
608
|
query_params = {}
|
|
673
|
-
response = self.
|
|
609
|
+
response = await self._aget(url, params=query_params)
|
|
674
610
|
response.raise_for_status()
|
|
675
611
|
return response.json()
|
|
676
612
|
|
|
677
|
-
def post_customfields(
|
|
678
|
-
self,
|
|
679
|
-
title,
|
|
680
|
-
type,
|
|
681
|
-
spaceId=None,
|
|
682
|
-
sharing=None,
|
|
683
|
-
shareds=None,
|
|
684
|
-
settings=None,
|
|
685
|
-
request_body=None,
|
|
686
|
-
) -> Any:
|
|
613
|
+
async def post_customfields(self, title, type, spaceId=None, sharing=None, shareds=None, settings=None, request_body=None) -> Any:
|
|
687
614
|
"""
|
|
688
615
|
Creates a custom field by sending a POST request to the customfields endpoint with the specified parameters.
|
|
689
616
|
|
|
@@ -722,11 +649,11 @@ class WrikeApp(APIApplication):
|
|
|
722
649
|
]
|
|
723
650
|
if v is not None
|
|
724
651
|
}
|
|
725
|
-
response = self.
|
|
652
|
+
response = await self._apost(url, data=request_body, params=query_params)
|
|
726
653
|
response.raise_for_status()
|
|
727
654
|
return response.json()
|
|
728
655
|
|
|
729
|
-
def get_customfields_by_customfieldid(self, customFieldId) -> Any:
|
|
656
|
+
async def get_customfields_by_customfieldid(self, customFieldId) -> Any:
|
|
730
657
|
"""
|
|
731
658
|
Retrieves details for a custom field by its unique identifier from the API
|
|
732
659
|
|
|
@@ -746,11 +673,11 @@ class WrikeApp(APIApplication):
|
|
|
746
673
|
raise ValueError("Missing required parameter 'customFieldId'")
|
|
747
674
|
url = f"{self.base_url}/customfields/{customFieldId}"
|
|
748
675
|
query_params = {}
|
|
749
|
-
response = self.
|
|
676
|
+
response = await self._aget(url, params=query_params)
|
|
750
677
|
response.raise_for_status()
|
|
751
678
|
return response.json()
|
|
752
679
|
|
|
753
|
-
def put_customfields_by_customfieldid(
|
|
680
|
+
async def put_customfields_by_customfieldid(
|
|
754
681
|
self,
|
|
755
682
|
customFieldId,
|
|
756
683
|
title=None,
|
|
@@ -808,11 +735,11 @@ class WrikeApp(APIApplication):
|
|
|
808
735
|
]
|
|
809
736
|
if v is not None
|
|
810
737
|
}
|
|
811
|
-
response = self.
|
|
738
|
+
response = await self._aput(url, data={}, params=query_params)
|
|
812
739
|
response.raise_for_status()
|
|
813
740
|
return response.json()
|
|
814
741
|
|
|
815
|
-
def delete_customfields_by_customfieldid(self, customFieldId) -> Any:
|
|
742
|
+
async def delete_customfields_by_customfieldid(self, customFieldId) -> Any:
|
|
816
743
|
"""
|
|
817
744
|
Deletes a custom field resource identified by its custom field ID.
|
|
818
745
|
|
|
@@ -832,11 +759,11 @@ class WrikeApp(APIApplication):
|
|
|
832
759
|
raise ValueError("Missing required parameter 'customFieldId'")
|
|
833
760
|
url = f"{self.base_url}/customfields/{customFieldId}"
|
|
834
761
|
query_params = {}
|
|
835
|
-
response = self.
|
|
762
|
+
response = await self._adelete(url, params=query_params)
|
|
836
763
|
response.raise_for_status()
|
|
837
764
|
return response.json()
|
|
838
765
|
|
|
839
|
-
def get_folders(
|
|
766
|
+
async def get_folders(
|
|
840
767
|
self,
|
|
841
768
|
permalink=None,
|
|
842
769
|
descendants=None,
|
|
@@ -902,11 +829,11 @@ class WrikeApp(APIApplication):
|
|
|
902
829
|
]
|
|
903
830
|
if v is not None
|
|
904
831
|
}
|
|
905
|
-
response = self.
|
|
832
|
+
response = await self._aget(url, params=query_params)
|
|
906
833
|
response.raise_for_status()
|
|
907
834
|
return response.json()
|
|
908
835
|
|
|
909
|
-
def get_folders_by_folderid_folders(
|
|
836
|
+
async def get_folders_by_folderid_folders(
|
|
910
837
|
self,
|
|
911
838
|
folderId,
|
|
912
839
|
permalink=None,
|
|
@@ -973,11 +900,11 @@ class WrikeApp(APIApplication):
|
|
|
973
900
|
]
|
|
974
901
|
if v is not None
|
|
975
902
|
}
|
|
976
|
-
response = self.
|
|
903
|
+
response = await self._aget(url, params=query_params)
|
|
977
904
|
response.raise_for_status()
|
|
978
905
|
return response.json()
|
|
979
906
|
|
|
980
|
-
def post_folders_by_folderid_folders(
|
|
907
|
+
async def post_folders_by_folderid_folders(
|
|
981
908
|
self,
|
|
982
909
|
folderId,
|
|
983
910
|
title,
|
|
@@ -1041,11 +968,11 @@ class WrikeApp(APIApplication):
|
|
|
1041
968
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
1042
969
|
url = f"{self.base_url}/folders/{folderId}/folders"
|
|
1043
970
|
query_params = {}
|
|
1044
|
-
response = self.
|
|
971
|
+
response = await self._apost(url, data=request_body, params=query_params)
|
|
1045
972
|
response.raise_for_status()
|
|
1046
973
|
return response.json()
|
|
1047
974
|
|
|
1048
|
-
def delete_folders_by_folderid(self, folderId) -> Any:
|
|
975
|
+
async def delete_folders_by_folderid(self, folderId) -> Any:
|
|
1049
976
|
"""
|
|
1050
977
|
Deletes a folder resource identified by its folder ID via an HTTP DELETE request.
|
|
1051
978
|
|
|
@@ -1066,11 +993,11 @@ class WrikeApp(APIApplication):
|
|
|
1066
993
|
raise ValueError("Missing required parameter 'folderId'")
|
|
1067
994
|
url = f"{self.base_url}/folders/{folderId}"
|
|
1068
995
|
query_params = {}
|
|
1069
|
-
response = self.
|
|
996
|
+
response = await self._adelete(url, params=query_params)
|
|
1070
997
|
response.raise_for_status()
|
|
1071
998
|
return response.json()
|
|
1072
999
|
|
|
1073
|
-
def put_folders_by_folderid(
|
|
1000
|
+
async def put_folders_by_folderid(
|
|
1074
1001
|
self,
|
|
1075
1002
|
folderId,
|
|
1076
1003
|
title=None,
|
|
@@ -1151,11 +1078,11 @@ class WrikeApp(APIApplication):
|
|
|
1151
1078
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
1152
1079
|
url = f"{self.base_url}/folders/{folderId}"
|
|
1153
1080
|
query_params = {}
|
|
1154
|
-
response = self.
|
|
1081
|
+
response = await self._aput(url, data=request_body, params=query_params)
|
|
1155
1082
|
response.raise_for_status()
|
|
1156
1083
|
return response.json()
|
|
1157
1084
|
|
|
1158
|
-
def get_tasks(
|
|
1085
|
+
async def get_tasks(
|
|
1159
1086
|
self,
|
|
1160
1087
|
descendants=None,
|
|
1161
1088
|
title=None,
|
|
@@ -1269,11 +1196,11 @@ class WrikeApp(APIApplication):
|
|
|
1269
1196
|
]
|
|
1270
1197
|
if v is not None
|
|
1271
1198
|
}
|
|
1272
|
-
response = self.
|
|
1199
|
+
response = await self._aget(url, params=query_params)
|
|
1273
1200
|
response.raise_for_status()
|
|
1274
1201
|
return response.json()
|
|
1275
1202
|
|
|
1276
|
-
def get_tasks_by_taskid(self, taskId, fields=None) -> Any:
|
|
1203
|
+
async def get_tasks_by_taskid(self, taskId, fields=None) -> Any:
|
|
1277
1204
|
"""
|
|
1278
1205
|
Retrieves a task by its ID from the remote service, optionally returning only specified fields.
|
|
1279
1206
|
|
|
@@ -1294,11 +1221,11 @@ class WrikeApp(APIApplication):
|
|
|
1294
1221
|
raise ValueError("Missing required parameter 'taskId'")
|
|
1295
1222
|
url = f"{self.base_url}/tasks/{taskId}"
|
|
1296
1223
|
query_params = {k: v for k, v in [("fields", fields)] if v is not None}
|
|
1297
|
-
response = self.
|
|
1224
|
+
response = await self._aget(url, params=query_params)
|
|
1298
1225
|
response.raise_for_status()
|
|
1299
1226
|
return response.json()
|
|
1300
1227
|
|
|
1301
|
-
def put_tasks_by_taskid(
|
|
1228
|
+
async def put_tasks_by_taskid(
|
|
1302
1229
|
self,
|
|
1303
1230
|
taskId,
|
|
1304
1231
|
title=None,
|
|
@@ -1412,11 +1339,11 @@ class WrikeApp(APIApplication):
|
|
|
1412
1339
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
1413
1340
|
url = f"{self.base_url}/tasks/{taskId}"
|
|
1414
1341
|
query_params = {}
|
|
1415
|
-
response = self.
|
|
1342
|
+
response = await self._aput(url, data=request_body, params=query_params)
|
|
1416
1343
|
response.raise_for_status()
|
|
1417
1344
|
return response.json()
|
|
1418
1345
|
|
|
1419
|
-
def delete_tasks_by_taskid(self, taskId) -> Any:
|
|
1346
|
+
async def delete_tasks_by_taskid(self, taskId) -> Any:
|
|
1420
1347
|
"""
|
|
1421
1348
|
Deletes a task identified by the given task ID via an HTTP DELETE request and returns the response as a JSON object.
|
|
1422
1349
|
|
|
@@ -1437,11 +1364,11 @@ class WrikeApp(APIApplication):
|
|
|
1437
1364
|
raise ValueError("Missing required parameter 'taskId'")
|
|
1438
1365
|
url = f"{self.base_url}/tasks/{taskId}"
|
|
1439
1366
|
query_params = {}
|
|
1440
|
-
response = self.
|
|
1367
|
+
response = await self._adelete(url, params=query_params)
|
|
1441
1368
|
response.raise_for_status()
|
|
1442
1369
|
return response.json()
|
|
1443
1370
|
|
|
1444
|
-
def post_folders_by_folderid_tasks(
|
|
1371
|
+
async def post_folders_by_folderid_tasks(
|
|
1445
1372
|
self,
|
|
1446
1373
|
folderId,
|
|
1447
1374
|
title,
|
|
@@ -1539,7 +1466,7 @@ class WrikeApp(APIApplication):
|
|
|
1539
1466
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
1540
1467
|
url = f"{self.base_url}/folders/{folderId}/tasks"
|
|
1541
1468
|
query_params = {}
|
|
1542
|
-
response = self.
|
|
1469
|
+
response = await self._apost(url, data=request_body, params=query_params)
|
|
1543
1470
|
response.raise_for_status()
|
|
1544
1471
|
return response.json()
|
|
1545
1472
|
|