Skip to content

Commit 2be15bf

Browse files
Apps listing and project settings improvements (#263)
* Add support for the `has_components`, `has_actions` and `has_triggers` existing query params to filter apps listings * Add support for the new `connect_require_key_auth_test` project setting, which verifies that new accounts for key-based apps are tested before creation. --------- Co-authored-by: Jay Vercellone <jay@pipedream.com>
1 parent 4912398 commit 2be15bf

File tree

8 files changed

+141
-7
lines changed

8 files changed

+141
-7
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ response = client.apps.list(
112112
q="q",
113113
sort_key="name",
114114
sort_direction="asc",
115+
has_components=True,
116+
has_actions=True,
117+
has_triggers=True,
115118
)
116119
for item in response:
117120
yield item

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ dynamic = ["version"]
44

55
[tool.poetry]
66
name = "pipedream"
7-
version = "1.1.0"
7+
version = "1.1.1"
88
description = ""
99
readme = "README.md"
1010
authors = []

src/pipedream/apps/client.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ def list(
3838
sort_key: typing.Optional[AppsListRequestSortKey] = None,
3939
sort_direction: typing.Optional[AppsListRequestSortDirection] = None,
4040
category_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
41+
has_components: typing.Optional[bool] = None,
42+
has_actions: typing.Optional[bool] = None,
43+
has_triggers: typing.Optional[bool] = None,
4144
request_options: typing.Optional[RequestOptions] = None,
4245
) -> SyncPager[App, ListAppsResponse]:
4346
"""
@@ -66,6 +69,15 @@ def list(
6669
category_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
6770
Only return apps in these categories
6871
72+
has_components : typing.Optional[bool]
73+
Filter to apps that have components (actions or triggers)
74+
75+
has_actions : typing.Optional[bool]
76+
Filter to apps that have actions
77+
78+
has_triggers : typing.Optional[bool]
79+
Filter to apps that have triggers
80+
6981
request_options : typing.Optional[RequestOptions]
7082
Request-specific configuration.
7183
@@ -91,6 +103,9 @@ def list(
91103
q="q",
92104
sort_key="name",
93105
sort_direction="asc",
106+
has_components=True,
107+
has_actions=True,
108+
has_triggers=True,
94109
)
95110
for item in response:
96111
yield item
@@ -106,6 +121,9 @@ def list(
106121
sort_key=sort_key,
107122
sort_direction=sort_direction,
108123
category_ids=category_ids,
124+
has_components=has_components,
125+
has_actions=has_actions,
126+
has_triggers=has_triggers,
109127
request_options=request_options,
110128
)
111129

@@ -169,6 +187,9 @@ async def list(
169187
sort_key: typing.Optional[AppsListRequestSortKey] = None,
170188
sort_direction: typing.Optional[AppsListRequestSortDirection] = None,
171189
category_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
190+
has_components: typing.Optional[bool] = None,
191+
has_actions: typing.Optional[bool] = None,
192+
has_triggers: typing.Optional[bool] = None,
172193
request_options: typing.Optional[RequestOptions] = None,
173194
) -> AsyncPager[App, ListAppsResponse]:
174195
"""
@@ -197,6 +218,15 @@ async def list(
197218
category_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
198219
Only return apps in these categories
199220
221+
has_components : typing.Optional[bool]
222+
Filter to apps that have components (actions or triggers)
223+
224+
has_actions : typing.Optional[bool]
225+
Filter to apps that have actions
226+
227+
has_triggers : typing.Optional[bool]
228+
Filter to apps that have triggers
229+
200230
request_options : typing.Optional[RequestOptions]
201231
Request-specific configuration.
202232
@@ -227,6 +257,9 @@ async def main() -> None:
227257
q="q",
228258
sort_key="name",
229259
sort_direction="asc",
260+
has_components=True,
261+
has_actions=True,
262+
has_triggers=True,
230263
)
231264
async for item in response:
232265
yield item
@@ -246,6 +279,9 @@ async def main() -> None:
246279
sort_key=sort_key,
247280
sort_direction=sort_direction,
248281
category_ids=category_ids,
282+
has_components=has_components,
283+
has_actions=has_actions,
284+
has_triggers=has_triggers,
249285
request_options=request_options,
250286
)
251287

src/pipedream/apps/raw_client.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ def list(
3131
sort_key: typing.Optional[AppsListRequestSortKey] = None,
3232
sort_direction: typing.Optional[AppsListRequestSortDirection] = None,
3333
category_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
34+
has_components: typing.Optional[bool] = None,
35+
has_actions: typing.Optional[bool] = None,
36+
has_triggers: typing.Optional[bool] = None,
3437
request_options: typing.Optional[RequestOptions] = None,
3538
) -> SyncPager[App, ListAppsResponse]:
3639
"""
@@ -59,6 +62,15 @@ def list(
5962
category_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
6063
Only return apps in these categories
6164
65+
has_components : typing.Optional[bool]
66+
Filter to apps that have components (actions or triggers)
67+
68+
has_actions : typing.Optional[bool]
69+
Filter to apps that have actions
70+
71+
has_triggers : typing.Optional[bool]
72+
Filter to apps that have triggers
73+
6274
request_options : typing.Optional[RequestOptions]
6375
Request-specific configuration.
6476
@@ -78,6 +90,9 @@ def list(
7890
"sort_key": sort_key,
7991
"sort_direction": sort_direction,
8092
"category_ids": category_ids,
93+
"has_components": has_components,
94+
"has_actions": has_actions,
95+
"has_triggers": has_triggers,
8196
},
8297
request_options=request_options,
8398
)
@@ -104,6 +119,9 @@ def list(
104119
sort_key=sort_key,
105120
sort_direction=sort_direction,
106121
category_ids=category_ids,
122+
has_components=has_components,
123+
has_actions=has_actions,
124+
has_triggers=has_triggers,
107125
request_options=request_options,
108126
)
109127
return SyncPager(has_next=_has_next, items=_items, get_next=_get_next, response=_parsed_response)
@@ -166,6 +184,9 @@ async def list(
166184
sort_key: typing.Optional[AppsListRequestSortKey] = None,
167185
sort_direction: typing.Optional[AppsListRequestSortDirection] = None,
168186
category_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
187+
has_components: typing.Optional[bool] = None,
188+
has_actions: typing.Optional[bool] = None,
189+
has_triggers: typing.Optional[bool] = None,
169190
request_options: typing.Optional[RequestOptions] = None,
170191
) -> AsyncPager[App, ListAppsResponse]:
171192
"""
@@ -194,6 +215,15 @@ async def list(
194215
category_ids : typing.Optional[typing.Union[str, typing.Sequence[str]]]
195216
Only return apps in these categories
196217
218+
has_components : typing.Optional[bool]
219+
Filter to apps that have components (actions or triggers)
220+
221+
has_actions : typing.Optional[bool]
222+
Filter to apps that have actions
223+
224+
has_triggers : typing.Optional[bool]
225+
Filter to apps that have triggers
226+
197227
request_options : typing.Optional[RequestOptions]
198228
Request-specific configuration.
199229
@@ -213,6 +243,9 @@ async def list(
213243
"sort_key": sort_key,
214244
"sort_direction": sort_direction,
215245
"category_ids": category_ids,
246+
"has_components": has_components,
247+
"has_actions": has_actions,
248+
"has_triggers": has_triggers,
216249
},
217250
request_options=request_options,
218251
)
@@ -241,6 +274,9 @@ async def _get_next():
241274
sort_key=sort_key,
242275
sort_direction=sort_direction,
243276
category_ids=category_ids,
277+
has_components=has_components,
278+
has_actions=has_actions,
279+
has_triggers=has_triggers,
244280
request_options=request_options,
245281
)
246282

src/pipedream/core/client_wrapper.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ def __init__(
2727

2828
def get_headers(self) -> typing.Dict[str, str]:
2929
headers: typing.Dict[str, str] = {
30-
"User-Agent": "pipedream/1.1.0",
30+
"User-Agent": "pipedream/1.1.1",
3131
"X-Fern-Language": "Python",
3232
"X-Fern-SDK-Name": "pipedream",
33-
"X-Fern-SDK-Version": "1.1.0",
33+
"X-Fern-SDK-Version": "1.1.1",
3434
**(self.get_custom_headers() or {}),
3535
}
3636
if self._project_environment is not None:

src/pipedream/projects/client.py

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ def create(
9393
name: str,
9494
app_name: typing.Optional[str] = OMIT,
9595
support_email: typing.Optional[str] = OMIT,
96+
connect_require_key_auth_test: typing.Optional[bool] = OMIT,
9697
request_options: typing.Optional[RequestOptions] = None,
9798
) -> Project:
9899
"""
@@ -109,6 +110,9 @@ def create(
109110
support_email : typing.Optional[str]
110111
Support email displayed to end users
111112
113+
connect_require_key_auth_test : typing.Optional[bool]
114+
Send a test request to the upstream API when adding Connect accounts for key-based apps
115+
112116
request_options : typing.Optional[RequestOptions]
113117
Request-specific configuration.
114118
@@ -132,7 +136,11 @@ def create(
132136
)
133137
"""
134138
_response = self._raw_client.create(
135-
name=name, app_name=app_name, support_email=support_email, request_options=request_options
139+
name=name,
140+
app_name=app_name,
141+
support_email=support_email,
142+
connect_require_key_auth_test=connect_require_key_auth_test,
143+
request_options=request_options,
136144
)
137145
return _response.data
138146

@@ -210,6 +218,7 @@ def update(
210218
name: typing.Optional[str] = OMIT,
211219
app_name: typing.Optional[str] = OMIT,
212220
support_email: typing.Optional[str] = OMIT,
221+
connect_require_key_auth_test: typing.Optional[bool] = OMIT,
213222
request_options: typing.Optional[RequestOptions] = None,
214223
) -> Project:
215224
"""
@@ -229,6 +238,9 @@ def update(
229238
support_email : typing.Optional[str]
230239
Support email displayed to end users
231240
241+
connect_require_key_auth_test : typing.Optional[bool]
242+
Send a test request to the upstream API when adding Connect accounts for key-based apps
243+
232244
request_options : typing.Optional[RequestOptions]
233245
Request-specific configuration.
234246
@@ -252,7 +264,12 @@ def update(
252264
)
253265
"""
254266
_response = self._raw_client.update(
255-
project_id, name=name, app_name=app_name, support_email=support_email, request_options=request_options
267+
project_id,
268+
name=name,
269+
app_name=app_name,
270+
support_email=support_email,
271+
connect_require_key_auth_test=connect_require_key_auth_test,
272+
request_options=request_options,
256273
)
257274
return _response.data
258275

@@ -415,6 +432,7 @@ async def create(
415432
name: str,
416433
app_name: typing.Optional[str] = OMIT,
417434
support_email: typing.Optional[str] = OMIT,
435+
connect_require_key_auth_test: typing.Optional[bool] = OMIT,
418436
request_options: typing.Optional[RequestOptions] = None,
419437
) -> Project:
420438
"""
@@ -431,6 +449,9 @@ async def create(
431449
support_email : typing.Optional[str]
432450
Support email displayed to end users
433451
452+
connect_require_key_auth_test : typing.Optional[bool]
453+
Send a test request to the upstream API when adding Connect accounts for key-based apps
454+
434455
request_options : typing.Optional[RequestOptions]
435456
Request-specific configuration.
436457
@@ -462,7 +483,11 @@ async def main() -> None:
462483
asyncio.run(main())
463484
"""
464485
_response = await self._raw_client.create(
465-
name=name, app_name=app_name, support_email=support_email, request_options=request_options
486+
name=name,
487+
app_name=app_name,
488+
support_email=support_email,
489+
connect_require_key_auth_test=connect_require_key_auth_test,
490+
request_options=request_options,
466491
)
467492
return _response.data
468493

@@ -556,6 +581,7 @@ async def update(
556581
name: typing.Optional[str] = OMIT,
557582
app_name: typing.Optional[str] = OMIT,
558583
support_email: typing.Optional[str] = OMIT,
584+
connect_require_key_auth_test: typing.Optional[bool] = OMIT,
559585
request_options: typing.Optional[RequestOptions] = None,
560586
) -> Project:
561587
"""
@@ -575,6 +601,9 @@ async def update(
575601
support_email : typing.Optional[str]
576602
Support email displayed to end users
577603
604+
connect_require_key_auth_test : typing.Optional[bool]
605+
Send a test request to the upstream API when adding Connect accounts for key-based apps
606+
578607
request_options : typing.Optional[RequestOptions]
579608
Request-specific configuration.
580609
@@ -606,7 +635,12 @@ async def main() -> None:
606635
asyncio.run(main())
607636
"""
608637
_response = await self._raw_client.update(
609-
project_id, name=name, app_name=app_name, support_email=support_email, request_options=request_options
638+
project_id,
639+
name=name,
640+
app_name=app_name,
641+
support_email=support_email,
642+
connect_require_key_auth_test=connect_require_key_auth_test,
643+
request_options=request_options,
610644
)
611645
return _response.data
612646

0 commit comments

Comments
 (0)