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
|
|
|
@@ -11,14 +10,9 @@ class ShortcutApp(APIApplication):
|
|
|
11
10
|
|
|
12
11
|
def _get_headers(self) -> dict[str, Any]:
|
|
13
12
|
api_key = self.integration.get_credentials().get("api_key")
|
|
14
|
-
return {
|
|
15
|
-
"Shortcut-Token": f"{api_key}",
|
|
16
|
-
"Content-Type": "application/json",
|
|
17
|
-
}
|
|
13
|
+
return {"Shortcut-Token": f"{api_key}", "Content-Type": "application/json"}
|
|
18
14
|
|
|
19
|
-
def list_categories(
|
|
20
|
-
self,
|
|
21
|
-
) -> list[Any]:
|
|
15
|
+
async def list_categories(self) -> list[Any]:
|
|
22
16
|
"""
|
|
23
17
|
Retrieves a list of categories from the API.
|
|
24
18
|
|
|
@@ -40,9 +34,7 @@ class ShortcutApp(APIApplication):
|
|
|
40
34
|
response.raise_for_status()
|
|
41
35
|
return response.json()
|
|
42
36
|
|
|
43
|
-
def create_category(
|
|
44
|
-
self, name, color=None, external_id=None, type=None
|
|
45
|
-
) -> dict[str, Any]:
|
|
37
|
+
async def create_category(self, name, color=None, external_id=None, type=None) -> dict[str, Any]:
|
|
46
38
|
"""
|
|
47
39
|
Creates a new category with the specified parameters.
|
|
48
40
|
|
|
@@ -64,12 +56,7 @@ class ShortcutApp(APIApplication):
|
|
|
64
56
|
"""
|
|
65
57
|
if name is None:
|
|
66
58
|
raise ValueError("Missing required parameter 'name'")
|
|
67
|
-
request_body = {
|
|
68
|
-
"name": name,
|
|
69
|
-
"color": color,
|
|
70
|
-
"external_id": external_id,
|
|
71
|
-
"type": type,
|
|
72
|
-
}
|
|
59
|
+
request_body = {"name": name, "color": color, "external_id": external_id, "type": type}
|
|
73
60
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
74
61
|
url = f"{self.base_url}/api/v3/categories"
|
|
75
62
|
query_params = {}
|
|
@@ -77,7 +64,7 @@ class ShortcutApp(APIApplication):
|
|
|
77
64
|
response.raise_for_status()
|
|
78
65
|
return response.json()
|
|
79
66
|
|
|
80
|
-
def get_category(self, category_public_id) -> dict[str, Any]:
|
|
67
|
+
async def get_category(self, category_public_id) -> dict[str, Any]:
|
|
81
68
|
"""
|
|
82
69
|
Fetches a category by its public ID.
|
|
83
70
|
|
|
@@ -101,9 +88,7 @@ class ShortcutApp(APIApplication):
|
|
|
101
88
|
response.raise_for_status()
|
|
102
89
|
return response.json()
|
|
103
90
|
|
|
104
|
-
def update_category(
|
|
105
|
-
self, category_public_id, name=None, color=None, archived=None
|
|
106
|
-
) -> dict[str, Any]:
|
|
91
|
+
async def update_category(self, category_public_id, name=None, color=None, archived=None) -> dict[str, Any]:
|
|
107
92
|
"""
|
|
108
93
|
Updates a category with the specified attributes.
|
|
109
94
|
|
|
@@ -125,11 +110,7 @@ class ShortcutApp(APIApplication):
|
|
|
125
110
|
"""
|
|
126
111
|
if category_public_id is None:
|
|
127
112
|
raise ValueError("Missing required parameter 'category-public-id'")
|
|
128
|
-
request_body = {
|
|
129
|
-
"name": name,
|
|
130
|
-
"color": color,
|
|
131
|
-
"archived": archived,
|
|
132
|
-
}
|
|
113
|
+
request_body = {"name": name, "color": color, "archived": archived}
|
|
133
114
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
134
115
|
url = f"{self.base_url}/api/v3/categories/{category_public_id}"
|
|
135
116
|
query_params = {}
|
|
@@ -137,7 +118,7 @@ class ShortcutApp(APIApplication):
|
|
|
137
118
|
response.raise_for_status()
|
|
138
119
|
return response.json()
|
|
139
120
|
|
|
140
|
-
def delete_category(self, category_public_id) -> Any:
|
|
121
|
+
async def delete_category(self, category_public_id) -> Any:
|
|
141
122
|
"""
|
|
142
123
|
Deletes a category by its public ID.
|
|
143
124
|
|
|
@@ -162,7 +143,7 @@ class ShortcutApp(APIApplication):
|
|
|
162
143
|
response.raise_for_status()
|
|
163
144
|
return response.json()
|
|
164
145
|
|
|
165
|
-
def list_category_milestones(self, category_public_id) -> list[Any]:
|
|
146
|
+
async def list_category_milestones(self, category_public_id) -> list[Any]:
|
|
166
147
|
"""
|
|
167
148
|
Lists all milestones associated with a specified category.
|
|
168
149
|
|
|
@@ -187,7 +168,7 @@ class ShortcutApp(APIApplication):
|
|
|
187
168
|
response.raise_for_status()
|
|
188
169
|
return response.json()
|
|
189
170
|
|
|
190
|
-
def list_category_objectives(self, category_public_id) -> list[Any]:
|
|
171
|
+
async def list_category_objectives(self, category_public_id) -> list[Any]:
|
|
191
172
|
"""
|
|
192
173
|
Fetches and lists objectives for a given category based on its public ID.
|
|
193
174
|
|
|
@@ -211,9 +192,7 @@ class ShortcutApp(APIApplication):
|
|
|
211
192
|
response.raise_for_status()
|
|
212
193
|
return response.json()
|
|
213
194
|
|
|
214
|
-
def list_custom_fields(
|
|
215
|
-
self,
|
|
216
|
-
) -> list[Any]:
|
|
195
|
+
async def list_custom_fields(self) -> list[Any]:
|
|
217
196
|
"""
|
|
218
197
|
Retrieves a list of custom fields from the API.
|
|
219
198
|
|
|
@@ -235,7 +214,7 @@ class ShortcutApp(APIApplication):
|
|
|
235
214
|
response.raise_for_status()
|
|
236
215
|
return response.json()
|
|
237
216
|
|
|
238
|
-
def get_custom_field(self, custom_field_public_id) -> dict[str, Any]:
|
|
217
|
+
async def get_custom_field(self, custom_field_public_id) -> dict[str, Any]:
|
|
239
218
|
"""
|
|
240
219
|
Retrieves a custom field by its public ID.
|
|
241
220
|
|
|
@@ -260,7 +239,7 @@ class ShortcutApp(APIApplication):
|
|
|
260
239
|
response.raise_for_status()
|
|
261
240
|
return response.json()
|
|
262
241
|
|
|
263
|
-
def update_custom_field(
|
|
242
|
+
async def update_custom_field(
|
|
264
243
|
self,
|
|
265
244
|
custom_field_public_id,
|
|
266
245
|
enabled=None,
|
|
@@ -312,7 +291,7 @@ class ShortcutApp(APIApplication):
|
|
|
312
291
|
response.raise_for_status()
|
|
313
292
|
return response.json()
|
|
314
293
|
|
|
315
|
-
def delete_custom_field(self, custom_field_public_id) -> Any:
|
|
294
|
+
async def delete_custom_field(self, custom_field_public_id) -> Any:
|
|
316
295
|
"""
|
|
317
296
|
Deletes a custom field specified by its public identifier.
|
|
318
297
|
|
|
@@ -337,9 +316,7 @@ class ShortcutApp(APIApplication):
|
|
|
337
316
|
response.raise_for_status()
|
|
338
317
|
return response.json()
|
|
339
318
|
|
|
340
|
-
def list_entity_templates(
|
|
341
|
-
self,
|
|
342
|
-
) -> list[Any]:
|
|
319
|
+
async def list_entity_templates(self) -> list[Any]:
|
|
343
320
|
"""
|
|
344
321
|
Retrieves a list of entity templates from an API endpoint.
|
|
345
322
|
|
|
@@ -361,9 +338,7 @@ class ShortcutApp(APIApplication):
|
|
|
361
338
|
response.raise_for_status()
|
|
362
339
|
return response.json()
|
|
363
340
|
|
|
364
|
-
def create_entity_template(
|
|
365
|
-
self, name, story_contents, author_id=None
|
|
366
|
-
) -> dict[str, Any]:
|
|
341
|
+
async def create_entity_template(self, name, story_contents, author_id=None) -> dict[str, Any]:
|
|
367
342
|
"""
|
|
368
343
|
Creates an entity template with the provided name, story contents, and optional author ID.
|
|
369
344
|
|
|
@@ -386,11 +361,7 @@ class ShortcutApp(APIApplication):
|
|
|
386
361
|
raise ValueError("Missing required parameter 'name'")
|
|
387
362
|
if story_contents is None:
|
|
388
363
|
raise ValueError("Missing required parameter 'story_contents'")
|
|
389
|
-
request_body = {
|
|
390
|
-
"name": name,
|
|
391
|
-
"author_id": author_id,
|
|
392
|
-
"story_contents": story_contents,
|
|
393
|
-
}
|
|
364
|
+
request_body = {"name": name, "author_id": author_id, "story_contents": story_contents}
|
|
394
365
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
395
366
|
url = f"{self.base_url}/api/v3/entity-templates"
|
|
396
367
|
query_params = {}
|
|
@@ -398,9 +369,7 @@ class ShortcutApp(APIApplication):
|
|
|
398
369
|
response.raise_for_status()
|
|
399
370
|
return response.json()
|
|
400
371
|
|
|
401
|
-
def disable_story_templates(
|
|
402
|
-
self,
|
|
403
|
-
) -> Any:
|
|
372
|
+
async def disable_story_templates(self) -> Any:
|
|
404
373
|
"""
|
|
405
374
|
Disables story entity templates by sending a PUT request to the API endpoint.
|
|
406
375
|
|
|
@@ -422,9 +391,7 @@ class ShortcutApp(APIApplication):
|
|
|
422
391
|
response.raise_for_status()
|
|
423
392
|
return response.json()
|
|
424
393
|
|
|
425
|
-
def enable_story_templates(
|
|
426
|
-
self,
|
|
427
|
-
) -> Any:
|
|
394
|
+
async def enable_story_templates(self) -> Any:
|
|
428
395
|
"""
|
|
429
396
|
Enables story templates by making a PUT request to the entity-templates endpoint.
|
|
430
397
|
|
|
@@ -446,7 +413,7 @@ class ShortcutApp(APIApplication):
|
|
|
446
413
|
response.raise_for_status()
|
|
447
414
|
return response.json()
|
|
448
415
|
|
|
449
|
-
def get_entity_template(self, entity_template_public_id) -> dict[str, Any]:
|
|
416
|
+
async def get_entity_template(self, entity_template_public_id) -> dict[str, Any]:
|
|
450
417
|
"""
|
|
451
418
|
Retrieves a specific entity template by its public ID.
|
|
452
419
|
|
|
@@ -471,9 +438,7 @@ class ShortcutApp(APIApplication):
|
|
|
471
438
|
response.raise_for_status()
|
|
472
439
|
return response.json()
|
|
473
440
|
|
|
474
|
-
def update_entity_template(
|
|
475
|
-
self, entity_template_public_id, name=None, story_contents=None
|
|
476
|
-
) -> dict[str, Any]:
|
|
441
|
+
async def update_entity_template(self, entity_template_public_id, name=None, story_contents=None) -> dict[str, Any]:
|
|
477
442
|
"""
|
|
478
443
|
Updates an entity template using the provided public ID, optionally setting its name and story contents.
|
|
479
444
|
|
|
@@ -493,10 +458,7 @@ class ShortcutApp(APIApplication):
|
|
|
493
458
|
"""
|
|
494
459
|
if entity_template_public_id is None:
|
|
495
460
|
raise ValueError("Missing required parameter 'entity-template-public-id'")
|
|
496
|
-
request_body = {
|
|
497
|
-
"name": name,
|
|
498
|
-
"story_contents": story_contents,
|
|
499
|
-
}
|
|
461
|
+
request_body = {"name": name, "story_contents": story_contents}
|
|
500
462
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
501
463
|
url = f"{self.base_url}/api/v3/entity-templates/{entity_template_public_id}"
|
|
502
464
|
query_params = {}
|
|
@@ -504,7 +466,7 @@ class ShortcutApp(APIApplication):
|
|
|
504
466
|
response.raise_for_status()
|
|
505
467
|
return response.json()
|
|
506
468
|
|
|
507
|
-
def delete_entity_template(self, entity_template_public_id) -> Any:
|
|
469
|
+
async def delete_entity_template(self, entity_template_public_id) -> Any:
|
|
508
470
|
"""
|
|
509
471
|
Deletes an entity template by its public ID.
|
|
510
472
|
|
|
@@ -528,9 +490,7 @@ class ShortcutApp(APIApplication):
|
|
|
528
490
|
response.raise_for_status()
|
|
529
491
|
return response.json()
|
|
530
492
|
|
|
531
|
-
def get_epic_workflow(
|
|
532
|
-
self,
|
|
533
|
-
) -> dict[str, Any]:
|
|
493
|
+
async def get_epic_workflow(self) -> dict[str, Any]:
|
|
534
494
|
"""
|
|
535
495
|
Retrieves the epic workflow configuration from the API.
|
|
536
496
|
|
|
@@ -552,7 +512,7 @@ class ShortcutApp(APIApplication):
|
|
|
552
512
|
response.raise_for_status()
|
|
553
513
|
return response.json()
|
|
554
514
|
|
|
555
|
-
def list_epics(self, includes_description=None) -> list[Any]:
|
|
515
|
+
async def list_epics(self, includes_description=None) -> list[Any]:
|
|
556
516
|
"""
|
|
557
517
|
Fetches a list of epics from the API.
|
|
558
518
|
|
|
@@ -569,16 +529,12 @@ class ShortcutApp(APIApplication):
|
|
|
569
529
|
list, epics, async-job, management, important
|
|
570
530
|
"""
|
|
571
531
|
url = f"{self.base_url}/api/v3/epics"
|
|
572
|
-
query_params = {
|
|
573
|
-
k: v
|
|
574
|
-
for k, v in [("includes_description", includes_description)]
|
|
575
|
-
if v is not None
|
|
576
|
-
}
|
|
532
|
+
query_params = {k: v for k, v in [("includes_description", includes_description)] if v is not None}
|
|
577
533
|
response = self._get(url, params=query_params)
|
|
578
534
|
response.raise_for_status()
|
|
579
535
|
return response.json()
|
|
580
536
|
|
|
581
|
-
def create_epic(
|
|
537
|
+
async def create_epic(
|
|
582
538
|
self,
|
|
583
539
|
name,
|
|
584
540
|
description=None,
|
|
@@ -664,7 +620,7 @@ class ShortcutApp(APIApplication):
|
|
|
664
620
|
response.raise_for_status()
|
|
665
621
|
return response.json()
|
|
666
622
|
|
|
667
|
-
def get_epic(self, epic_public_id) -> dict[str, Any]:
|
|
623
|
+
async def get_epic(self, epic_public_id) -> dict[str, Any]:
|
|
668
624
|
"""
|
|
669
625
|
Fetches an epic by its public ID
|
|
670
626
|
|
|
@@ -688,7 +644,7 @@ class ShortcutApp(APIApplication):
|
|
|
688
644
|
response.raise_for_status()
|
|
689
645
|
return response.json()
|
|
690
646
|
|
|
691
|
-
def update_epic(
|
|
647
|
+
async def update_epic(
|
|
692
648
|
self,
|
|
693
649
|
epic_public_id,
|
|
694
650
|
description=None,
|
|
@@ -779,7 +735,7 @@ class ShortcutApp(APIApplication):
|
|
|
779
735
|
response.raise_for_status()
|
|
780
736
|
return response.json()
|
|
781
737
|
|
|
782
|
-
def delete_epic(self, epic_public_id) -> Any:
|
|
738
|
+
async def delete_epic(self, epic_public_id) -> Any:
|
|
783
739
|
"""
|
|
784
740
|
Deletes an epic by its public ID.
|
|
785
741
|
|
|
@@ -804,7 +760,7 @@ class ShortcutApp(APIApplication):
|
|
|
804
760
|
response.raise_for_status()
|
|
805
761
|
return response.json()
|
|
806
762
|
|
|
807
|
-
def list_epic_comments(self, epic_public_id) -> list[Any]:
|
|
763
|
+
async def list_epic_comments(self, epic_public_id) -> list[Any]:
|
|
808
764
|
"""
|
|
809
765
|
Retrieves a list of comments for a specified epic.
|
|
810
766
|
|
|
@@ -829,14 +785,8 @@ class ShortcutApp(APIApplication):
|
|
|
829
785
|
response.raise_for_status()
|
|
830
786
|
return response.json()
|
|
831
787
|
|
|
832
|
-
def create_epic_comment(
|
|
833
|
-
self,
|
|
834
|
-
epic_public_id,
|
|
835
|
-
text,
|
|
836
|
-
author_id=None,
|
|
837
|
-
created_at=None,
|
|
838
|
-
updated_at=None,
|
|
839
|
-
external_id=None,
|
|
788
|
+
async def create_epic_comment(
|
|
789
|
+
self, epic_public_id, text, author_id=None, created_at=None, updated_at=None, external_id=None
|
|
840
790
|
) -> dict[str, Any]:
|
|
841
791
|
"""
|
|
842
792
|
Creates a comment on an epic with the specified details.
|
|
@@ -876,7 +826,7 @@ class ShortcutApp(APIApplication):
|
|
|
876
826
|
response.raise_for_status()
|
|
877
827
|
return response.json()
|
|
878
828
|
|
|
879
|
-
def get_epic_comment(self, epic_public_id, comment_public_id) -> dict[str, Any]:
|
|
829
|
+
async def get_epic_comment(self, epic_public_id, comment_public_id) -> dict[str, Any]:
|
|
880
830
|
"""
|
|
881
831
|
Retrieves a specific comment from an epic by their respective public IDs.
|
|
882
832
|
|
|
@@ -904,9 +854,7 @@ class ShortcutApp(APIApplication):
|
|
|
904
854
|
response.raise_for_status()
|
|
905
855
|
return response.json()
|
|
906
856
|
|
|
907
|
-
def update_epic_comment(
|
|
908
|
-
self, epic_public_id, comment_public_id, text
|
|
909
|
-
) -> dict[str, Any]:
|
|
857
|
+
async def update_epic_comment(self, epic_public_id, comment_public_id, text) -> dict[str, Any]:
|
|
910
858
|
"""
|
|
911
859
|
Updates the text of an existing comment on a specified epic.
|
|
912
860
|
|
|
@@ -931,9 +879,7 @@ class ShortcutApp(APIApplication):
|
|
|
931
879
|
raise ValueError("Missing required parameter 'comment-public-id'")
|
|
932
880
|
if text is None:
|
|
933
881
|
raise ValueError("Missing required parameter 'text'")
|
|
934
|
-
request_body = {
|
|
935
|
-
"text": text,
|
|
936
|
-
}
|
|
882
|
+
request_body = {"text": text}
|
|
937
883
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
938
884
|
url = f"{self.base_url}/api/v3/epics/{epic_public_id}/comments/{comment_public_id}"
|
|
939
885
|
query_params = {}
|
|
@@ -941,15 +887,8 @@ class ShortcutApp(APIApplication):
|
|
|
941
887
|
response.raise_for_status()
|
|
942
888
|
return response.json()
|
|
943
889
|
|
|
944
|
-
def create_epic_comment_comment(
|
|
945
|
-
self,
|
|
946
|
-
epic_public_id,
|
|
947
|
-
comment_public_id,
|
|
948
|
-
text,
|
|
949
|
-
author_id=None,
|
|
950
|
-
created_at=None,
|
|
951
|
-
updated_at=None,
|
|
952
|
-
external_id=None,
|
|
890
|
+
async def create_epic_comment_comment(
|
|
891
|
+
self, epic_public_id, comment_public_id, text, author_id=None, created_at=None, updated_at=None, external_id=None
|
|
953
892
|
) -> dict[str, Any]:
|
|
954
893
|
"""
|
|
955
894
|
Creates a reply to an existing comment on a specified epic, sending the reply to the backend API and returning the created comment data.
|
|
@@ -993,7 +932,7 @@ class ShortcutApp(APIApplication):
|
|
|
993
932
|
response.raise_for_status()
|
|
994
933
|
return response.json()
|
|
995
934
|
|
|
996
|
-
def delete_epic_comment(self, epic_public_id, comment_public_id) -> Any:
|
|
935
|
+
async def delete_epic_comment(self, epic_public_id, comment_public_id) -> Any:
|
|
997
936
|
"""
|
|
998
937
|
Deletes a specific comment from an epic using its public identifiers.
|
|
999
938
|
|
|
@@ -1021,7 +960,7 @@ class ShortcutApp(APIApplication):
|
|
|
1021
960
|
response.raise_for_status()
|
|
1022
961
|
return response.json()
|
|
1023
962
|
|
|
1024
|
-
def list_epic_stories(self, epic_public_id, includes_description=None) -> list[Any]:
|
|
963
|
+
async def list_epic_stories(self, epic_public_id, includes_description=None) -> list[Any]:
|
|
1025
964
|
"""
|
|
1026
965
|
Retrieves a list of stories associated with a specific epic.
|
|
1027
966
|
|
|
@@ -1042,16 +981,12 @@ class ShortcutApp(APIApplication):
|
|
|
1042
981
|
if epic_public_id is None:
|
|
1043
982
|
raise ValueError("Missing required parameter 'epic-public-id'")
|
|
1044
983
|
url = f"{self.base_url}/api/v3/epics/{epic_public_id}/stories"
|
|
1045
|
-
query_params = {
|
|
1046
|
-
k: v
|
|
1047
|
-
for k, v in [("includes_description", includes_description)]
|
|
1048
|
-
if v is not None
|
|
1049
|
-
}
|
|
984
|
+
query_params = {k: v for k, v in [("includes_description", includes_description)] if v is not None}
|
|
1050
985
|
response = self._get(url, params=query_params)
|
|
1051
986
|
response.raise_for_status()
|
|
1052
987
|
return response.json()
|
|
1053
988
|
|
|
1054
|
-
def unlink_productboard_from_epic(self, epic_public_id) -> Any:
|
|
989
|
+
async def unlink_productboard_from_epic(self, epic_public_id) -> Any:
|
|
1055
990
|
"""
|
|
1056
991
|
Unlinks a ProductBoard integration from an epic in the system.
|
|
1057
992
|
|
|
@@ -1076,7 +1011,7 @@ class ShortcutApp(APIApplication):
|
|
|
1076
1011
|
response.raise_for_status()
|
|
1077
1012
|
return response.json()
|
|
1078
1013
|
|
|
1079
|
-
def get_external_link_stories(self, external_link) -> list[Any]:
|
|
1014
|
+
async def get_external_link_stories(self, external_link) -> list[Any]:
|
|
1080
1015
|
"""
|
|
1081
1016
|
Retrieves stories associated with an external link.
|
|
1082
1017
|
|
|
@@ -1096,16 +1031,12 @@ class ShortcutApp(APIApplication):
|
|
|
1096
1031
|
if external_link is None:
|
|
1097
1032
|
raise ValueError("Missing required parameter 'external_link'")
|
|
1098
1033
|
url = f"{self.base_url}/api/v3/external-link/stories"
|
|
1099
|
-
query_params = {
|
|
1100
|
-
k: v for k, v in [("external_link", external_link)] if v is not None
|
|
1101
|
-
}
|
|
1034
|
+
query_params = {k: v for k, v in [("external_link", external_link)] if v is not None}
|
|
1102
1035
|
response = self._get(url, params=query_params)
|
|
1103
1036
|
response.raise_for_status()
|
|
1104
1037
|
return response.json()
|
|
1105
1038
|
|
|
1106
|
-
def list_files(
|
|
1107
|
-
self,
|
|
1108
|
-
) -> list[Any]:
|
|
1039
|
+
async def list_files(self) -> list[Any]:
|
|
1109
1040
|
"""
|
|
1110
1041
|
Retrieves a list of files from the remote API endpoint.
|
|
1111
1042
|
|
|
@@ -1127,7 +1058,7 @@ class ShortcutApp(APIApplication):
|
|
|
1127
1058
|
response.raise_for_status()
|
|
1128
1059
|
return response.json()
|
|
1129
1060
|
|
|
1130
|
-
def get_file(self, file_public_id) -> dict[str, Any]:
|
|
1061
|
+
async def get_file(self, file_public_id) -> dict[str, Any]:
|
|
1131
1062
|
"""
|
|
1132
1063
|
Retrieves a file based on its public ID, returning a dictionary containing file information.
|
|
1133
1064
|
|
|
@@ -1151,15 +1082,8 @@ class ShortcutApp(APIApplication):
|
|
|
1151
1082
|
response.raise_for_status()
|
|
1152
1083
|
return response.json()
|
|
1153
1084
|
|
|
1154
|
-
def update_file(
|
|
1155
|
-
self,
|
|
1156
|
-
file_public_id,
|
|
1157
|
-
description=None,
|
|
1158
|
-
created_at=None,
|
|
1159
|
-
updated_at=None,
|
|
1160
|
-
name=None,
|
|
1161
|
-
uploader_id=None,
|
|
1162
|
-
external_id=None,
|
|
1085
|
+
async def update_file(
|
|
1086
|
+
self, file_public_id, description=None, created_at=None, updated_at=None, name=None, uploader_id=None, external_id=None
|
|
1163
1087
|
) -> dict[str, Any]:
|
|
1164
1088
|
"""
|
|
1165
1089
|
Updates metadata for a file identified by its public ID.
|
|
@@ -1200,7 +1124,7 @@ class ShortcutApp(APIApplication):
|
|
|
1200
1124
|
response.raise_for_status()
|
|
1201
1125
|
return response.json()
|
|
1202
1126
|
|
|
1203
|
-
def delete_file(self, file_public_id) -> Any:
|
|
1127
|
+
async def delete_file(self, file_public_id) -> Any:
|
|
1204
1128
|
"""
|
|
1205
1129
|
Deletes a file identified by a public ID from the server.
|
|
1206
1130
|
|
|
@@ -1225,9 +1149,7 @@ class ShortcutApp(APIApplication):
|
|
|
1225
1149
|
response.raise_for_status()
|
|
1226
1150
|
return response.json()
|
|
1227
1151
|
|
|
1228
|
-
def list_groups(
|
|
1229
|
-
self,
|
|
1230
|
-
) -> list[Any]:
|
|
1152
|
+
async def list_groups(self) -> list[Any]:
|
|
1231
1153
|
"""
|
|
1232
1154
|
Retrieves a list of all groups from the API.
|
|
1233
1155
|
|
|
@@ -1249,16 +1171,8 @@ class ShortcutApp(APIApplication):
|
|
|
1249
1171
|
response.raise_for_status()
|
|
1250
1172
|
return response.json()
|
|
1251
1173
|
|
|
1252
|
-
def create_group(
|
|
1253
|
-
self,
|
|
1254
|
-
name,
|
|
1255
|
-
mention_name,
|
|
1256
|
-
description=None,
|
|
1257
|
-
member_ids=None,
|
|
1258
|
-
workflow_ids=None,
|
|
1259
|
-
color=None,
|
|
1260
|
-
color_key=None,
|
|
1261
|
-
display_icon_id=None,
|
|
1174
|
+
async def create_group(
|
|
1175
|
+
self, name, mention_name, description=None, member_ids=None, workflow_ids=None, color=None, color_key=None, display_icon_id=None
|
|
1262
1176
|
) -> dict[str, Any]:
|
|
1263
1177
|
"""
|
|
1264
1178
|
Creates a new group with the specified configuration and returns the group's details.
|
|
@@ -1304,7 +1218,7 @@ class ShortcutApp(APIApplication):
|
|
|
1304
1218
|
response.raise_for_status()
|
|
1305
1219
|
return response.json()
|
|
1306
1220
|
|
|
1307
|
-
def get_group(self, group_public_id) -> dict[str, Any]:
|
|
1221
|
+
async def get_group(self, group_public_id) -> dict[str, Any]:
|
|
1308
1222
|
"""
|
|
1309
1223
|
Retrieves information about a specific group using its public ID.
|
|
1310
1224
|
|
|
@@ -1329,7 +1243,7 @@ class ShortcutApp(APIApplication):
|
|
|
1329
1243
|
response.raise_for_status()
|
|
1330
1244
|
return response.json()
|
|
1331
1245
|
|
|
1332
|
-
def update_group(
|
|
1246
|
+
async def update_group(
|
|
1333
1247
|
self,
|
|
1334
1248
|
group_public_id,
|
|
1335
1249
|
description=None,
|
|
@@ -1387,7 +1301,7 @@ class ShortcutApp(APIApplication):
|
|
|
1387
1301
|
response.raise_for_status()
|
|
1388
1302
|
return response.json()
|
|
1389
1303
|
|
|
1390
|
-
def list_group_stories(self, group_public_id, limit=None, offset=None) -> list[Any]:
|
|
1304
|
+
async def list_group_stories(self, group_public_id, limit=None, offset=None) -> list[Any]:
|
|
1391
1305
|
"""
|
|
1392
1306
|
Retrieves a list of stories from a specific group.
|
|
1393
1307
|
|
|
@@ -1409,16 +1323,12 @@ class ShortcutApp(APIApplication):
|
|
|
1409
1323
|
if group_public_id is None:
|
|
1410
1324
|
raise ValueError("Missing required parameter 'group-public-id'")
|
|
1411
1325
|
url = f"{self.base_url}/api/v3/groups/{group_public_id}/stories"
|
|
1412
|
-
query_params = {
|
|
1413
|
-
k: v for k, v in [("limit", limit), ("offset", offset)] if v is not None
|
|
1414
|
-
}
|
|
1326
|
+
query_params = {k: v for k, v in [("limit", limit), ("offset", offset)] if v is not None}
|
|
1415
1327
|
response = self._get(url, params=query_params)
|
|
1416
1328
|
response.raise_for_status()
|
|
1417
1329
|
return response.json()
|
|
1418
1330
|
|
|
1419
|
-
def list_iterations(
|
|
1420
|
-
self,
|
|
1421
|
-
) -> list[Any]:
|
|
1331
|
+
async def list_iterations(self) -> list[Any]:
|
|
1422
1332
|
"""
|
|
1423
1333
|
Lists all available iterations from the API.
|
|
1424
1334
|
|
|
@@ -1440,15 +1350,8 @@ class ShortcutApp(APIApplication):
|
|
|
1440
1350
|
response.raise_for_status()
|
|
1441
1351
|
return response.json()
|
|
1442
1352
|
|
|
1443
|
-
def create_iteration(
|
|
1444
|
-
self,
|
|
1445
|
-
name,
|
|
1446
|
-
start_date,
|
|
1447
|
-
end_date,
|
|
1448
|
-
follower_ids=None,
|
|
1449
|
-
group_ids=None,
|
|
1450
|
-
labels=None,
|
|
1451
|
-
description=None,
|
|
1353
|
+
async def create_iteration(
|
|
1354
|
+
self, name, start_date, end_date, follower_ids=None, group_ids=None, labels=None, description=None
|
|
1452
1355
|
) -> dict[str, Any]:
|
|
1453
1356
|
"""
|
|
1454
1357
|
Creates a new iteration with the specified details and returns the server's response as a dictionary.
|
|
@@ -1494,9 +1397,7 @@ class ShortcutApp(APIApplication):
|
|
|
1494
1397
|
response.raise_for_status()
|
|
1495
1398
|
return response.json()
|
|
1496
1399
|
|
|
1497
|
-
def disable_iterations(
|
|
1498
|
-
self,
|
|
1499
|
-
) -> Any:
|
|
1400
|
+
async def disable_iterations(self) -> Any:
|
|
1500
1401
|
"""
|
|
1501
1402
|
Disables iterations by making a PUT request to the iterations API endpoint.
|
|
1502
1403
|
|
|
@@ -1518,9 +1419,7 @@ class ShortcutApp(APIApplication):
|
|
|
1518
1419
|
response.raise_for_status()
|
|
1519
1420
|
return response.json()
|
|
1520
1421
|
|
|
1521
|
-
def enable_iterations(
|
|
1522
|
-
self,
|
|
1523
|
-
) -> Any:
|
|
1422
|
+
async def enable_iterations(self) -> Any:
|
|
1524
1423
|
"""
|
|
1525
1424
|
Enable iterations for the API service.
|
|
1526
1425
|
|
|
@@ -1542,7 +1441,7 @@ class ShortcutApp(APIApplication):
|
|
|
1542
1441
|
response.raise_for_status()
|
|
1543
1442
|
return response.json()
|
|
1544
1443
|
|
|
1545
|
-
def get_iteration(self, iteration_public_id) -> dict[str, Any]:
|
|
1444
|
+
async def get_iteration(self, iteration_public_id) -> dict[str, Any]:
|
|
1546
1445
|
"""
|
|
1547
1446
|
Retrieves iteration details using the specified public ID.
|
|
1548
1447
|
|
|
@@ -1567,7 +1466,7 @@ class ShortcutApp(APIApplication):
|
|
|
1567
1466
|
response.raise_for_status()
|
|
1568
1467
|
return response.json()
|
|
1569
1468
|
|
|
1570
|
-
def update_iteration(
|
|
1469
|
+
async def update_iteration(
|
|
1571
1470
|
self,
|
|
1572
1471
|
iteration_public_id,
|
|
1573
1472
|
follower_ids=None,
|
|
@@ -1619,7 +1518,7 @@ class ShortcutApp(APIApplication):
|
|
|
1619
1518
|
response.raise_for_status()
|
|
1620
1519
|
return response.json()
|
|
1621
1520
|
|
|
1622
|
-
def delete_iteration(self, iteration_public_id) -> Any:
|
|
1521
|
+
async def delete_iteration(self, iteration_public_id) -> Any:
|
|
1623
1522
|
"""
|
|
1624
1523
|
Deletes a specific iteration identified by its public ID.
|
|
1625
1524
|
|
|
@@ -1644,9 +1543,7 @@ class ShortcutApp(APIApplication):
|
|
|
1644
1543
|
response.raise_for_status()
|
|
1645
1544
|
return response.json()
|
|
1646
1545
|
|
|
1647
|
-
def list_iteration_stories(
|
|
1648
|
-
self, iteration_public_id, includes_description=None
|
|
1649
|
-
) -> list[Any]:
|
|
1546
|
+
async def list_iteration_stories(self, iteration_public_id, includes_description=None) -> list[Any]:
|
|
1650
1547
|
"""
|
|
1651
1548
|
Retrieves a list of stories for a specified iteration, optionally including their descriptions.
|
|
1652
1549
|
|
|
@@ -1667,16 +1564,12 @@ class ShortcutApp(APIApplication):
|
|
|
1667
1564
|
if iteration_public_id is None:
|
|
1668
1565
|
raise ValueError("Missing required parameter 'iteration-public-id'")
|
|
1669
1566
|
url = f"{self.base_url}/api/v3/iterations/{iteration_public_id}/stories"
|
|
1670
|
-
query_params = {
|
|
1671
|
-
k: v
|
|
1672
|
-
for k, v in [("includes_description", includes_description)]
|
|
1673
|
-
if v is not None
|
|
1674
|
-
}
|
|
1567
|
+
query_params = {k: v for k, v in [("includes_description", includes_description)] if v is not None}
|
|
1675
1568
|
response = self._get(url, params=query_params)
|
|
1676
1569
|
response.raise_for_status()
|
|
1677
1570
|
return response.json()
|
|
1678
1571
|
|
|
1679
|
-
def get_key_result(self, key_result_public_id) -> dict[str, Any]:
|
|
1572
|
+
async def get_key_result(self, key_result_public_id) -> dict[str, Any]:
|
|
1680
1573
|
"""
|
|
1681
1574
|
Retrieves detailed information for a specific key result using its public identifier.
|
|
1682
1575
|
|
|
@@ -1701,13 +1594,8 @@ class ShortcutApp(APIApplication):
|
|
|
1701
1594
|
response.raise_for_status()
|
|
1702
1595
|
return response.json()
|
|
1703
1596
|
|
|
1704
|
-
def update_key_result(
|
|
1705
|
-
self,
|
|
1706
|
-
key_result_public_id,
|
|
1707
|
-
name=None,
|
|
1708
|
-
initial_observed_value=None,
|
|
1709
|
-
observed_value=None,
|
|
1710
|
-
target_value=None,
|
|
1597
|
+
async def update_key_result(
|
|
1598
|
+
self, key_result_public_id, name=None, initial_observed_value=None, observed_value=None, target_value=None
|
|
1711
1599
|
) -> dict[str, Any]:
|
|
1712
1600
|
"""
|
|
1713
1601
|
Updates a key result with the provided details.
|
|
@@ -1743,7 +1631,7 @@ class ShortcutApp(APIApplication):
|
|
|
1743
1631
|
response.raise_for_status()
|
|
1744
1632
|
return response.json()
|
|
1745
1633
|
|
|
1746
|
-
def list_labels(self, slim=None) -> list[Any]:
|
|
1634
|
+
async def list_labels(self, slim=None) -> list[Any]:
|
|
1747
1635
|
"""
|
|
1748
1636
|
Fetches a list of labels from the API.
|
|
1749
1637
|
|
|
@@ -1765,9 +1653,7 @@ class ShortcutApp(APIApplication):
|
|
|
1765
1653
|
response.raise_for_status()
|
|
1766
1654
|
return response.json()
|
|
1767
1655
|
|
|
1768
|
-
def create_label(
|
|
1769
|
-
self, name, description=None, color=None, external_id=None
|
|
1770
|
-
) -> dict[str, Any]:
|
|
1656
|
+
async def create_label(self, name, description=None, color=None, external_id=None) -> dict[str, Any]:
|
|
1771
1657
|
"""
|
|
1772
1658
|
Creates a new label with the specified attributes.
|
|
1773
1659
|
|
|
@@ -1789,12 +1675,7 @@ class ShortcutApp(APIApplication):
|
|
|
1789
1675
|
"""
|
|
1790
1676
|
if name is None:
|
|
1791
1677
|
raise ValueError("Missing required parameter 'name'")
|
|
1792
|
-
request_body = {
|
|
1793
|
-
"name": name,
|
|
1794
|
-
"description": description,
|
|
1795
|
-
"color": color,
|
|
1796
|
-
"external_id": external_id,
|
|
1797
|
-
}
|
|
1678
|
+
request_body = {"name": name, "description": description, "color": color, "external_id": external_id}
|
|
1798
1679
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
1799
1680
|
url = f"{self.base_url}/api/v3/labels"
|
|
1800
1681
|
query_params = {}
|
|
@@ -1802,7 +1683,7 @@ class ShortcutApp(APIApplication):
|
|
|
1802
1683
|
response.raise_for_status()
|
|
1803
1684
|
return response.json()
|
|
1804
1685
|
|
|
1805
|
-
def get_label(self, label_public_id) -> dict[str, Any]:
|
|
1686
|
+
async def get_label(self, label_public_id) -> dict[str, Any]:
|
|
1806
1687
|
"""
|
|
1807
1688
|
Retrieves a label's details from the API using its public identifier.
|
|
1808
1689
|
|
|
@@ -1827,9 +1708,7 @@ class ShortcutApp(APIApplication):
|
|
|
1827
1708
|
response.raise_for_status()
|
|
1828
1709
|
return response.json()
|
|
1829
1710
|
|
|
1830
|
-
def update_label(
|
|
1831
|
-
self, label_public_id, name=None, description=None, color=None, archived=None
|
|
1832
|
-
) -> dict[str, Any]:
|
|
1711
|
+
async def update_label(self, label_public_id, name=None, description=None, color=None, archived=None) -> dict[str, Any]:
|
|
1833
1712
|
"""
|
|
1834
1713
|
Updates a label with the specified information.
|
|
1835
1714
|
|
|
@@ -1852,12 +1731,7 @@ class ShortcutApp(APIApplication):
|
|
|
1852
1731
|
"""
|
|
1853
1732
|
if label_public_id is None:
|
|
1854
1733
|
raise ValueError("Missing required parameter 'label-public-id'")
|
|
1855
|
-
request_body = {
|
|
1856
|
-
"name": name,
|
|
1857
|
-
"description": description,
|
|
1858
|
-
"color": color,
|
|
1859
|
-
"archived": archived,
|
|
1860
|
-
}
|
|
1734
|
+
request_body = {"name": name, "description": description, "color": color, "archived": archived}
|
|
1861
1735
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
1862
1736
|
url = f"{self.base_url}/api/v3/labels/{label_public_id}"
|
|
1863
1737
|
query_params = {}
|
|
@@ -1865,7 +1739,7 @@ class ShortcutApp(APIApplication):
|
|
|
1865
1739
|
response.raise_for_status()
|
|
1866
1740
|
return response.json()
|
|
1867
1741
|
|
|
1868
|
-
def delete_label(self, label_public_id) -> Any:
|
|
1742
|
+
async def delete_label(self, label_public_id) -> Any:
|
|
1869
1743
|
"""
|
|
1870
1744
|
Deletes a label identified by its public ID via an HTTP DELETE request.
|
|
1871
1745
|
|
|
@@ -1890,7 +1764,7 @@ class ShortcutApp(APIApplication):
|
|
|
1890
1764
|
response.raise_for_status()
|
|
1891
1765
|
return response.json()
|
|
1892
1766
|
|
|
1893
|
-
def list_label_epics(self, label_public_id) -> list[Any]:
|
|
1767
|
+
async def list_label_epics(self, label_public_id) -> list[Any]:
|
|
1894
1768
|
"""
|
|
1895
1769
|
Retrieves a list of epics associated with a specific label.
|
|
1896
1770
|
|
|
@@ -1915,9 +1789,7 @@ class ShortcutApp(APIApplication):
|
|
|
1915
1789
|
response.raise_for_status()
|
|
1916
1790
|
return response.json()
|
|
1917
1791
|
|
|
1918
|
-
def list_label_stories(
|
|
1919
|
-
self, label_public_id, includes_description=None
|
|
1920
|
-
) -> list[Any]:
|
|
1792
|
+
async def list_label_stories(self, label_public_id, includes_description=None) -> list[Any]:
|
|
1921
1793
|
"""
|
|
1922
1794
|
Retrieves a list of stories associated with a specific label.
|
|
1923
1795
|
|
|
@@ -1938,18 +1810,12 @@ class ShortcutApp(APIApplication):
|
|
|
1938
1810
|
if label_public_id is None:
|
|
1939
1811
|
raise ValueError("Missing required parameter 'label-public-id'")
|
|
1940
1812
|
url = f"{self.base_url}/api/v3/labels/{label_public_id}/stories"
|
|
1941
|
-
query_params = {
|
|
1942
|
-
k: v
|
|
1943
|
-
for k, v in [("includes_description", includes_description)]
|
|
1944
|
-
if v is not None
|
|
1945
|
-
}
|
|
1813
|
+
query_params = {k: v for k, v in [("includes_description", includes_description)] if v is not None}
|
|
1946
1814
|
response = self._get(url, params=query_params)
|
|
1947
1815
|
response.raise_for_status()
|
|
1948
1816
|
return response.json()
|
|
1949
1817
|
|
|
1950
|
-
def list_linked_files(
|
|
1951
|
-
self,
|
|
1952
|
-
) -> list[Any]:
|
|
1818
|
+
async def list_linked_files(self) -> list[Any]:
|
|
1953
1819
|
"""
|
|
1954
1820
|
Retrieve a list of all linked files.
|
|
1955
1821
|
|
|
@@ -1971,17 +1837,8 @@ class ShortcutApp(APIApplication):
|
|
|
1971
1837
|
response.raise_for_status()
|
|
1972
1838
|
return response.json()
|
|
1973
1839
|
|
|
1974
|
-
def create_linked_file(
|
|
1975
|
-
self,
|
|
1976
|
-
name,
|
|
1977
|
-
type,
|
|
1978
|
-
url,
|
|
1979
|
-
description=None,
|
|
1980
|
-
story_id=None,
|
|
1981
|
-
thumbnail_url=None,
|
|
1982
|
-
size=None,
|
|
1983
|
-
uploader_id=None,
|
|
1984
|
-
content_type=None,
|
|
1840
|
+
async def create_linked_file(
|
|
1841
|
+
self, name, type, url, description=None, story_id=None, thumbnail_url=None, size=None, uploader_id=None, content_type=None
|
|
1985
1842
|
) -> dict[str, Any]:
|
|
1986
1843
|
"""
|
|
1987
1844
|
Creates a linked file with the specified attributes.
|
|
@@ -2031,7 +1888,7 @@ class ShortcutApp(APIApplication):
|
|
|
2031
1888
|
response.raise_for_status()
|
|
2032
1889
|
return response.json()
|
|
2033
1890
|
|
|
2034
|
-
def get_linked_file(self, linked_file_public_id) -> dict[str, Any]:
|
|
1891
|
+
async def get_linked_file(self, linked_file_public_id) -> dict[str, Any]:
|
|
2035
1892
|
"""
|
|
2036
1893
|
Fetches details for a linked file by its public identifier.
|
|
2037
1894
|
|
|
@@ -2056,7 +1913,7 @@ class ShortcutApp(APIApplication):
|
|
|
2056
1913
|
response.raise_for_status()
|
|
2057
1914
|
return response.json()
|
|
2058
1915
|
|
|
2059
|
-
def update_linked_file(
|
|
1916
|
+
async def update_linked_file(
|
|
2060
1917
|
self,
|
|
2061
1918
|
linked_file_public_id,
|
|
2062
1919
|
description=None,
|
|
@@ -2111,7 +1968,7 @@ class ShortcutApp(APIApplication):
|
|
|
2111
1968
|
response.raise_for_status()
|
|
2112
1969
|
return response.json()
|
|
2113
1970
|
|
|
2114
|
-
def delete_linked_file(self, linked_file_public_id) -> Any:
|
|
1971
|
+
async def delete_linked_file(self, linked_file_public_id) -> Any:
|
|
2115
1972
|
"""
|
|
2116
1973
|
Deletes a linked file by its public ID using the API.
|
|
2117
1974
|
|
|
@@ -2136,9 +1993,7 @@ class ShortcutApp(APIApplication):
|
|
|
2136
1993
|
response.raise_for_status()
|
|
2137
1994
|
return response.json()
|
|
2138
1995
|
|
|
2139
|
-
def get_current_member_info(
|
|
2140
|
-
self,
|
|
2141
|
-
) -> dict[str, Any]:
|
|
1996
|
+
async def get_current_member_info(self) -> dict[str, Any]:
|
|
2142
1997
|
"""
|
|
2143
1998
|
Retrieves information about the current authenticated member.
|
|
2144
1999
|
|
|
@@ -2160,9 +2015,7 @@ class ShortcutApp(APIApplication):
|
|
|
2160
2015
|
response.raise_for_status()
|
|
2161
2016
|
return response.json()
|
|
2162
2017
|
|
|
2163
|
-
def list_milestones(
|
|
2164
|
-
self,
|
|
2165
|
-
) -> list[Any]:
|
|
2018
|
+
async def list_milestones(self) -> list[Any]:
|
|
2166
2019
|
"""
|
|
2167
2020
|
Lists milestones by fetching them from a specified API endpoint.
|
|
2168
2021
|
|
|
@@ -2184,14 +2037,8 @@ class ShortcutApp(APIApplication):
|
|
|
2184
2037
|
response.raise_for_status()
|
|
2185
2038
|
return response.json()
|
|
2186
2039
|
|
|
2187
|
-
def create_milestone(
|
|
2188
|
-
self,
|
|
2189
|
-
name,
|
|
2190
|
-
description=None,
|
|
2191
|
-
state=None,
|
|
2192
|
-
started_at_override=None,
|
|
2193
|
-
completed_at_override=None,
|
|
2194
|
-
categories=None,
|
|
2040
|
+
async def create_milestone(
|
|
2041
|
+
self, name, description=None, state=None, started_at_override=None, completed_at_override=None, categories=None
|
|
2195
2042
|
) -> dict[str, Any]:
|
|
2196
2043
|
"""
|
|
2197
2044
|
Creates a new milestone with the specified parameters.
|
|
@@ -2231,7 +2078,7 @@ class ShortcutApp(APIApplication):
|
|
|
2231
2078
|
response.raise_for_status()
|
|
2232
2079
|
return response.json()
|
|
2233
2080
|
|
|
2234
|
-
def get_milestone(self, milestone_public_id) -> dict[str, Any]:
|
|
2081
|
+
async def get_milestone(self, milestone_public_id) -> dict[str, Any]:
|
|
2235
2082
|
"""
|
|
2236
2083
|
Retrieves a milestone resource by its public identifier.
|
|
2237
2084
|
|
|
@@ -2256,7 +2103,7 @@ class ShortcutApp(APIApplication):
|
|
|
2256
2103
|
response.raise_for_status()
|
|
2257
2104
|
return response.json()
|
|
2258
2105
|
|
|
2259
|
-
def update_milestone(
|
|
2106
|
+
async def update_milestone(
|
|
2260
2107
|
self,
|
|
2261
2108
|
milestone_public_id,
|
|
2262
2109
|
description=None,
|
|
@@ -2314,7 +2161,7 @@ class ShortcutApp(APIApplication):
|
|
|
2314
2161
|
response.raise_for_status()
|
|
2315
2162
|
return response.json()
|
|
2316
2163
|
|
|
2317
|
-
def delete_milestone(self, milestone_public_id) -> Any:
|
|
2164
|
+
async def delete_milestone(self, milestone_public_id) -> Any:
|
|
2318
2165
|
"""
|
|
2319
2166
|
Deletes a milestone by its public ID.
|
|
2320
2167
|
|
|
@@ -2339,7 +2186,7 @@ class ShortcutApp(APIApplication):
|
|
|
2339
2186
|
response.raise_for_status()
|
|
2340
2187
|
return response.json()
|
|
2341
2188
|
|
|
2342
|
-
def list_milestone_epics(self, milestone_public_id) -> list[Any]:
|
|
2189
|
+
async def list_milestone_epics(self, milestone_public_id) -> list[Any]:
|
|
2343
2190
|
"""
|
|
2344
2191
|
Retrieves a list of epics associated with a specified milestone.
|
|
2345
2192
|
|
|
@@ -2364,9 +2211,7 @@ class ShortcutApp(APIApplication):
|
|
|
2364
2211
|
response.raise_for_status()
|
|
2365
2212
|
return response.json()
|
|
2366
2213
|
|
|
2367
|
-
def list_objectives(
|
|
2368
|
-
self,
|
|
2369
|
-
) -> list[Any]:
|
|
2214
|
+
async def list_objectives(self) -> list[Any]:
|
|
2370
2215
|
"""
|
|
2371
2216
|
Retrieves a list of all objectives from the API endpoint.
|
|
2372
2217
|
|
|
@@ -2388,14 +2233,8 @@ class ShortcutApp(APIApplication):
|
|
|
2388
2233
|
response.raise_for_status()
|
|
2389
2234
|
return response.json()
|
|
2390
2235
|
|
|
2391
|
-
def create_objective(
|
|
2392
|
-
self,
|
|
2393
|
-
name,
|
|
2394
|
-
description=None,
|
|
2395
|
-
state=None,
|
|
2396
|
-
started_at_override=None,
|
|
2397
|
-
completed_at_override=None,
|
|
2398
|
-
categories=None,
|
|
2236
|
+
async def create_objective(
|
|
2237
|
+
self, name, description=None, state=None, started_at_override=None, completed_at_override=None, categories=None
|
|
2399
2238
|
) -> dict[str, Any]:
|
|
2400
2239
|
"""
|
|
2401
2240
|
Creates a new objective resource with the specified attributes and returns the created objective's data.
|
|
@@ -2435,7 +2274,7 @@ class ShortcutApp(APIApplication):
|
|
|
2435
2274
|
response.raise_for_status()
|
|
2436
2275
|
return response.json()
|
|
2437
2276
|
|
|
2438
|
-
def get_objective(self, objective_public_id) -> dict[str, Any]:
|
|
2277
|
+
async def get_objective(self, objective_public_id) -> dict[str, Any]:
|
|
2439
2278
|
"""
|
|
2440
2279
|
Retrieves an objective by its public ID from the API.
|
|
2441
2280
|
|
|
@@ -2460,7 +2299,7 @@ class ShortcutApp(APIApplication):
|
|
|
2460
2299
|
response.raise_for_status()
|
|
2461
2300
|
return response.json()
|
|
2462
2301
|
|
|
2463
|
-
def update_objective(
|
|
2302
|
+
async def update_objective(
|
|
2464
2303
|
self,
|
|
2465
2304
|
objective_public_id,
|
|
2466
2305
|
description=None,
|
|
@@ -2518,7 +2357,7 @@ class ShortcutApp(APIApplication):
|
|
|
2518
2357
|
response.raise_for_status()
|
|
2519
2358
|
return response.json()
|
|
2520
2359
|
|
|
2521
|
-
def delete_objective(self, objective_public_id) -> Any:
|
|
2360
|
+
async def delete_objective(self, objective_public_id) -> Any:
|
|
2522
2361
|
"""
|
|
2523
2362
|
Deletes an objective by its public ID using an HTTP DELETE request.
|
|
2524
2363
|
|
|
@@ -2543,7 +2382,7 @@ class ShortcutApp(APIApplication):
|
|
|
2543
2382
|
response.raise_for_status()
|
|
2544
2383
|
return response.json()
|
|
2545
2384
|
|
|
2546
|
-
def list_objective_epics(self, objective_public_id) -> list[Any]:
|
|
2385
|
+
async def list_objective_epics(self, objective_public_id) -> list[Any]:
|
|
2547
2386
|
"""
|
|
2548
2387
|
Retrieves a list of epics associated with a specific objective.
|
|
2549
2388
|
|
|
@@ -2568,9 +2407,7 @@ class ShortcutApp(APIApplication):
|
|
|
2568
2407
|
response.raise_for_status()
|
|
2569
2408
|
return response.json()
|
|
2570
2409
|
|
|
2571
|
-
def list_projects(
|
|
2572
|
-
self,
|
|
2573
|
-
) -> list[Any]:
|
|
2410
|
+
async def list_projects(self) -> list[Any]:
|
|
2574
2411
|
"""
|
|
2575
2412
|
Retrieves and lists all available projects from the API.
|
|
2576
2413
|
|
|
@@ -2592,7 +2429,7 @@ class ShortcutApp(APIApplication):
|
|
|
2592
2429
|
response.raise_for_status()
|
|
2593
2430
|
return response.json()
|
|
2594
2431
|
|
|
2595
|
-
def create_project(
|
|
2432
|
+
async def create_project(
|
|
2596
2433
|
self,
|
|
2597
2434
|
name,
|
|
2598
2435
|
team_id,
|
|
@@ -2655,7 +2492,7 @@ class ShortcutApp(APIApplication):
|
|
|
2655
2492
|
response.raise_for_status()
|
|
2656
2493
|
return response.json()
|
|
2657
2494
|
|
|
2658
|
-
def get_project(self, project_public_id) -> dict[str, Any]:
|
|
2495
|
+
async def get_project(self, project_public_id) -> dict[str, Any]:
|
|
2659
2496
|
"""
|
|
2660
2497
|
Retrieves project information by its public ID.
|
|
2661
2498
|
|
|
@@ -2680,7 +2517,7 @@ class ShortcutApp(APIApplication):
|
|
|
2680
2517
|
response.raise_for_status()
|
|
2681
2518
|
return response.json()
|
|
2682
2519
|
|
|
2683
|
-
def update_project(
|
|
2520
|
+
async def update_project(
|
|
2684
2521
|
self,
|
|
2685
2522
|
project_public_id,
|
|
2686
2523
|
description=None,
|
|
@@ -2738,7 +2575,7 @@ class ShortcutApp(APIApplication):
|
|
|
2738
2575
|
response.raise_for_status()
|
|
2739
2576
|
return response.json()
|
|
2740
2577
|
|
|
2741
|
-
def delete_project(self, project_public_id) -> Any:
|
|
2578
|
+
async def delete_project(self, project_public_id) -> Any:
|
|
2742
2579
|
"""
|
|
2743
2580
|
Deletes a project using its public ID.
|
|
2744
2581
|
|
|
@@ -2763,7 +2600,7 @@ class ShortcutApp(APIApplication):
|
|
|
2763
2600
|
response.raise_for_status()
|
|
2764
2601
|
return response.json()
|
|
2765
2602
|
|
|
2766
|
-
def list_stories(self, project_public_id, includes_description=None) -> list[Any]:
|
|
2603
|
+
async def list_stories(self, project_public_id, includes_description=None) -> list[Any]:
|
|
2767
2604
|
"""
|
|
2768
2605
|
Retrieves a list of stories for a specific project, with optional inclusion of story descriptions.
|
|
2769
2606
|
|
|
@@ -2784,18 +2621,12 @@ class ShortcutApp(APIApplication):
|
|
|
2784
2621
|
if project_public_id is None:
|
|
2785
2622
|
raise ValueError("Missing required parameter 'project-public-id'")
|
|
2786
2623
|
url = f"{self.base_url}/api/v3/projects/{project_public_id}/stories"
|
|
2787
|
-
query_params = {
|
|
2788
|
-
k: v
|
|
2789
|
-
for k, v in [("includes_description", includes_description)]
|
|
2790
|
-
if v is not None
|
|
2791
|
-
}
|
|
2624
|
+
query_params = {k: v for k, v in [("includes_description", includes_description)] if v is not None}
|
|
2792
2625
|
response = self._get(url, params=query_params)
|
|
2793
2626
|
response.raise_for_status()
|
|
2794
2627
|
return response.json()
|
|
2795
2628
|
|
|
2796
|
-
def list_repositories(
|
|
2797
|
-
self,
|
|
2798
|
-
) -> list[Any]:
|
|
2629
|
+
async def list_repositories(self) -> list[Any]:
|
|
2799
2630
|
"""
|
|
2800
2631
|
Lists all repositories from the API.
|
|
2801
2632
|
|
|
@@ -2817,7 +2648,7 @@ class ShortcutApp(APIApplication):
|
|
|
2817
2648
|
response.raise_for_status()
|
|
2818
2649
|
return response.json()
|
|
2819
2650
|
|
|
2820
|
-
def get_repository(self, repo_public_id) -> dict[str, Any]:
|
|
2651
|
+
async def get_repository(self, repo_public_id) -> dict[str, Any]:
|
|
2821
2652
|
"""
|
|
2822
2653
|
Retrieves detailed information about a repository by its public ID.
|
|
2823
2654
|
|
|
@@ -2842,9 +2673,7 @@ class ShortcutApp(APIApplication):
|
|
|
2842
2673
|
response.raise_for_status()
|
|
2843
2674
|
return response.json()
|
|
2844
2675
|
|
|
2845
|
-
def search(
|
|
2846
|
-
self, query, page_size=None, detail=None, next=None, entity_types=None
|
|
2847
|
-
) -> dict[str, Any]:
|
|
2676
|
+
async def search(self, query, page_size=None, detail=None, next=None, entity_types=None) -> dict[str, Any]:
|
|
2848
2677
|
"""
|
|
2849
2678
|
Performs a search operation based on the provided query string and optional parameters like page size and entity types.
|
|
2850
2679
|
|
|
@@ -2869,22 +2698,14 @@ class ShortcutApp(APIApplication):
|
|
|
2869
2698
|
url = f"{self.base_url}/api/v3/search"
|
|
2870
2699
|
query_params = {
|
|
2871
2700
|
k: v
|
|
2872
|
-
for k, v in [
|
|
2873
|
-
("query", query),
|
|
2874
|
-
("page_size", page_size),
|
|
2875
|
-
("detail", detail),
|
|
2876
|
-
("next", next),
|
|
2877
|
-
("entity_types", entity_types),
|
|
2878
|
-
]
|
|
2701
|
+
for k, v in [("query", query), ("page_size", page_size), ("detail", detail), ("next", next), ("entity_types", entity_types)]
|
|
2879
2702
|
if v is not None
|
|
2880
2703
|
}
|
|
2881
2704
|
response = self._get(url, params=query_params)
|
|
2882
2705
|
response.raise_for_status()
|
|
2883
2706
|
return response.json()
|
|
2884
2707
|
|
|
2885
|
-
def search_epics(
|
|
2886
|
-
self, query, page_size=None, detail=None, next=None, entity_types=None
|
|
2887
|
-
) -> dict[str, Any]:
|
|
2708
|
+
async def search_epics(self, query, page_size=None, detail=None, next=None, entity_types=None) -> dict[str, Any]:
|
|
2888
2709
|
"""
|
|
2889
2710
|
Searches for epics based on the provided query parameters.
|
|
2890
2711
|
|
|
@@ -2910,22 +2731,14 @@ class ShortcutApp(APIApplication):
|
|
|
2910
2731
|
url = f"{self.base_url}/api/v3/search/epics"
|
|
2911
2732
|
query_params = {
|
|
2912
2733
|
k: v
|
|
2913
|
-
for k, v in [
|
|
2914
|
-
("query", query),
|
|
2915
|
-
("page_size", page_size),
|
|
2916
|
-
("detail", detail),
|
|
2917
|
-
("next", next),
|
|
2918
|
-
("entity_types", entity_types),
|
|
2919
|
-
]
|
|
2734
|
+
for k, v in [("query", query), ("page_size", page_size), ("detail", detail), ("next", next), ("entity_types", entity_types)]
|
|
2920
2735
|
if v is not None
|
|
2921
2736
|
}
|
|
2922
2737
|
response = self._get(url, params=query_params)
|
|
2923
2738
|
response.raise_for_status()
|
|
2924
2739
|
return response.json()
|
|
2925
2740
|
|
|
2926
|
-
def search_iterations(
|
|
2927
|
-
self, query, page_size=None, detail=None, next=None, entity_types=None
|
|
2928
|
-
) -> dict[str, Any]:
|
|
2741
|
+
async def search_iterations(self, query, page_size=None, detail=None, next=None, entity_types=None) -> dict[str, Any]:
|
|
2929
2742
|
"""
|
|
2930
2743
|
Searches for iterations based on a query and additional parameters.
|
|
2931
2744
|
|
|
@@ -2951,22 +2764,14 @@ class ShortcutApp(APIApplication):
|
|
|
2951
2764
|
url = f"{self.base_url}/api/v3/search/iterations"
|
|
2952
2765
|
query_params = {
|
|
2953
2766
|
k: v
|
|
2954
|
-
for k, v in [
|
|
2955
|
-
("query", query),
|
|
2956
|
-
("page_size", page_size),
|
|
2957
|
-
("detail", detail),
|
|
2958
|
-
("next", next),
|
|
2959
|
-
("entity_types", entity_types),
|
|
2960
|
-
]
|
|
2767
|
+
for k, v in [("query", query), ("page_size", page_size), ("detail", detail), ("next", next), ("entity_types", entity_types)]
|
|
2961
2768
|
if v is not None
|
|
2962
2769
|
}
|
|
2963
2770
|
response = self._get(url, params=query_params)
|
|
2964
2771
|
response.raise_for_status()
|
|
2965
2772
|
return response.json()
|
|
2966
2773
|
|
|
2967
|
-
def search_milestones(
|
|
2968
|
-
self, query, page_size=None, detail=None, next=None, entity_types=None
|
|
2969
|
-
) -> dict[str, Any]:
|
|
2774
|
+
async def search_milestones(self, query, page_size=None, detail=None, next=None, entity_types=None) -> dict[str, Any]:
|
|
2970
2775
|
"""
|
|
2971
2776
|
Searches for milestones matching the provided query and returns the results as a dictionary.
|
|
2972
2777
|
|
|
@@ -2992,22 +2797,14 @@ class ShortcutApp(APIApplication):
|
|
|
2992
2797
|
url = f"{self.base_url}/api/v3/search/milestones"
|
|
2993
2798
|
query_params = {
|
|
2994
2799
|
k: v
|
|
2995
|
-
for k, v in [
|
|
2996
|
-
("query", query),
|
|
2997
|
-
("page_size", page_size),
|
|
2998
|
-
("detail", detail),
|
|
2999
|
-
("next", next),
|
|
3000
|
-
("entity_types", entity_types),
|
|
3001
|
-
]
|
|
2800
|
+
for k, v in [("query", query), ("page_size", page_size), ("detail", detail), ("next", next), ("entity_types", entity_types)]
|
|
3002
2801
|
if v is not None
|
|
3003
2802
|
}
|
|
3004
2803
|
response = self._get(url, params=query_params)
|
|
3005
2804
|
response.raise_for_status()
|
|
3006
2805
|
return response.json()
|
|
3007
2806
|
|
|
3008
|
-
def search_objectives(
|
|
3009
|
-
self, query, page_size=None, detail=None, next=None, entity_types=None
|
|
3010
|
-
) -> dict[str, Any]:
|
|
2807
|
+
async def search_objectives(self, query, page_size=None, detail=None, next=None, entity_types=None) -> dict[str, Any]:
|
|
3011
2808
|
"""
|
|
3012
2809
|
Searches for objectives based on the specified query and returns the search results.
|
|
3013
2810
|
|
|
@@ -3033,22 +2830,14 @@ class ShortcutApp(APIApplication):
|
|
|
3033
2830
|
url = f"{self.base_url}/api/v3/search/objectives"
|
|
3034
2831
|
query_params = {
|
|
3035
2832
|
k: v
|
|
3036
|
-
for k, v in [
|
|
3037
|
-
("query", query),
|
|
3038
|
-
("page_size", page_size),
|
|
3039
|
-
("detail", detail),
|
|
3040
|
-
("next", next),
|
|
3041
|
-
("entity_types", entity_types),
|
|
3042
|
-
]
|
|
2833
|
+
for k, v in [("query", query), ("page_size", page_size), ("detail", detail), ("next", next), ("entity_types", entity_types)]
|
|
3043
2834
|
if v is not None
|
|
3044
2835
|
}
|
|
3045
2836
|
response = self._get(url, params=query_params)
|
|
3046
2837
|
response.raise_for_status()
|
|
3047
2838
|
return response.json()
|
|
3048
2839
|
|
|
3049
|
-
def search_stories(
|
|
3050
|
-
self, query, page_size=None, detail=None, next=None, entity_types=None
|
|
3051
|
-
) -> dict[str, Any]:
|
|
2840
|
+
async def search_stories(self, query, page_size=None, detail=None, next=None, entity_types=None) -> dict[str, Any]:
|
|
3052
2841
|
"""
|
|
3053
2842
|
Searches for stories matching the given query and optional filters, returning paginated results from the stories API.
|
|
3054
2843
|
|
|
@@ -3074,20 +2863,14 @@ class ShortcutApp(APIApplication):
|
|
|
3074
2863
|
url = f"{self.base_url}/api/v3/search/stories"
|
|
3075
2864
|
query_params = {
|
|
3076
2865
|
k: v
|
|
3077
|
-
for k, v in [
|
|
3078
|
-
("query", query),
|
|
3079
|
-
("page_size", page_size),
|
|
3080
|
-
("detail", detail),
|
|
3081
|
-
("next", next),
|
|
3082
|
-
("entity_types", entity_types),
|
|
3083
|
-
]
|
|
2866
|
+
for k, v in [("query", query), ("page_size", page_size), ("detail", detail), ("next", next), ("entity_types", entity_types)]
|
|
3084
2867
|
if v is not None
|
|
3085
2868
|
}
|
|
3086
2869
|
response = self._get(url, params=query_params)
|
|
3087
2870
|
response.raise_for_status()
|
|
3088
2871
|
return response.json()
|
|
3089
2872
|
|
|
3090
|
-
def create_story(
|
|
2873
|
+
async def create_story(
|
|
3091
2874
|
self,
|
|
3092
2875
|
name,
|
|
3093
2876
|
description=None,
|
|
@@ -3209,7 +2992,7 @@ class ShortcutApp(APIApplication):
|
|
|
3209
2992
|
response.raise_for_status()
|
|
3210
2993
|
return response.json()
|
|
3211
2994
|
|
|
3212
|
-
def update_multiple_stories(
|
|
2995
|
+
async def update_multiple_stories(
|
|
3213
2996
|
self,
|
|
3214
2997
|
story_ids,
|
|
3215
2998
|
archived=None,
|
|
@@ -3307,7 +3090,7 @@ class ShortcutApp(APIApplication):
|
|
|
3307
3090
|
response.raise_for_status()
|
|
3308
3091
|
return response.json()
|
|
3309
3092
|
|
|
3310
|
-
def create_multiple_stories(self, stories) -> list[Any]:
|
|
3093
|
+
async def create_multiple_stories(self, stories) -> list[Any]:
|
|
3311
3094
|
"""
|
|
3312
3095
|
Creates multiple stories in bulk using the API.
|
|
3313
3096
|
|
|
@@ -3326,9 +3109,7 @@ class ShortcutApp(APIApplication):
|
|
|
3326
3109
|
"""
|
|
3327
3110
|
if stories is None:
|
|
3328
3111
|
raise ValueError("Missing required parameter 'stories'")
|
|
3329
|
-
request_body = {
|
|
3330
|
-
"stories": stories,
|
|
3331
|
-
}
|
|
3112
|
+
request_body = {"stories": stories}
|
|
3332
3113
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
3333
3114
|
url = f"{self.base_url}/api/v3/stories/bulk"
|
|
3334
3115
|
query_params = {}
|
|
@@ -3336,7 +3117,7 @@ class ShortcutApp(APIApplication):
|
|
|
3336
3117
|
response.raise_for_status()
|
|
3337
3118
|
return response.json()
|
|
3338
3119
|
|
|
3339
|
-
def create_story_from_template(
|
|
3120
|
+
async def create_story_from_template(
|
|
3340
3121
|
self,
|
|
3341
3122
|
story_template_id,
|
|
3342
3123
|
description=None,
|
|
@@ -3499,7 +3280,7 @@ class ShortcutApp(APIApplication):
|
|
|
3499
3280
|
response.raise_for_status()
|
|
3500
3281
|
return response.json()
|
|
3501
3282
|
|
|
3502
|
-
def search_stories_old(
|
|
3283
|
+
async def search_stories_old(
|
|
3503
3284
|
self,
|
|
3504
3285
|
archived=None,
|
|
3505
3286
|
owner_id=None,
|
|
@@ -3609,7 +3390,7 @@ class ShortcutApp(APIApplication):
|
|
|
3609
3390
|
response.raise_for_status()
|
|
3610
3391
|
return response.json()
|
|
3611
3392
|
|
|
3612
|
-
def get_story(self, story_public_id) -> dict[str, Any]:
|
|
3393
|
+
async def get_story(self, story_public_id) -> dict[str, Any]:
|
|
3613
3394
|
"""
|
|
3614
3395
|
Retrieves a story from the API based on its public ID
|
|
3615
3396
|
|
|
@@ -3633,7 +3414,7 @@ class ShortcutApp(APIApplication):
|
|
|
3633
3414
|
response.raise_for_status()
|
|
3634
3415
|
return response.json()
|
|
3635
3416
|
|
|
3636
|
-
def update_story(
|
|
3417
|
+
async def update_story(
|
|
3637
3418
|
self,
|
|
3638
3419
|
story_public_id,
|
|
3639
3420
|
description=None,
|
|
@@ -3745,7 +3526,7 @@ class ShortcutApp(APIApplication):
|
|
|
3745
3526
|
response.raise_for_status()
|
|
3746
3527
|
return response.json()
|
|
3747
3528
|
|
|
3748
|
-
def delete_story(self, story_public_id) -> Any:
|
|
3529
|
+
async def delete_story(self, story_public_id) -> Any:
|
|
3749
3530
|
"""
|
|
3750
3531
|
Deletes a story using its public ID.
|
|
3751
3532
|
|
|
@@ -3770,7 +3551,7 @@ class ShortcutApp(APIApplication):
|
|
|
3770
3551
|
response.raise_for_status()
|
|
3771
3552
|
return response.json()
|
|
3772
3553
|
|
|
3773
|
-
def list_story_comment(self, story_public_id) -> list[Any]:
|
|
3554
|
+
async def list_story_comment(self, story_public_id) -> list[Any]:
|
|
3774
3555
|
"""
|
|
3775
3556
|
Retrieves a list of comments for a specific story.
|
|
3776
3557
|
|
|
@@ -3795,15 +3576,8 @@ class ShortcutApp(APIApplication):
|
|
|
3795
3576
|
response.raise_for_status()
|
|
3796
3577
|
return response.json()
|
|
3797
3578
|
|
|
3798
|
-
def create_story_comment(
|
|
3799
|
-
self,
|
|
3800
|
-
story_public_id,
|
|
3801
|
-
text,
|
|
3802
|
-
author_id=None,
|
|
3803
|
-
created_at=None,
|
|
3804
|
-
updated_at=None,
|
|
3805
|
-
external_id=None,
|
|
3806
|
-
parent_id=None,
|
|
3579
|
+
async def create_story_comment(
|
|
3580
|
+
self, story_public_id, text, author_id=None, created_at=None, updated_at=None, external_id=None, parent_id=None
|
|
3807
3581
|
) -> dict[str, Any]:
|
|
3808
3582
|
"""
|
|
3809
3583
|
Creates a new comment on a story by sending a POST request with the comment details to the specified API endpoint.
|
|
@@ -3845,7 +3619,7 @@ class ShortcutApp(APIApplication):
|
|
|
3845
3619
|
response.raise_for_status()
|
|
3846
3620
|
return response.json()
|
|
3847
3621
|
|
|
3848
|
-
def get_story_comment(self, story_public_id, comment_public_id) -> dict[str, Any]:
|
|
3622
|
+
async def get_story_comment(self, story_public_id, comment_public_id) -> dict[str, Any]:
|
|
3849
3623
|
"""
|
|
3850
3624
|
Retrieves a specific comment from a story using the API.
|
|
3851
3625
|
|
|
@@ -3873,9 +3647,7 @@ class ShortcutApp(APIApplication):
|
|
|
3873
3647
|
response.raise_for_status()
|
|
3874
3648
|
return response.json()
|
|
3875
3649
|
|
|
3876
|
-
def update_story_comment(
|
|
3877
|
-
self, story_public_id, comment_public_id, text
|
|
3878
|
-
) -> dict[str, Any]:
|
|
3650
|
+
async def update_story_comment(self, story_public_id, comment_public_id, text) -> dict[str, Any]:
|
|
3879
3651
|
"""
|
|
3880
3652
|
Updates a story comment with new text based on the provided story and comment public IDs.
|
|
3881
3653
|
|
|
@@ -3899,9 +3671,7 @@ class ShortcutApp(APIApplication):
|
|
|
3899
3671
|
raise ValueError("Missing required parameter 'comment-public-id'")
|
|
3900
3672
|
if text is None:
|
|
3901
3673
|
raise ValueError("Missing required parameter 'text'")
|
|
3902
|
-
request_body = {
|
|
3903
|
-
"text": text,
|
|
3904
|
-
}
|
|
3674
|
+
request_body = {"text": text}
|
|
3905
3675
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
3906
3676
|
url = f"{self.base_url}/api/v3/stories/{story_public_id}/comments/{comment_public_id}"
|
|
3907
3677
|
query_params = {}
|
|
@@ -3909,7 +3679,7 @@ class ShortcutApp(APIApplication):
|
|
|
3909
3679
|
response.raise_for_status()
|
|
3910
3680
|
return response.json()
|
|
3911
3681
|
|
|
3912
|
-
def delete_story_comment(self, story_public_id, comment_public_id) -> Any:
|
|
3682
|
+
async def delete_story_comment(self, story_public_id, comment_public_id) -> Any:
|
|
3913
3683
|
"""
|
|
3914
3684
|
Deletes a specific comment from a story using the provided story and comment public IDs.
|
|
3915
3685
|
|
|
@@ -3937,9 +3707,7 @@ class ShortcutApp(APIApplication):
|
|
|
3937
3707
|
response.raise_for_status()
|
|
3938
3708
|
return response.json()
|
|
3939
3709
|
|
|
3940
|
-
def create_story_reaction(
|
|
3941
|
-
self, story_public_id, comment_public_id, emoji
|
|
3942
|
-
) -> list[Any]:
|
|
3710
|
+
async def create_story_reaction(self, story_public_id, comment_public_id, emoji) -> list[Any]:
|
|
3943
3711
|
"""
|
|
3944
3712
|
Creates a reaction with an emoji to a comment on a story.
|
|
3945
3713
|
|
|
@@ -3963,9 +3731,7 @@ class ShortcutApp(APIApplication):
|
|
|
3963
3731
|
raise ValueError("Missing required parameter 'comment-public-id'")
|
|
3964
3732
|
if emoji is None:
|
|
3965
3733
|
raise ValueError("Missing required parameter 'emoji'")
|
|
3966
|
-
request_body = {
|
|
3967
|
-
"emoji": emoji,
|
|
3968
|
-
}
|
|
3734
|
+
request_body = {"emoji": emoji}
|
|
3969
3735
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
3970
3736
|
url = f"{self.base_url}/api/v3/stories/{story_public_id}/comments/{comment_public_id}/reactions"
|
|
3971
3737
|
query_params = {}
|
|
@@ -3973,9 +3739,7 @@ class ShortcutApp(APIApplication):
|
|
|
3973
3739
|
response.raise_for_status()
|
|
3974
3740
|
return response.json()
|
|
3975
3741
|
|
|
3976
|
-
def unlink_comment_thread_from_slack(
|
|
3977
|
-
self, story_public_id, comment_public_id
|
|
3978
|
-
) -> dict[str, Any]:
|
|
3742
|
+
async def unlink_comment_thread_from_slack(self, story_public_id, comment_public_id) -> dict[str, Any]:
|
|
3979
3743
|
"""
|
|
3980
3744
|
Unlinks a comment thread from Slack for a specific story.
|
|
3981
3745
|
|
|
@@ -4003,7 +3767,7 @@ class ShortcutApp(APIApplication):
|
|
|
4003
3767
|
response.raise_for_status()
|
|
4004
3768
|
return response.json()
|
|
4005
3769
|
|
|
4006
|
-
def story_history(self, story_public_id) -> list[Any]:
|
|
3770
|
+
async def story_history(self, story_public_id) -> list[Any]:
|
|
4007
3771
|
"""
|
|
4008
3772
|
Retrieves the full change history for a specified story by its public ID.
|
|
4009
3773
|
|
|
@@ -4028,15 +3792,8 @@ class ShortcutApp(APIApplication):
|
|
|
4028
3792
|
response.raise_for_status()
|
|
4029
3793
|
return response.json()
|
|
4030
3794
|
|
|
4031
|
-
def create_task(
|
|
4032
|
-
self,
|
|
4033
|
-
story_public_id,
|
|
4034
|
-
description,
|
|
4035
|
-
complete=None,
|
|
4036
|
-
owner_ids=None,
|
|
4037
|
-
external_id=None,
|
|
4038
|
-
created_at=None,
|
|
4039
|
-
updated_at=None,
|
|
3795
|
+
async def create_task(
|
|
3796
|
+
self, story_public_id, description, complete=None, owner_ids=None, external_id=None, created_at=None, updated_at=None
|
|
4040
3797
|
) -> dict[str, Any]:
|
|
4041
3798
|
"""
|
|
4042
3799
|
Creates a task within a specified story.
|
|
@@ -4079,7 +3836,7 @@ class ShortcutApp(APIApplication):
|
|
|
4079
3836
|
response.raise_for_status()
|
|
4080
3837
|
return response.json()
|
|
4081
3838
|
|
|
4082
|
-
def get_task(self, story_public_id, task_public_id) -> dict[str, Any]:
|
|
3839
|
+
async def get_task(self, story_public_id, task_public_id) -> dict[str, Any]:
|
|
4083
3840
|
"""
|
|
4084
3841
|
Gets task details for a specific task within a story.
|
|
4085
3842
|
|
|
@@ -4107,15 +3864,8 @@ class ShortcutApp(APIApplication):
|
|
|
4107
3864
|
response.raise_for_status()
|
|
4108
3865
|
return response.json()
|
|
4109
3866
|
|
|
4110
|
-
def update_task(
|
|
4111
|
-
self,
|
|
4112
|
-
story_public_id,
|
|
4113
|
-
task_public_id,
|
|
4114
|
-
description=None,
|
|
4115
|
-
owner_ids=None,
|
|
4116
|
-
complete=None,
|
|
4117
|
-
before_id=None,
|
|
4118
|
-
after_id=None,
|
|
3867
|
+
async def update_task(
|
|
3868
|
+
self, story_public_id, task_public_id, description=None, owner_ids=None, complete=None, before_id=None, after_id=None
|
|
4119
3869
|
) -> dict[str, Any]:
|
|
4120
3870
|
"""
|
|
4121
3871
|
Updates the specified task within a story, modifying fields such as description, owners, completion status, and position.
|
|
@@ -4157,7 +3907,7 @@ class ShortcutApp(APIApplication):
|
|
|
4157
3907
|
response.raise_for_status()
|
|
4158
3908
|
return response.json()
|
|
4159
3909
|
|
|
4160
|
-
def delete_task(self, story_public_id, task_public_id) -> Any:
|
|
3910
|
+
async def delete_task(self, story_public_id, task_public_id) -> Any:
|
|
4161
3911
|
"""
|
|
4162
3912
|
Deletes a task associated with a story based on their respective public IDs.
|
|
4163
3913
|
|
|
@@ -4184,7 +3934,7 @@ class ShortcutApp(APIApplication):
|
|
|
4184
3934
|
response.raise_for_status()
|
|
4185
3935
|
return response.json()
|
|
4186
3936
|
|
|
4187
|
-
def create_story_link(self, verb, subject_id, object_id) -> dict[str, Any]:
|
|
3937
|
+
async def create_story_link(self, verb, subject_id, object_id) -> dict[str, Any]:
|
|
4188
3938
|
"""
|
|
4189
3939
|
Creates a story link between a subject and an object with the specified verb by sending a POST request to the story-links API endpoint.
|
|
4190
3940
|
|
|
@@ -4209,11 +3959,7 @@ class ShortcutApp(APIApplication):
|
|
|
4209
3959
|
raise ValueError("Missing required parameter 'subject_id'")
|
|
4210
3960
|
if object_id is None:
|
|
4211
3961
|
raise ValueError("Missing required parameter 'object_id'")
|
|
4212
|
-
request_body = {
|
|
4213
|
-
"verb": verb,
|
|
4214
|
-
"subject_id": subject_id,
|
|
4215
|
-
"object_id": object_id,
|
|
4216
|
-
}
|
|
3962
|
+
request_body = {"verb": verb, "subject_id": subject_id, "object_id": object_id}
|
|
4217
3963
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
4218
3964
|
url = f"{self.base_url}/api/v3/story-links"
|
|
4219
3965
|
query_params = {}
|
|
@@ -4221,7 +3967,7 @@ class ShortcutApp(APIApplication):
|
|
|
4221
3967
|
response.raise_for_status()
|
|
4222
3968
|
return response.json()
|
|
4223
3969
|
|
|
4224
|
-
def get_story_link(self, story_link_public_id) -> dict[str, Any]:
|
|
3970
|
+
async def get_story_link(self, story_link_public_id) -> dict[str, Any]:
|
|
4225
3971
|
"""
|
|
4226
3972
|
Retrieves a specific story link by its public ID.
|
|
4227
3973
|
|
|
@@ -4246,9 +3992,7 @@ class ShortcutApp(APIApplication):
|
|
|
4246
3992
|
response.raise_for_status()
|
|
4247
3993
|
return response.json()
|
|
4248
3994
|
|
|
4249
|
-
def update_story_link(
|
|
4250
|
-
self, story_link_public_id, verb=None, subject_id=None, object_id=None
|
|
4251
|
-
) -> dict[str, Any]:
|
|
3995
|
+
async def update_story_link(self, story_link_public_id, verb=None, subject_id=None, object_id=None) -> dict[str, Any]:
|
|
4252
3996
|
"""
|
|
4253
3997
|
Updates an existing story link with new attributes.
|
|
4254
3998
|
|
|
@@ -4270,11 +4014,7 @@ class ShortcutApp(APIApplication):
|
|
|
4270
4014
|
"""
|
|
4271
4015
|
if story_link_public_id is None:
|
|
4272
4016
|
raise ValueError("Missing required parameter 'story-link-public-id'")
|
|
4273
|
-
request_body = {
|
|
4274
|
-
"verb": verb,
|
|
4275
|
-
"subject_id": subject_id,
|
|
4276
|
-
"object_id": object_id,
|
|
4277
|
-
}
|
|
4017
|
+
request_body = {"verb": verb, "subject_id": subject_id, "object_id": object_id}
|
|
4278
4018
|
request_body = {k: v for k, v in request_body.items() if v is not None}
|
|
4279
4019
|
url = f"{self.base_url}/api/v3/story-links/{story_link_public_id}"
|
|
4280
4020
|
query_params = {}
|
|
@@ -4282,7 +4022,7 @@ class ShortcutApp(APIApplication):
|
|
|
4282
4022
|
response.raise_for_status()
|
|
4283
4023
|
return response.json()
|
|
4284
4024
|
|
|
4285
|
-
def delete_story_link(self, story_link_public_id) -> Any:
|
|
4025
|
+
async def delete_story_link(self, story_link_public_id) -> Any:
|
|
4286
4026
|
"""
|
|
4287
4027
|
Deletes a story link by its public ID.
|
|
4288
4028
|
|
|
@@ -4307,9 +4047,7 @@ class ShortcutApp(APIApplication):
|
|
|
4307
4047
|
response.raise_for_status()
|
|
4308
4048
|
return response.json()
|
|
4309
4049
|
|
|
4310
|
-
def list_workflows(
|
|
4311
|
-
self,
|
|
4312
|
-
) -> list[Any]:
|
|
4050
|
+
async def list_workflows(self) -> list[Any]:
|
|
4313
4051
|
"""
|
|
4314
4052
|
Retrieves a list of available workflows from the API.
|
|
4315
4053
|
|
|
@@ -4331,7 +4069,7 @@ class ShortcutApp(APIApplication):
|
|
|
4331
4069
|
response.raise_for_status()
|
|
4332
4070
|
return response.json()
|
|
4333
4071
|
|
|
4334
|
-
def get_workflow(self, workflow_public_id) -> dict[str, Any]:
|
|
4072
|
+
async def get_workflow(self, workflow_public_id) -> dict[str, Any]:
|
|
4335
4073
|
"""
|
|
4336
4074
|
Retrieves detailed information about a workflow given its public ID.
|
|
4337
4075
|
|