diff --git a/.fern/metadata.json b/.fern/metadata.json
index 1b82d35..67a822d 100644
--- a/.fern/metadata.json
+++ b/.fern/metadata.json
@@ -1,7 +1,7 @@
{
- "cliVersion": "5.37.12",
+ "cliVersion": "5.17.0",
"generatorName": "fernapi/fern-python-sdk",
- "generatorVersion": "5.12.11",
+ "generatorVersion": "5.12.1",
"generatorConfig": {
"client": {
"class_name": "Client",
@@ -10,8 +10,9 @@
"exported_filename": "pipedream.py"
}
},
- "originGitCommit": "320eac6d2809f95097ec1bb8cdb630cf13316b22",
- "originGitCommitIsDirty": true,
- "invokedBy": "manual",
+ "originGitCommit": "0154aca6f568afe2b2c183a43a8454aa86412754",
+ "originGitCommitIsDirty": false,
+ "invokedBy": "ci",
+ "ciProvider": "github",
"sdkVersion": "2.0.5"
}
\ No newline at end of file
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 7fd6ffd..9ab0a27 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -50,8 +50,6 @@ jobs:
needs: [compile, test]
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
- permissions:
- id-token: write
steps:
- name: Checkout repo
uses: actions/checkout@v4
@@ -64,7 +62,10 @@ jobs:
curl -sSL https://install.python-poetry.org | python - -y --version 1.5.1
- name: Install dependencies
run: poetry install
- - name: Build package
- run: poetry --no-interaction -v build
- - name: Publish package
- uses: pypa/gh-action-pypi-publish@release/v1
+ - name: Publish to pypi
+ run: |
+ poetry config repositories.remote https://upload.pypi.org/legacy/
+ poetry --no-interaction -v publish --build --repository remote --username "$PYPI_USERNAME" --password "$PYPI_PASSWORD"
+ env:
+ PYPI_USERNAME: ${{ secrets.PYPI_USERNAME }}
+ PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
diff --git a/poetry.lock b/poetry.lock
index 4d94723..e069f9e 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,4 +1,4 @@
-# This file is automatically @generated by Poetry 2.4.1 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand.
[[package]]
name = "aiohappyeyeballs"
@@ -6,8 +6,6 @@ version = "2.6.2"
description = "Happy Eyeballs for asyncio"
optional = true
python-versions = ">=3.10"
-groups = ["main"]
-markers = "extra == \"aiohttp\""
files = [
{file = "aiohappyeyeballs-2.6.2-py3-none-any.whl", hash = "sha256:4708045e2d7a6c6bdf8aafa8ed39649eaf926a4543b54560659129e3365953c4"},
{file = "aiohappyeyeballs-2.6.2.tar.gz", hash = "sha256:e202810ee718bd01fc6ef49e8ea53d023d5cb6b581076d7925aa499fa55dbe64"},
@@ -15,133 +13,130 @@ files = [
[[package]]
name = "aiohttp"
-version = "3.13.5"
+version = "3.14.0"
description = "Async http client/server framework (asyncio)"
optional = true
-python-versions = ">=3.9"
-groups = ["main"]
-markers = "extra == \"aiohttp\""
+python-versions = ">=3.10"
files = [
- {file = "aiohttp-3.13.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:02222e7e233295f40e011c1b00e3b0bd451f22cf853a0304c3595633ee47da4b"},
- {file = "aiohttp-3.13.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bace460460ed20614fa6bc8cb09966c0b8517b8c58ad8046828c6078d25333b5"},
- {file = "aiohttp-3.13.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f546a4dc1e6a5edbb9fd1fd6ad18134550e096a5a43f4ad74acfbd834fc6670"},
- {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c86969d012e51b8e415a8c6ce96f7857d6a87d6207303ab02d5d11ef0cad2274"},
- {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b6f6cd1560c5fa427e3b6074bb24d2c64e225afbb7165008903bd42e4e33e28a"},
- {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:636bc362f0c5bbc7372bc3ae49737f9e3030dbce469f0f422c8f38079780363d"},
- {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:6a7cbeb06d1070f1d14895eeeed4dac5913b22d7b456f2eb969f11f4b3993796"},
- {file = "aiohttp-3.13.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bca9ef7517fd7874a1a08970ae88f497bf5c984610caa0bf40bd7e8450852b95"},
- {file = "aiohttp-3.13.5-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:019a67772e034a0e6b9b17c13d0a8fe56ad9fb150fc724b7f3ffd3724288d9e5"},
- {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f34ecee82858e41dd217734f0c41a532bd066bcaab636ad830f03a30b2a96f2a"},
- {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:4eac02d9af4813ee289cd63a361576da36dba57f5a1ab36377bc2600db0cbb73"},
- {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4beac52e9fe46d6abf98b0176a88154b742e878fdf209d2248e99fcdf73cd297"},
- {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:c180f480207a9b2475f2b8d8bd7204e47aec952d084b2a2be58a782ffcf96074"},
- {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2837fb92951564d6339cedae4a7231692aa9f73cbc4fb2e04263b96844e03b4e"},
- {file = "aiohttp-3.13.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d9010032a0b9710f58012a1e9c222528763d860ba2ee1422c03473eab47703e7"},
- {file = "aiohttp-3.13.5-cp310-cp310-win32.whl", hash = "sha256:7c4b6668b2b2b9027f209ddf647f2a4407784b5d88b8be4efcc72036f365baf9"},
- {file = "aiohttp-3.13.5-cp310-cp310-win_amd64.whl", hash = "sha256:cd3db5927bf9167d5a6157ddb2f036f6b6b0ad001ac82355d43e97a4bde76d76"},
- {file = "aiohttp-3.13.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7ab7229b6f9b5c1ba4910d6c41a9eb11f543eadb3f384df1b4c293f4e73d44d6"},
- {file = "aiohttp-3.13.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8f14c50708bb156b3a3ca7230b3d820199d56a48e3af76fa21c2d6087190fe3d"},
- {file = "aiohttp-3.13.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e7d2f8616f0ff60bd332022279011776c3ac0faa0f1b463f7bb12326fbc97a1c"},
- {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a2567b72e1ffc3ab25510db43f355b29eeada56c0a622e58dcdb19530eb0a3cb"},
- {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:fb0540c854ac9c0c5ad495908fdfd3e332d553ec731698c0e29b1877ba0d2ec6"},
- {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c9883051c6972f58bfc4ebb2116345ee2aa151178e99c3f2b2bbe2af712abd13"},
- {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2294172ce08a82fb7c7273485895de1fa1186cc8294cfeb6aef4af42ad261174"},
- {file = "aiohttp-3.13.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3a807cabd5115fb55af198b98178997a5e0e57dead43eb74a93d9c07d6d4a7dc"},
- {file = "aiohttp-3.13.5-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:aa6d0d932e0f39c02b80744273cd5c388a2d9bc07760a03164f229c8e02662f6"},
- {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:60869c7ac4aaabe7110f26499f3e6e5696eae98144735b12a9c3d9eae2b51a49"},
- {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:26d2f8546f1dfa75efa50c3488215a903c0168d253b75fba4210f57ab77a0fb8"},
- {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1162a1492032c82f14271e831c8f4b49f2b6078f4f5fc74de2c912fa225d51d"},
- {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:8b14eb3262fad0dc2f89c1a43b13727e709504972186ff6a99a3ecaa77102b6c"},
- {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ca9ac61ac6db4eb6c2a0cd1d0f7e1357647b638ccc92f7e9d8d133e71ed3c6ac"},
- {file = "aiohttp-3.13.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7996023b2ed59489ae4762256c8516df9820f751cf2c5da8ed2fb20ee50abab3"},
- {file = "aiohttp-3.13.5-cp311-cp311-win32.whl", hash = "sha256:77dfa48c9f8013271011e51c00f8ada19851f013cde2c48fca1ba5e0caf5bb06"},
- {file = "aiohttp-3.13.5-cp311-cp311-win_amd64.whl", hash = "sha256:d3a4834f221061624b8887090637db9ad4f61752001eae37d56c52fddade2dc8"},
- {file = "aiohttp-3.13.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:023ecba036ddd840b0b19bf195bfae970083fd7024ce1ac22e9bba90464620e9"},
- {file = "aiohttp-3.13.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:15c933ad7920b7d9a20de151efcd05a6e38302cbf0e10c9b2acb9a42210a2416"},
- {file = "aiohttp-3.13.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ab2899f9fa2f9f741896ebb6fa07c4c883bfa5c7f2ddd8cf2aafa86fa981b2d2"},
- {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a60eaa2d440cd4707696b52e40ed3e2b0f73f65be07fd0ef23b6b539c9c0b0b4"},
- {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:55b3bdd3292283295774ab585160c4004f4f2f203946997f49aac032c84649e9"},
- {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c2b2355dc094e5f7d45a7bb262fe7207aa0460b37a0d87027dcf21b5d890e7d5"},
- {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b38765950832f7d728297689ad78f5f2cf79ff82487131c4d26fe6ceecdc5f8e"},
- {file = "aiohttp-3.13.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b18f31b80d5a33661e08c89e202edabf1986e9b49c42b4504371daeaa11b47c1"},
- {file = "aiohttp-3.13.5-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:33add2463dde55c4f2d9635c6ab33ce154e5ecf322bd26d09af95c5f81cfa286"},
- {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:327cc432fdf1356fb4fbc6fe833ad4e9f6aacb71a8acaa5f1855e4b25910e4a9"},
- {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:7c35b0bf0b48a70b4cb4fc5d7bed9b932532728e124874355de1a0af8ec4bc88"},
- {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:df23d57718f24badef8656c49743e11a89fd6f5358fa8a7b96e728fda2abf7d3"},
- {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:02e048037a6501a5ec1f6fc9736135aec6eb8a004ce48838cb951c515f32c80b"},
- {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:31cebae8b26f8a615d2b546fee45d5ffb76852ae6450e2a03f42c9102260d6fe"},
- {file = "aiohttp-3.13.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:888e78eb5ca55a615d285c3c09a7a91b42e9dd6fc699b166ebd5dee87c9ccf14"},
- {file = "aiohttp-3.13.5-cp312-cp312-win32.whl", hash = "sha256:8bd3ec6376e68a41f9f95f5ed170e2fcf22d4eb27a1f8cb361d0508f6e0557f3"},
- {file = "aiohttp-3.13.5-cp312-cp312-win_amd64.whl", hash = "sha256:110e448e02c729bcebb18c60b9214a87ba33bac4a9fa5e9a5f139938b56c6cb1"},
- {file = "aiohttp-3.13.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a5029cc80718bbd545123cd8fe5d15025eccaaaace5d0eeec6bd556ad6163d61"},
- {file = "aiohttp-3.13.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4bb6bf5811620003614076bdc807ef3b5e38244f9d25ca5fe888eaccea2a9832"},
- {file = "aiohttp-3.13.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a84792f8631bf5a94e52d9cc881c0b824ab42717165a5579c760b830d9392ac9"},
- {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:57653eac22c6a4c13eb22ecf4d673d64a12f266e72785ab1c8b8e5940d0e8090"},
- {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5e5f7debc7a57af53fdf5c5009f9391d9f4c12867049d509bf7bb164a6e295b"},
- {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c719f65bebcdf6716f10e9eff80d27567f7892d8988c06de12bbbd39307c6e3a"},
- {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d97f93fdae594d886c5a866636397e2bcab146fd7a132fd6bb9ce182224452f8"},
- {file = "aiohttp-3.13.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3df334e39d4c2f899a914f1dba283c1aadc311790733f705182998c6f7cae665"},
- {file = "aiohttp-3.13.5-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fe6970addfea9e5e081401bcbadf865d2b6da045472f58af08427e108d618540"},
- {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7becdf835feff2f4f335d7477f121af787e3504b48b449ff737afb35869ba7bb"},
- {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:676e5651705ad5d8a70aeb8eb6936c436d8ebbd56e63436cb7dd9bb36d2a9a46"},
- {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:9b16c653d38eb1a611cc898c41e76859ca27f119d25b53c12875fd0474ae31a8"},
- {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:999802d5fa0389f58decd24b537c54aa63c01c3219ce17d1214cbda3c2b22d2d"},
- {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:ec707059ee75732b1ba130ed5f9580fe10ff75180c812bc267ded039db5128c6"},
- {file = "aiohttp-3.13.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2d6d44a5b48132053c2f6cd5c8cb14bc67e99a63594e336b0f2af81e94d5530c"},
- {file = "aiohttp-3.13.5-cp313-cp313-win32.whl", hash = "sha256:329f292ed14d38a6c4c435e465f48bebb47479fd676a0411936cc371643225cc"},
- {file = "aiohttp-3.13.5-cp313-cp313-win_amd64.whl", hash = "sha256:69f571de7500e0557801c0b51f4780482c0ec5fe2ac851af5a92cfce1af1cb83"},
- {file = "aiohttp-3.13.5-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:eb4639f32fd4a9904ab8fb45bf3383ba71137f3d9d4ba25b3b3f3109977c5b8c"},
- {file = "aiohttp-3.13.5-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:7e5dc4311bd5ac493886c63cbf76ab579dbe4641268e7c74e48e774c74b6f2be"},
- {file = "aiohttp-3.13.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:756c3c304d394977519824449600adaf2be0ccee76d206ee339c5e76b70ded25"},
- {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ecc26751323224cf8186efcf7fbcbc30f4e1d8c7970659daf25ad995e4032a56"},
- {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:10a75acfcf794edf9d8db50e5a7ec5fc818b2a8d3f591ce93bc7b1210df016d2"},
- {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:0f7a18f258d124cd678c5fe072fe4432a4d5232b0657fca7c1847f599233c83a"},
- {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:df6104c009713d3a89621096f3e3e88cc323fd269dbd7c20afe18535094320be"},
- {file = "aiohttp-3.13.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:241a94f7de7c0c3b616627aaad530fe2cb620084a8b144d3be7b6ecfe95bae3b"},
- {file = "aiohttp-3.13.5-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c974fb66180e58709b6fc402846f13791240d180b74de81d23913abe48e96d94"},
- {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:6e27ea05d184afac78aabbac667450c75e54e35f62238d44463131bd3f96753d"},
- {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a79a6d399cef33a11b6f004c67bb07741d91f2be01b8d712d52c75711b1e07c7"},
- {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:c632ce9c0b534fbe25b52c974515ed674937c5b99f549a92127c85f771a78772"},
- {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:fceedde51fbd67ee2bcc8c0b33d0126cc8b51ef3bbde2f86662bd6d5a6f10ec5"},
- {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:f92995dfec9420bb69ae629abf422e516923ba79ba4403bc750d94fb4a6c68c1"},
- {file = "aiohttp-3.13.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20ae0ff08b1f2c8788d6fb85afcb798654ae6ba0b747575f8562de738078457b"},
- {file = "aiohttp-3.13.5-cp314-cp314-win32.whl", hash = "sha256:b20df693de16f42b2472a9c485e1c948ee55524786a0a34345511afdd22246f3"},
- {file = "aiohttp-3.13.5-cp314-cp314-win_amd64.whl", hash = "sha256:f85c6f327bf0b8c29da7d93b1cabb6363fb5e4e160a32fa241ed2dce21b73162"},
- {file = "aiohttp-3.13.5-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:1efb06900858bb618ff5cee184ae2de5828896c448403d51fb633f09e109be0a"},
- {file = "aiohttp-3.13.5-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:fee86b7c4bd29bdaf0d53d14739b08a106fdda809ca5fe032a15f52fae5fe254"},
- {file = "aiohttp-3.13.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:20058e23909b9e65f9da62b396b77dfa95965cbe840f8def6e572538b1d32e36"},
- {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8cf20a8d6868cb15a73cab329ffc07291ba8c22b1b88176026106ae39aa6df0f"},
- {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:330f5da04c987f1d5bdb8ae189137c77139f36bd1cb23779ca1a354a4b027800"},
- {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6f1cbf0c7926d315c3c26c2da41fd2b5d2fe01ac0e157b78caefc51a782196cf"},
- {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:53fc049ed6390d05423ba33103ded7281fe897cf97878f369a527070bd95795b"},
- {file = "aiohttp-3.13.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:898703aa2667e3c5ca4c54ca36cd73f58b7a38ef87a5606414799ebce4d3fd3a"},
- {file = "aiohttp-3.13.5-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0494a01ca9584eea1e5fbd6d748e61ecff218c51b576ee1999c23db7066417d8"},
- {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:6cf81fe010b8c17b09495cbd15c1d35afbc8fb405c0c9cf4738e5ae3af1d65be"},
- {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:c564dd5f09ddc9d8f2c2d0a301cd30a79a2cc1b46dd1a73bef8f0038863d016b"},
- {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:2994be9f6e51046c4f864598fd9abeb4fba6e88f0b2152422c9666dcd4aea9c6"},
- {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:157826e2fa245d2ef46c83ea8a5faf77ca19355d278d425c29fda0beb3318037"},
- {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:a8aca50daa9493e9e13c0f566201a9006f080e7c50e5e90d0b06f53146a54500"},
- {file = "aiohttp-3.13.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3b13560160d07e047a93f23aaa30718606493036253d5430887514715b67c9d9"},
- {file = "aiohttp-3.13.5-cp314-cp314t-win32.whl", hash = "sha256:9a0f4474b6ea6818b41f82172d799e4b3d29e22c2c520ce4357856fced9af2f8"},
- {file = "aiohttp-3.13.5-cp314-cp314t-win_amd64.whl", hash = "sha256:18a2f6c1182c51baa1d28d68fea51513cb2a76612f038853c0ad3c145423d3d9"},
- {file = "aiohttp-3.13.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:347542f0ea3f95b2a955ee6656461fa1c776e401ac50ebce055a6c38454a0adf"},
- {file = "aiohttp-3.13.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:178c7b5e62b454c2bc790786e6058c3cc968613b4419251b478c153a4aec32b1"},
- {file = "aiohttp-3.13.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af545c2cffdb0967a96b6249e6f5f7b0d92cdfd267f9d5238d5b9ca63e8edb10"},
- {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:206b7b3ef96e4ce211754f0cd003feb28b7d81f0ad26b8d077a5d5161436067f"},
- {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ee5e86776273de1795947d17bddd6bb19e0365fd2af4289c0d2c5454b6b1d36b"},
- {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:95d14ca7abefde230f7639ec136ade282655431fd5db03c343b19dda72dd1643"},
- {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:912d4b6af530ddb1338a66229dac3a25ff11d4448be3ec3d6340583995f56031"},
- {file = "aiohttp-3.13.5-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e999f0c88a458c836d5fb521814e92ed2172c649200336a6df514987c1488258"},
- {file = "aiohttp-3.13.5-cp39-cp39-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:39380e12bd1f2fdab4285b6e055ad48efbaed5c836433b142ed4f5b9be71036a"},
- {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:9efcc0f11d850cefcafdd9275b9576ad3bfb539bed96807663b32ad99c4d4b88"},
- {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:147b4f501d0292077f29d5268c16bb7c864a1f054d7001c4c1812c0421ea1ed0"},
- {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:d147004fede1b12f6013a6dbb2a26a986a671a03c6ea740ddc76500e5f1c399f"},
- {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_riscv64.whl", hash = "sha256:9277145d36a01653863899c665243871434694bcc3431922c3b35c978061bdb8"},
- {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4e704c52438f66fdd89588346183d898bb42167cf88f8b7ff1c0f9fc957c348f"},
- {file = "aiohttp-3.13.5-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a8a4d3427e8de1312ddf309cc482186466c79895b3a139fed3259fc01dfa9a5b"},
- {file = "aiohttp-3.13.5-cp39-cp39-win32.whl", hash = "sha256:6f497a6876aa4b1a102b04996ce4c1170c7040d83faa9387dd921c16e30d5c83"},
- {file = "aiohttp-3.13.5-cp39-cp39-win_amd64.whl", hash = "sha256:cb979826071c0986a5f08333a36104153478ce6018c58cba7f9caddaf63d5d67"},
- {file = "aiohttp-3.13.5.tar.gz", hash = "sha256:9d98cc980ecc96be6eb4c1994ce35d28d8b1f5e5208a23b421187d1209dbb7d1"},
+ {file = "aiohttp-3.14.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:692e409052e7436029bbb32977cd7c5bf806ac5fa4085b973996785ffadad33c"},
+ {file = "aiohttp-3.14.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:40af7ebe53c7990e110dc4ad03566b12c3ac996254298a3d39046dd69cfcb2c2"},
+ {file = "aiohttp-3.14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02cb2ffbb7da32f82e21ad9952669c45bd88a80e0878264c2f59fe1c6fb2badd"},
+ {file = "aiohttp-3.14.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2e2514cb7195f6d7c219339635bea71ae47d1569b051300d32df9dcfabcdb869"},
+ {file = "aiohttp-3.14.0-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:30e8b7eeb42d02c120ca90d6c6e076a221a16b70a6dac9ae44c7ab5104cc7fe4"},
+ {file = "aiohttp-3.14.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:63e38be0d75a654deaa06be32fb4cab883a4222940be1d05861b6717679cbadb"},
+ {file = "aiohttp-3.14.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1210d4c87cc00128160c7384ab41877a701295b97cffa6362f908a49b6e8a7ca"},
+ {file = "aiohttp-3.14.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a78a77366ed158a0a54b076990e575d7b7cdb728cbfd02711eadab150f2269f"},
+ {file = "aiohttp-3.14.0-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f4d2038c64f36df96cfd3fa0937910e231eafbf897e70a06c155a817bb632fa6"},
+ {file = "aiohttp-3.14.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4714c70067a08b604d0bf3bc4dfdf82e52944afab41d0428d460862763d2f79b"},
+ {file = "aiohttp-3.14.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:f79bfd2847513a7ac801bbafd1de02348a37926ac439eeb4bfe96fcff4eada15"},
+ {file = "aiohttp-3.14.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:25e9f1d2465a210d60edb64d7b204a147e85d4c194eecef3d1604fb5ace678ce"},
+ {file = "aiohttp-3.14.0-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:b5314743ebe926c2fda35d0a298c565c885505f6635c2a30936363404cf274a7"},
+ {file = "aiohttp-3.14.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:28eee8de1d69711c53116df8202f1c2aa0e3f80ef912a88fc18d159d53e7110b"},
+ {file = "aiohttp-3.14.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:89ed35666c95d3efe1955056afcde09e62a57a34e2a4398b17f9f6c1564f0b25"},
+ {file = "aiohttp-3.14.0-cp310-cp310-win32.whl", hash = "sha256:5e4646e9a6af29af354204011bf5769cb0276ec5b64653e42f90b3e13845169f"},
+ {file = "aiohttp-3.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:22a8d06f204e0518a586d770032db3c7043c9ba3693081b3e3ad425e1458d594"},
+ {file = "aiohttp-3.14.0-cp310-cp310-win_arm64.whl", hash = "sha256:4acfc34bd4d3c58754fc9f22ff1b5e92aabce68f3d4bf7b71a0b732d9bceb78a"},
+ {file = "aiohttp-3.14.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:54bf3522d6f7351e55f89a62d5c2bf138ad557b031670266c5df604ae88e0b5a"},
+ {file = "aiohttp-3.14.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0746d9fb0ac4fdef643a84494efe3f06d50335dd8c7a530228b86448aae0a803"},
+ {file = "aiohttp-3.14.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9f3a96b6d39a4872222beee72e1df41d2ff886ae96152cf3e757ef8c5673ef0e"},
+ {file = "aiohttp-3.14.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d336820adbb914debbc90a1d8c1bfc4bea55996aecf64866a989d35d1f9fd903"},
+ {file = "aiohttp-3.14.0-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:71b2604c9bfc1b115547d63a094d5244b3f02799833513a99a68aaa7b167c4cb"},
+ {file = "aiohttp-3.14.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:610d68800435903e303ca0542b9d3e4eb72a12ff33a6d471a070c1d81eebd3c2"},
+ {file = "aiohttp-3.14.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:514db9a79337068981ee2137310283a07b4b885c584991097a91a4da419bcb81"},
+ {file = "aiohttp-3.14.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c452d17eeb95d563fc8b936f3050301dbd1d268126c4632d8b70ede9696202ee"},
+ {file = "aiohttp-3.14.0-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ed94a81506e3d1bdbad5108f497a58f2a2354aedb4ca314d5326f07d1fd1ac2d"},
+ {file = "aiohttp-3.14.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1394dce36e0f0d260ac0b555a654de19cb989f3c1b8bdd24f505314dfea18a00"},
+ {file = "aiohttp-3.14.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:d1467d1e7b48a73ca7237e0ee4335f3d02b923dbc27b82fd254bc301c97d4026"},
+ {file = "aiohttp-3.14.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6a5f3532125233c261cf61f32df4059cfcf482eb793c7d3db8452e3142028b86"},
+ {file = "aiohttp-3.14.0-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:3ea81eb518a2ecb319d8ec6d1424a37c773f6634bd87d6985eb606b2faac419f"},
+ {file = "aiohttp-3.14.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:32e735c3182de7b64f6941a4ede48b38c7f47d9437bd615dd30b5bda8fa1bc93"},
+ {file = "aiohttp-3.14.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c21ca9a1c63d4509158f478aeb9d02914dcc52adc68d1bc9dee2452284ee5996"},
+ {file = "aiohttp-3.14.0-cp311-cp311-win32.whl", hash = "sha256:19ca5fc84130675ba11c6ca5c7da5cb65f7bf8a32cdd2b616bf49cd334688aae"},
+ {file = "aiohttp-3.14.0-cp311-cp311-win_amd64.whl", hash = "sha256:d488e6e9d3bb8ba5ae7066d5be885ae9670eba021b8c6ccb9a3a568e6b19d6e5"},
+ {file = "aiohttp-3.14.0-cp311-cp311-win_arm64.whl", hash = "sha256:8b93618102caf12801638a01a2b478a55410ddd71bd41cfaf6f707953a49ac43"},
+ {file = "aiohttp-3.14.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b29518c9c2ec7e373e68259206a137c7f4f5439c58baaec4b5ab3ab799850a4e"},
+ {file = "aiohttp-3.14.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:dbec68ce61b64cb73cab4d33df9433427b1713c8bcccb181dce695c1b6f8e87c"},
+ {file = "aiohttp-3.14.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3cdf534aa455593e589302990c5097aa5c92c06c4262a20da22934f9186a5fff"},
+ {file = "aiohttp-3.14.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cb6c657104393b5fbff01a5f59b2023db74058a8077d94475d6c25d03882a108"},
+ {file = "aiohttp-3.14.0-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:46fbbec4e4fab7428d4396a3823f9320e4560aa3113b89eeebce712c27c9ed5a"},
+ {file = "aiohttp-3.14.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2c2c7e05dd5335b298085abf45ddf98673934c3ee1c083d0b9ea13d4186ad500"},
+ {file = "aiohttp-3.14.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3c7139100fbaae76515b73051d8f0aa3a3ff02e415eec8a8eee8e2223d9ba955"},
+ {file = "aiohttp-3.14.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:78d6f9286a629ce52728430afe18f8ed2b6c39a1fddb3802d7244b9983910ad2"},
+ {file = "aiohttp-3.14.0-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cc3c3e12cdaeb92d7dcf13db00e9f6b1956b910e47256e696df1cfa946d02159"},
+ {file = "aiohttp-3.14.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4d6a998191f5ebe3b8c28463ff72bc030250008b3193c402464efadd08b5ca02"},
+ {file = "aiohttp-3.14.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:0fc2b75ae8d169d853be2862d960be8550da6c5c65711d5476407eb3fdb006bd"},
+ {file = "aiohttp-3.14.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:16eee56bcc72d04600bc56c1759982c2385ec0b41d3fd3521f836bf64a0957ef"},
+ {file = "aiohttp-3.14.0-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:5a2e7ca615c3ddc15b82687e05a624e5f5cba3f1d6c20cb81172d70ea498451e"},
+ {file = "aiohttp-3.14.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:f0b7b8bbbec3ce9467ee0ebe334622fd90624f593edd3136c567811453fc4fae"},
+ {file = "aiohttp-3.14.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5ba10966d4f03dd96a14365be4b8e37c327c76f11c3ca867116966cdd9f98066"},
+ {file = "aiohttp-3.14.0-cp312-cp312-win32.whl", hash = "sha256:101df7779c80c0636014a6b2c6642acd3efb5b355d48347c9d7dfb720aee9430"},
+ {file = "aiohttp-3.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:b0a5747586d4467efd1f932710b269131c9717a872dce082cd92a00c1c13123a"},
+ {file = "aiohttp-3.14.0-cp312-cp312-win_arm64.whl", hash = "sha256:5f1c5be60add78fabb4aacd13c5a348ae79d2fcbfc7fa78da8f1eb192273b370"},
+ {file = "aiohttp-3.14.0-cp313-cp313-android_21_arm64_v8a.whl", hash = "sha256:25400d710641a8040bf022a8a99f579e581ffa1c5bd42c33255d7d6f3957c127"},
+ {file = "aiohttp-3.14.0-cp313-cp313-android_21_x86_64.whl", hash = "sha256:c5492b9929826e07cc3fcb9739ae87aab05dff6b5e67a9b73fd1700c6d008981"},
+ {file = "aiohttp-3.14.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:3366751d68d237c621264233a32f3078bbc21b7904ab90a77e03d21390c742c6"},
+ {file = "aiohttp-3.14.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:57ea07d28695a7a40304d42251892a8df765e5588c10ee32afeddcd5df33c0a2"},
+ {file = "aiohttp-3.14.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:076cb014191ae2e65d949e1ad01f1dcfe33e32789b5172510f3e79c79fc04d50"},
+ {file = "aiohttp-3.14.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2f3fc37054564dee64a855b5b092d87ec35dcddfaabf7dacb1c8a2b1f83dc0a9"},
+ {file = "aiohttp-3.14.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8fcaef74d2ab0f607d7ff85a0d15e21bb5a258c4a58df1908396eb50d7f4ed3c"},
+ {file = "aiohttp-3.14.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e4c01b0bfc6209590960e68eac083cd22d5d87c21f974dd6208cafa5d3542bc8"},
+ {file = "aiohttp-3.14.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f12eb7896e81caf403a2b18c9406426f1207361e7239c057ab29c076d4257e83"},
+ {file = "aiohttp-3.14.0-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6c79a044cacf360ec46738d863d2f41c9300d2a06ef4a7402ea0df306a350e61"},
+ {file = "aiohttp-3.14.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:85e0675f47be4eff0636bf88c02140ea89168ae0df3ff1f3f464e9de9610d277"},
+ {file = "aiohttp-3.14.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7b33e751cab03fdc960095b1e326cb5a03f5ee577d6ded59f3d1c100f8668882"},
+ {file = "aiohttp-3.14.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:26d9224c6dd7f5c749aba4f61315a894601448b28d94d12f4dea0903e26d2096"},
+ {file = "aiohttp-3.14.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:6281aecdf2732940f4fe06bd6adec5ae4d59b78b080b8e3a6b81467301010988"},
+ {file = "aiohttp-3.14.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:23e8314e7aed8576fbe33314d218bd81447a3adbc91dc36f1163bf583cd3084c"},
+ {file = "aiohttp-3.14.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:3b54fbff46127aeafdd764cecd0d99fa2f24a0e37ea5c18a7c3a4ac450df1db3"},
+ {file = "aiohttp-3.14.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b27d89af91a555f58e08e4902dbcbc48862fd40095720ca705990476bd93b7ac"},
+ {file = "aiohttp-3.14.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:25d2326a4967bf705a9f9913a13005e93b6020ad8a9f6bd6bd78850d5171332e"},
+ {file = "aiohttp-3.14.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:a1d209375c503472b3c0a340cdf3c55fcd82e84b46dda7caeaced59faba373ec"},
+ {file = "aiohttp-3.14.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:666c7c5036df57b693026398b69b41874a1931ac5b3485fd910e57bfac253869"},
+ {file = "aiohttp-3.14.0-cp313-cp313-win32.whl", hash = "sha256:23f094a1ef64823fd35854ddf5c7a80a078162f37f9d2f7c6142b51a6affa456"},
+ {file = "aiohttp-3.14.0-cp313-cp313-win_amd64.whl", hash = "sha256:e03abdaa17d553f17e1d1d06bb266b3970106c78051d06795723e748d8e49d11"},
+ {file = "aiohttp-3.14.0-cp313-cp313-win_arm64.whl", hash = "sha256:acdb400538cf4769543548bb5d1eb23d39bed4f96554a6078cb728c7cb2c268b"},
+ {file = "aiohttp-3.14.0-cp314-cp314-android_24_arm64_v8a.whl", hash = "sha256:363ef9e91014e7891679bfb2ac0a7c6ea93435dbbfd10ecf41b9f06fcf506c5f"},
+ {file = "aiohttp-3.14.0-cp314-cp314-android_24_x86_64.whl", hash = "sha256:884a4edbdad77be9d0ef36142c8b504351b170df0bf62b51e784fadabf311c42"},
+ {file = "aiohttp-3.14.0-cp314-cp314-ios_13_0_arm64_iphoneos.whl", hash = "sha256:70ea956f6cc4a37620966b56c2e205d88ca3e6d85ec063277e414b1035cddad3"},
+ {file = "aiohttp-3.14.0-cp314-cp314-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:ea3b9806c89f61da22fddf1f12dd524fb368e5e28f1261fbdafe5c3cd8ce893b"},
+ {file = "aiohttp-3.14.0-cp314-cp314-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:a071be341c2bd9b0188e62d173509f024e0a35b1c342c53c50f8daaeda8c3bd8"},
+ {file = "aiohttp-3.14.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:198cfe61bf253b19da1fb3e0fa122249dc4f14c12709493fed8054aa0411cc76"},
+ {file = "aiohttp-3.14.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:9dc203d6ce6b9106d54e2a93f41dfdfebfbca2d99962ba503bfd3e5921a6549e"},
+ {file = "aiohttp-3.14.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9e19d17ab02bf16832a2c8c0d55a486792c5b1645665652ee9531aebcc30cb72"},
+ {file = "aiohttp-3.14.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d925fba0c14d5b498a8028b0107beebdfd16c5d48d702ff54f879cb017aaaca3"},
+ {file = "aiohttp-3.14.0-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d33e61021222ce7f9792bcac870d6f58d8adfceda33ab857b01264f4560f2c5f"},
+ {file = "aiohttp-3.14.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:44eca38755d0105bb32f47d085f5dd449846a449e1245fc105889e3279dcf8e3"},
+ {file = "aiohttp-3.14.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f13087e06f68fea4941c21a0c541c00553aa16e4f8fd7bbe2b198df761e964d6"},
+ {file = "aiohttp-3.14.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ff82be7f1ef73634cb77890a770743239bc3d487b848669be1c599889336dc0a"},
+ {file = "aiohttp-3.14.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a150c0875ac8fd87f1c398650841308a30d65facf7416b12dbdb9cfdcbe5a48c"},
+ {file = "aiohttp-3.14.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:edc01ea4e1ec5a1649a28866262bf24195889ff7b27bdd947029a6086741de9b"},
+ {file = "aiohttp-3.14.0-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:540632bf882ff8fc88f2e1697be0761578e89e0d79fb4a8a6d65dc5da7e729d4"},
+ {file = "aiohttp-3.14.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:860a86bc2c80237f5dff52edcf427e10a8d8352271fd84845429a3e60199e02c"},
+ {file = "aiohttp-3.14.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:5cbd50e6a50d6b99283a826b18cbdebf65b0797689a7535cb0e9dd37be0f63c3"},
+ {file = "aiohttp-3.14.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:20144819e99db593e22bbd2f3f2691a5e149f879142d6b8670254708853ff4fb"},
+ {file = "aiohttp-3.14.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:26b6d79aa54cb4ed50cc7d41ed14e99e0f1fc8e7c2d42f2e05b37aea897b2b52"},
+ {file = "aiohttp-3.14.0-cp314-cp314-win32.whl", hash = "sha256:106ed074a856f3e21d186b8579e2c8afb6da598e267cdaab01059e13db2fc44d"},
+ {file = "aiohttp-3.14.0-cp314-cp314-win_amd64.whl", hash = "sha256:4f770846edae8f00ecc57af825bce811f787f87a7dcf0e90d191790efe5b31f7"},
+ {file = "aiohttp-3.14.0-cp314-cp314-win_arm64.whl", hash = "sha256:acf1581c4f21ed4b80a2dded504d87b055a071a84d5737ea966435f768275ac6"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:6aa1a40f9cbb3da9f80714c5966b8946c21e6a2530d809b9498b33161e3c8733"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:b62af5a8cc96a194eaa01a9ed7b34a3ffa58d3d8daaa1a0d7a749353ad12d228"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6eb63b1417efaf7d1002a6ad034a40d44376afcc16508a57f8e74b49ad26a095"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c20b9ad156a79eb97be5cf9e069eec01d2f0dc8472ffbd75299a8b2d4c2cbbde"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:40ae7b0642c25632c7eabc4a04754012691864d2a1b93becf7cddb76027b838a"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:95f5217e76a046b9f228a101717ef8d42b1eb3d9d196d15202db5bf41df88936"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1a4a9f17e85b80878c176695c1998c790e83731d8271881e5d356488652a1f9e"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:145262119b07d7f95abc1839add35ba2bfc84551d4b4660ca11542c0b215455b"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:49a33ded29b0b2fa7a367a02cf0fb89af602bb87542a16177ec8ce1c9c51d12a"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:2cc736a9c9fc2bc4dd71fd404815741b6573df27c3f985948ec4076989ac57de"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:b4141a3e5342ee3053a9cab54d25b64ed28289c1041e4c54b3d99839314d90ce"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:e30871b2d58996cb81aac52d2b1d15ac05257131ef0f90f18c2115a380fbfe7c"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:667b881d083ccae3900ea5a241e17e5007ca78844c53ed389bb63d48f729d9c7"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:b584dfe615d151e9b8f0a8ecb3aee6147f2927ec5b95ba25fe621f5377510928"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6199707cc40e0e9cd39c36fbc97bec416c704e1d0ddce03412bb3b3e6a90ccd0"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-win32.whl", hash = "sha256:a8d93334d4961c9d566b1f046c81dee475b7c21eb730728d38237bfa70d1c8e6"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2d2ffe9b614f50f069068b3b52e73414e4107fc10b7efc939a76acff9251fdd2"},
+ {file = "aiohttp-3.14.0-cp314-cp314t-win_arm64.whl", hash = "sha256:7a3fc4358e65826c515350f199c210de747cf669998211b1ee6c2e46de364b24"},
+ {file = "aiohttp-3.14.0.tar.gz", hash = "sha256:2882de819734c715fd1b9c11c97e09fa020d14438203d1d354d8ed1702791c9b"},
]
[package.dependencies]
@@ -152,10 +147,11 @@ attrs = ">=17.3.0"
frozenlist = ">=1.1.1"
multidict = ">=4.5,<7.0"
propcache = ">=0.2.0"
+typing_extensions = {version = ">=4.4", markers = "python_version < \"3.13\""}
yarl = ">=1.17.0,<2.0"
[package.extras]
-speedups = ["Brotli (>=1.2) ; platform_python_implementation == \"CPython\"", "aiodns (>=3.3.0)", "backports.zstd ; platform_python_implementation == \"CPython\" and python_version < \"3.14\"", "brotlicffi (>=1.2) ; platform_python_implementation != \"CPython\""]
+speedups = ["Brotli (>=1.2)", "aiodns (>=3.3.0)", "backports.zstd", "brotlicffi (>=1.2)"]
[[package]]
name = "aiosignal"
@@ -163,8 +159,6 @@ version = "1.4.0"
description = "aiosignal: a list of registered asynchronous callbacks"
optional = true
python-versions = ">=3.9"
-groups = ["main"]
-markers = "extra == \"aiohttp\""
files = [
{file = "aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e"},
{file = "aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7"},
@@ -180,7 +174,6 @@ version = "0.7.0"
description = "Reusable constraint types to use with typing.Annotated"
optional = false
python-versions = ">=3.8"
-groups = ["main"]
files = [
{file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"},
{file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"},
@@ -192,7 +185,6 @@ version = "4.13.0"
description = "High-level concurrency and networking framework on top of asyncio or Trio"
optional = false
python-versions = ">=3.10"
-groups = ["main"]
files = [
{file = "anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708"},
{file = "anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc"},
@@ -212,8 +204,6 @@ version = "5.0.1"
description = "Timeout context manager for asyncio programs"
optional = true
python-versions = ">=3.8"
-groups = ["main"]
-markers = "extra == \"aiohttp\" and python_version == \"3.10\""
files = [
{file = "async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c"},
{file = "async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3"},
@@ -225,8 +215,6 @@ version = "26.1.0"
description = "Classes Without Boilerplate"
optional = true
python-versions = ">=3.9"
-groups = ["main"]
-markers = "extra == \"aiohttp\""
files = [
{file = "attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309"},
{file = "attrs-26.1.0.tar.gz", hash = "sha256:d03ceb89cb322a8fd706d4fb91940737b6642aa36998fe130a9bc96c985eff32"},
@@ -238,8 +226,6 @@ version = "1.2.0"
description = "Backport of asyncio.Runner, a context manager that controls event loop life cycle."
optional = false
python-versions = "<3.11,>=3.8"
-groups = ["dev"]
-markers = "python_version == \"3.10\""
files = [
{file = "backports_asyncio_runner-1.2.0-py3-none-any.whl", hash = "sha256:0da0a936a8aeb554eccb426dc55af3ba63bcdc69fa1a600b5bb305413a4477b5"},
{file = "backports_asyncio_runner-1.2.0.tar.gz", hash = "sha256:a5aa7b2b7d8f8bfcaa2b57313f70792df84e32a2a746f585213373f900b42162"},
@@ -251,7 +237,6 @@ version = "2026.5.20"
description = "Python package for providing Mozilla's CA Bundle."
optional = false
python-versions = ">=3.7"
-groups = ["main"]
files = [
{file = "certifi-2026.5.20-py3-none-any.whl", hash = "sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897"},
{file = "certifi-2026.5.20.tar.gz", hash = "sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d"},
@@ -263,8 +248,6 @@ version = "0.4.6"
description = "Cross-platform colored terminal text."
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
-groups = ["dev"]
-markers = "sys_platform == \"win32\""
files = [
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
@@ -276,8 +259,6 @@ version = "1.3.1"
description = "Backport of PEP 654 (exception groups)"
optional = false
python-versions = ">=3.7"
-groups = ["main", "dev"]
-markers = "python_version == \"3.10\""
files = [
{file = "exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598"},
{file = "exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219"},
@@ -295,7 +276,6 @@ version = "2.1.2"
description = "execnet: rapid multi-Python deployment"
optional = false
python-versions = ">=3.8"
-groups = ["dev"]
files = [
{file = "execnet-2.1.2-py3-none-any.whl", hash = "sha256:67fba928dd5a544b783f6056f449e5e3931a5c378b128bc18501f7ea79e296ec"},
{file = "execnet-2.1.2.tar.gz", hash = "sha256:63d83bfdd9a23e35b9c6a3261412324f964c2ec8dcd8d3c6916ee9373e0befcd"},
@@ -310,8 +290,6 @@ version = "1.8.0"
description = "A list-like structure which implements collections.abc.MutableSequence"
optional = true
python-versions = ">=3.9"
-groups = ["main"]
-markers = "extra == \"aiohttp\""
files = [
{file = "frozenlist-1.8.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b37f6d31b3dcea7deb5e9696e529a6aa4a898adc33db82da12e4c60a7c4d2011"},
{file = "frozenlist-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef2b7b394f208233e471abc541cc6991f907ffd47dc72584acee3147899d6565"},
@@ -451,7 +429,6 @@ version = "0.16.0"
description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
optional = false
python-versions = ">=3.8"
-groups = ["main"]
files = [
{file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"},
{file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"},
@@ -463,7 +440,6 @@ version = "1.0.9"
description = "A minimal low-level HTTP client."
optional = false
python-versions = ">=3.8"
-groups = ["main"]
files = [
{file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"},
{file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"},
@@ -485,7 +461,6 @@ version = "0.28.1"
description = "The next generation HTTP client."
optional = false
python-versions = ">=3.8"
-groups = ["main"]
files = [
{file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"},
{file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"},
@@ -498,7 +473,7 @@ httpcore = "==1.*"
idna = "*"
[package.extras]
-brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""]
+brotli = ["brotli", "brotlicffi"]
cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"]
http2 = ["h2 (>=3,<5)"]
socks = ["socksio (==1.*)"]
@@ -510,8 +485,6 @@ version = "0.1.8"
description = "Aiohttp transport for HTTPX"
optional = true
python-versions = ">=3.8"
-groups = ["main"]
-markers = "extra == \"aiohttp\""
files = [
{file = "httpx_aiohttp-0.1.8-py3-none-any.whl", hash = "sha256:b7bd958d1331f3759a38a0ba22ad29832cb63ca69498c17735228055bf78fa7e"},
{file = "httpx_aiohttp-0.1.8.tar.gz", hash = "sha256:756c5e74cdb568c3248ba63fe82bfe8bbe64b928728720f7eaac64b3cf46f308"},
@@ -523,14 +496,13 @@ httpx = ">=0.27.0"
[[package]]
name = "idna"
-version = "3.16"
+version = "3.18"
description = "Internationalized Domain Names in Applications (IDNA)"
optional = false
python-versions = ">=3.9"
-groups = ["main"]
files = [
- {file = "idna-3.16-py3-none-any.whl", hash = "sha256:cc246e3a3f89580c3a951b5ad298ca4638078b2cdd4f115654332b5c26daded5"},
- {file = "idna-3.16.tar.gz", hash = "sha256:d7a6da03db833450fca25d2358ac9ff06cd624577a4aea3a596d5c0f77b8e03d"},
+ {file = "idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2"},
+ {file = "idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848"},
]
[package.extras]
@@ -542,7 +514,6 @@ version = "2.3.0"
description = "brain-dead simple config-ini parsing"
optional = false
python-versions = ">=3.10"
-groups = ["dev"]
files = [
{file = "iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12"},
{file = "iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730"},
@@ -554,8 +525,6 @@ version = "6.7.1"
description = "multidict implementation"
optional = true
python-versions = ">=3.9"
-groups = ["main"]
-markers = "extra == \"aiohttp\""
files = [
{file = "multidict-6.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c93c3db7ea657dd4637d57e74ab73de31bccefe144d3d4ce370052035bc85fb5"},
{file = "multidict-6.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:974e72a2474600827abaeda71af0c53d9ebbc3c2eb7da37b37d7829ae31232d8"},
@@ -714,7 +683,6 @@ version = "1.13.0"
description = "Optional static typing for Python"
optional = false
python-versions = ">=3.8"
-groups = ["dev"]
files = [
{file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"},
{file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"},
@@ -768,7 +736,6 @@ version = "1.1.0"
description = "Type system extensions for programs checked with the mypy type checker."
optional = false
python-versions = ">=3.8"
-groups = ["dev"]
files = [
{file = "mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505"},
{file = "mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558"},
@@ -780,7 +747,6 @@ version = "26.2"
description = "Core utilities for Python packages"
optional = false
python-versions = ">=3.8"
-groups = ["dev"]
files = [
{file = "packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e"},
{file = "packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661"},
@@ -792,7 +758,6 @@ version = "1.6.0"
description = "plugin and hook calling mechanisms for python"
optional = false
python-versions = ">=3.9"
-groups = ["dev"]
files = [
{file = "pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746"},
{file = "pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3"},
@@ -808,8 +773,6 @@ version = "0.5.2"
description = "Accelerated property cache"
optional = true
python-versions = ">=3.10"
-groups = ["main"]
-markers = "extra == \"aiohttp\""
files = [
{file = "propcache-0.5.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d5a81be28596d6559f6131ef33e10200de6e17643b3c74ce03f9eb103be6ae8b"},
{file = "propcache-0.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29cbaac5ea0212663e6845e04b5e188d5a6ae6dd919810ac835bf1d3b42c3f4c"},
@@ -940,7 +903,6 @@ version = "2.13.4"
description = "Data validation using Python type hints"
optional = false
python-versions = ">=3.9"
-groups = ["main"]
files = [
{file = "pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba"},
{file = "pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6"},
@@ -954,7 +916,7 @@ typing-inspection = ">=0.4.2"
[package.extras]
email = ["email-validator (>=2.0.0)"]
-timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""]
+timezone = ["tzdata"]
[[package]]
name = "pydantic-core"
@@ -962,7 +924,6 @@ version = "2.46.4"
description = "Core functionality for Pydantic validation and serialization"
optional = false
python-versions = ">=3.9"
-groups = ["main"]
files = [
{file = "pydantic_core-2.46.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a396dcc17e5a0b164dbe026896245a4fa9ff402edca1dff0be3d53a517f74de4"},
{file = "pydantic_core-2.46.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:da4b951fe36dc7c3a1ccb4e3cd1747c3542b8c9ceede8fc86cae054e764485f5"},
@@ -1095,7 +1056,6 @@ version = "2.20.0"
description = "Pygments is a syntax highlighting package written in Python."
optional = false
python-versions = ">=3.9"
-groups = ["dev"]
files = [
{file = "pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176"},
{file = "pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f"},
@@ -1110,7 +1070,6 @@ version = "9.0.3"
description = "pytest: simple powerful testing with Python"
optional = false
python-versions = ">=3.10"
-groups = ["dev"]
files = [
{file = "pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9"},
{file = "pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c"},
@@ -1134,7 +1093,6 @@ version = "1.4.0"
description = "Pytest support for asyncio"
optional = false
python-versions = ">=3.10"
-groups = ["dev"]
files = [
{file = "pytest_asyncio-1.4.0-py3-none-any.whl", hash = "sha256:933ca923a23075a87fb7070c0ec272a6848489824d887c85c812670932835aa1"},
{file = "pytest_asyncio-1.4.0.tar.gz", hash = "sha256:c6c0d2259945122819f171a32ecea2c349ead889ee28176caaf492143424be42"},
@@ -1155,7 +1113,6 @@ version = "3.8.0"
description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs"
optional = false
python-versions = ">=3.9"
-groups = ["dev"]
files = [
{file = "pytest_xdist-3.8.0-py3-none-any.whl", hash = "sha256:202ca578cfeb7370784a8c33d6d05bc6e13b4f25b5053c30a152269fd10f0b88"},
{file = "pytest_xdist-3.8.0.tar.gz", hash = "sha256:7e578125ec9bc6050861aa93f2d59f1d8d085595d6551c2c90b6f4fad8d3a9f1"},
@@ -1176,7 +1133,6 @@ version = "2.9.0.post0"
description = "Extensions to the standard Python datetime module"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
-groups = ["dev"]
files = [
{file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"},
{file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"},
@@ -1191,7 +1147,6 @@ version = "0.11.5"
description = "An extremely fast Python linter and code formatter, written in Rust."
optional = false
python-versions = ">=3.7"
-groups = ["dev"]
files = [
{file = "ruff-0.11.5-py3-none-linux_armv6l.whl", hash = "sha256:2561294e108eb648e50f210671cc56aee590fb6167b594144401532138c66c7b"},
{file = "ruff-0.11.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ac12884b9e005c12d0bd121f56ccf8033e1614f736f766c118ad60780882a077"},
@@ -1219,7 +1174,6 @@ version = "1.17.0"
description = "Python 2 and 3 compatibility utilities"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
-groups = ["dev"]
files = [
{file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"},
{file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"},
@@ -1231,8 +1185,6 @@ version = "2.4.1"
description = "A lil' TOML parser"
optional = false
python-versions = ">=3.8"
-groups = ["dev"]
-markers = "python_version == \"3.10\""
files = [
{file = "tomli-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30"},
{file = "tomli-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a"},
@@ -1289,7 +1241,6 @@ version = "2.9.0.20260518"
description = "Typing stubs for python-dateutil"
optional = false
python-versions = ">=3.10"
-groups = ["dev"]
files = [
{file = "types_python_dateutil-2.9.0.20260518-py3-none-any.whl", hash = "sha256:d6a9c5bd0de61460c8fdef8ab2b400f956a1a1075cce08d4e2b4434e478c50b8"},
{file = "types_python_dateutil-2.9.0.20260518.tar.gz", hash = "sha256:51f02dc03b61c7f6a07df45797d4dfe8a1aa47f0b7db9ad89f6fd3a1a70e1b51"},
@@ -1301,7 +1252,6 @@ version = "4.15.0"
description = "Backported and Experimental Type Hints for Python 3.9+"
optional = false
python-versions = ">=3.9"
-groups = ["main", "dev"]
files = [
{file = "typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548"},
{file = "typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466"},
@@ -1313,7 +1263,6 @@ version = "0.4.2"
description = "Runtime typing introspection tools"
optional = false
python-versions = ">=3.9"
-groups = ["main"]
files = [
{file = "typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7"},
{file = "typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464"},
@@ -1328,17 +1277,16 @@ version = "2.7.0"
description = "HTTP library with thread-safe connection pooling, file post, and more."
optional = false
python-versions = ">=3.10"
-groups = ["dev"]
files = [
{file = "urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897"},
{file = "urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c"},
]
[package.extras]
-brotli = ["brotli (>=1.2.0) ; platform_python_implementation == \"CPython\"", "brotlicffi (>=1.2.0.0) ; platform_python_implementation != \"CPython\""]
+brotli = ["brotli (>=1.2.0)", "brotlicffi (>=1.2.0.0)"]
h2 = ["h2 (>=4,<5)"]
socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"]
-zstd = ["backports-zstd (>=1.0.0) ; python_version < \"3.14\""]
+zstd = ["backports-zstd (>=1.0.0)"]
[[package]]
name = "yarl"
@@ -1346,8 +1294,6 @@ version = "1.24.2"
description = "Yet another URL library"
optional = true
python-versions = ">=3.10"
-groups = ["main"]
-markers = "extra == \"aiohttp\""
files = [
{file = "yarl-1.24.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5249a113065c2b7a958bc699759e359cd61cfc81e3069662208f48f191b7ed12"},
{file = "yarl-1.24.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7f4425fa244fbf530b006d0c5f79ce920114cfff5b4f5f6056e669f8e160fdc0"},
@@ -1464,6 +1410,6 @@ propcache = ">=0.2.1"
aiohttp = ["aiohttp", "httpx-aiohttp"]
[metadata]
-lock-version = "2.1"
+lock-version = "2.0"
python-versions = "^3.10"
content-hash = "747cf6806d0d2a32dda32c0f4beb23d48047dee5fab394a6dbe55935c60b949a"
diff --git a/reference.md b/reference.md
index 12e322c..b64acb0 100644
--- a/reference.md
+++ b/reference.md
@@ -53,7 +53,7 @@ client.app_categories.list()
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -119,7 +119,7 @@ client.app_categories.retrieve(
**id:** `str` — The ID of the app category to retrieve
-
+
@@ -127,7 +127,7 @@ client.app_categories.retrieve(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -205,7 +205,7 @@ client.apps.list(
**after:** `typing.Optional[str]` — The cursor to start from for pagination
-
+
@@ -213,7 +213,7 @@ client.apps.list(
**before:** `typing.Optional[str]` — The cursor to end before for pagination
-
+
@@ -221,7 +221,7 @@ client.apps.list(
**limit:** `typing.Optional[int]` — The maximum number of results to return
-
+
@@ -229,7 +229,7 @@ client.apps.list(
**q:** `typing.Optional[str]` — A search query to filter the apps
-
+
@@ -237,7 +237,7 @@ client.apps.list(
**sort_key:** `typing.Optional[AppsListRequestSortKey]` — The key to sort the apps by
-
+
@@ -245,7 +245,7 @@ client.apps.list(
**sort_direction:** `typing.Optional[AppsListRequestSortDirection]` — The direction to sort the apps
-
+
@@ -253,7 +253,7 @@ client.apps.list(
**category_ids:** `typing.Optional[typing.Union[str, typing.Sequence[str]]]` — Only return apps in these categories
-
+
@@ -261,7 +261,7 @@ client.apps.list(
**has_components:** `typing.Optional[bool]` — Only return apps that have components (actions or triggers)
-
+
@@ -269,7 +269,7 @@ client.apps.list(
**has_actions:** `typing.Optional[bool]` — Only return apps that have actions
-
+
@@ -277,7 +277,7 @@ client.apps.list(
**has_triggers:** `typing.Optional[bool]` — Only return apps that have triggers
-
+
@@ -285,7 +285,7 @@ client.apps.list(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -351,7 +351,7 @@ client.apps.retrieve(
**app_id:** `str` — The name slug or ID of the app (e.g., 'slack', 'github')
-
+
@@ -359,7 +359,7 @@ client.apps.retrieve(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -432,15 +432,15 @@ client.accounts.list(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**external_user_id:** `typing.Optional[str]`
-
+**external_user_id:** `typing.Optional[str]`
+
@@ -448,7 +448,7 @@ client.accounts.list(
**oauth_app_id:** `typing.Optional[str]` — The OAuth app ID to filter by, if applicable
-
+
@@ -456,7 +456,7 @@ client.accounts.list(
**after:** `typing.Optional[str]` — The cursor to start from for pagination
-
+
@@ -464,7 +464,7 @@ client.accounts.list(
**before:** `typing.Optional[str]` — The cursor to end before for pagination
-
+
@@ -472,7 +472,7 @@ client.accounts.list(
**limit:** `typing.Optional[int]` — The maximum number of results to return
-
+
@@ -480,7 +480,7 @@ client.accounts.list(
**app:** `typing.Optional[str]` — The app slug or ID to filter accounts by.
-
+
@@ -488,7 +488,7 @@ client.accounts.list(
**include_credentials:** `typing.Optional[bool]` — Whether to retrieve the account's credentials or not
-
+
@@ -496,7 +496,7 @@ client.accounts.list(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -566,7 +566,7 @@ client.accounts.create(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -574,7 +574,7 @@ client.accounts.create(
**app_slug:** `str` — The app slug for the account
-
+
@@ -582,7 +582,7 @@ client.accounts.create(
**cfmap_json:** `str` — JSON string containing the custom fields mapping
-
+
@@ -590,15 +590,15 @@ client.accounts.create(
**connect_token:** `str` — The connect token for authentication
-
+
-
-**external_user_id:** `typing.Optional[str]`
-
+**external_user_id:** `typing.Optional[str]`
+
@@ -606,7 +606,7 @@ client.accounts.create(
**oauth_app_id:** `typing.Optional[str]` — The OAuth app ID to filter by, if applicable
-
+
@@ -614,7 +614,7 @@ client.accounts.create(
**name:** `typing.Optional[str]` — Optional name for the account
-
+
@@ -622,7 +622,7 @@ client.accounts.create(
**account_id:** `typing.Optional[str]` — An existing account ID to reconnect. When provided, the account's credentials are updated instead of creating a new account. Must belong to the same external user and project environment as the connect token, and match the app identified by app_slug.
-
+
@@ -630,7 +630,7 @@ client.accounts.create(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -697,15 +697,15 @@ client.accounts.retrieve(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**account_id:** `str`
-
+**account_id:** `str`
+
@@ -713,7 +713,7 @@ client.accounts.retrieve(
**include_credentials:** `typing.Optional[bool]` — Whether to retrieve the account's credentials or not
-
+
@@ -721,7 +721,7 @@ client.accounts.retrieve(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -787,15 +787,15 @@ client.accounts.delete(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**account_id:** `str`
-
+**account_id:** `str`
+
@@ -803,7 +803,7 @@ client.accounts.delete(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -869,23 +869,123 @@ client.accounts.delete_by_app(
**project_id:** `str` — The project ID, which starts with `proj_`.
+
+
+
+
+
+-
+**app_id:** `str`
+
-
-**app_id:** `str`
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+client.accounts.list_by_external_user(...) -> typing.List[Account]
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+#### 📝 Description
+
+
+-
+
+
+-
+
+List all connected accounts for a specific external user. Equivalent to GET /accounts with external_user_id filter but uses path-based routing.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from pipedream import Pipedream
+from pipedream.environment import PipedreamEnvironment
+
+client = Pipedream(
+ client_id="",
+ client_secret="",
+ environment=PipedreamEnvironment.PROD,
+)
+
+client.accounts.list_by_external_user(
+ external_user_id="external_user_id",
+ include_credentials=True,
+ app="app",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**project_id:** `str` — The project ID, which starts with `proj_`.
+
+
+
+
+
+-
+
+**external_user_id:** `str`
+
+
+
+
+
+-
+
+**include_credentials:** `typing.Optional[bool]`
+
+
+
+
+
+-
+
+**app:** `typing.Optional[str]`
+
+
+
+
+
+-
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
@@ -952,15 +1052,15 @@ client.users.delete_external_user(
-
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**external_user_id:** `str`
-
+**external_user_id:** `str`
+
@@ -968,7 +1068,7 @@ client.users.delete_external_user(
-
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -1037,7 +1137,7 @@ client.users.list(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -1045,7 +1145,7 @@ client.users.list(
**after:** `typing.Optional[str]` — The cursor to start from for pagination
-
+
@@ -1053,7 +1153,7 @@ client.users.list(
**before:** `typing.Optional[str]` — The cursor to end before for pagination
-
+
@@ -1061,7 +1161,7 @@ client.users.list(
**limit:** `typing.Optional[int]` — The maximum number of results to return
-
+
@@ -1069,7 +1169,7 @@ client.users.list(
**q:** `typing.Optional[str]` — Filter users by external_id (partial match)
-
+
@@ -1077,7 +1177,7 @@ client.users.list(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -1150,7 +1250,7 @@ client.components.list(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -1158,7 +1258,7 @@ client.components.list(
**after:** `typing.Optional[str]` — The cursor to start from for pagination
-
+
@@ -1166,7 +1266,7 @@ client.components.list(
**before:** `typing.Optional[str]` — The cursor to end before for pagination
-
+
@@ -1174,7 +1274,7 @@ client.components.list(
**limit:** `typing.Optional[int]` — The maximum number of results to return
-
+
@@ -1182,7 +1282,7 @@ client.components.list(
**q:** `typing.Optional[str]` — A search query to filter the components
-
+
@@ -1190,15 +1290,15 @@ client.components.list(
**app:** `typing.Optional[str]` — The ID or name slug of the app to filter the components
-
+
-
-**registry:** `typing.Optional[ComponentsListRequestRegistry]` — The registry to retrieve components from. Defaults to 'all' ('public', 'private', or 'all')
-
+**registry:** `typing.Optional[ComponentsListRequestRegistry]` — The registry to retrieve components from
+
@@ -1206,7 +1306,7 @@ client.components.list(
**component_type:** `typing.Optional[ComponentType]` — The type of the component to filter the components
-
+
@@ -1214,7 +1314,7 @@ client.components.list(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -1262,8 +1362,8 @@ client = Pipedream(
)
client.components.retrieve(
- component_id="component_id",
- version="1.2.3",
+ component_id="slack-send-message",
+ version="1.0.0",
)
```
@@ -1281,23 +1381,23 @@ client.components.retrieve(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**component_id:** `str` — The key that uniquely identifies the component (e.g., 'slack-send-message')
-
+**component_id:** `str` — The key that uniquely identifies the component
+
-
-**version:** `typing.Optional[str]` — Optional semantic version of the component to retrieve (for example '1.0.0')
-
+**version:** `typing.Optional[str]` — Optional semantic version of the component to retrieve
+
@@ -1305,7 +1405,7 @@ client.components.retrieve(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -1373,15 +1473,15 @@ client.components.configure_prop(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**request:** `ConfigurePropOpts`
-
+**request:** `ConfigurePropOpts`
+
@@ -1389,7 +1489,7 @@ client.components.configure_prop(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -1456,15 +1556,15 @@ client.components.reload_props(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**request:** `ReloadPropsOpts`
-
+**request:** `ReloadPropsOpts`
+
@@ -1472,7 +1572,7 @@ client.components.reload_props(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -1544,7 +1644,7 @@ client.actions.list(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -1552,7 +1652,7 @@ client.actions.list(
**after:** `typing.Optional[str]` — The cursor to start from for pagination
-
+
@@ -1560,7 +1660,7 @@ client.actions.list(
**before:** `typing.Optional[str]` — The cursor to end before for pagination
-
+
@@ -1568,7 +1668,7 @@ client.actions.list(
**limit:** `typing.Optional[int]` — The maximum number of results to return
-
+
@@ -1576,7 +1676,7 @@ client.actions.list(
**q:** `typing.Optional[str]` — A search query to filter the actions
-
+
@@ -1584,15 +1684,15 @@ client.actions.list(
**app:** `typing.Optional[str]` — The ID or name slug of the app to filter the actions
-
+
-
-**registry:** `typing.Optional[ActionsListRequestRegistry]` — The registry to retrieve actions from. Defaults to 'all' ('public', 'private', or 'all')
-
+**registry:** `typing.Optional[ActionsListRequestRegistry]` — The registry to retrieve actions from
+
@@ -1600,7 +1700,7 @@ client.actions.list(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -1648,8 +1748,8 @@ client = Pipedream(
)
client.actions.retrieve(
- component_id="component_id",
- version="1.2.3",
+ component_id="slack-send-message",
+ version="1.0.0",
)
```
@@ -1667,23 +1767,23 @@ client.actions.retrieve(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**component_id:** `str` — The key that uniquely identifies the component (e.g., 'slack-send-message')
-
+**component_id:** `str` — The key that uniquely identifies the component
+
-
-**version:** `typing.Optional[str]` — Optional semantic version of the component to retrieve (for example '1.0.0')
-
+**version:** `typing.Optional[str]` — Optional semantic version of the component to retrieve
+
@@ -1691,7 +1791,7 @@ client.actions.retrieve(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -1759,15 +1859,15 @@ client.actions.configure_prop(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**request:** `ConfigurePropOpts`
-
+**request:** `ConfigurePropOpts`
+
@@ -1775,7 +1875,7 @@ client.actions.configure_prop(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -1842,15 +1942,15 @@ client.actions.reload_props(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**request:** `ReloadPropsOpts`
-
+**request:** `ReloadPropsOpts`
+
@@ -1858,7 +1958,7 @@ client.actions.reload_props(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -1925,7 +2025,7 @@ client.actions.run(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -1933,7 +2033,7 @@ client.actions.run(
**id:** `str` — The action component ID
-
+
@@ -1941,23 +2041,23 @@ client.actions.run(
**external_user_id:** `str` — The external user ID
-
+
-
-**version:** `typing.Optional[str]` — Optional action component version (in SemVer format, for example '1.0.0'), defaults to latest
-
+**version:** `typing.Optional[str]` — Action component semantic version
+
-
-**configured_props:** `typing.Optional[ConfiguredProps]`
-
+**configured_props:** `typing.Optional[ConfiguredProps]`
+
@@ -1965,15 +2065,15 @@ client.actions.run(
**dynamic_props_id:** `typing.Optional[str]` — The ID for dynamic props
-
+
-
-**stash_id:** `typing.Optional[RunActionOptsStashId]`
-
+**stash_id:** `typing.Optional[RunActionOptsStashId]`
+
@@ -1981,7 +2081,7 @@ client.actions.run(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -2053,7 +2153,7 @@ client.triggers.list(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -2061,7 +2161,7 @@ client.triggers.list(
**after:** `typing.Optional[str]` — The cursor to start from for pagination
-
+
@@ -2069,7 +2169,7 @@ client.triggers.list(
**before:** `typing.Optional[str]` — The cursor to end before for pagination
-
+
@@ -2077,7 +2177,7 @@ client.triggers.list(
**limit:** `typing.Optional[int]` — The maximum number of results to return
-
+
@@ -2085,7 +2185,7 @@ client.triggers.list(
**q:** `typing.Optional[str]` — A search query to filter the triggers
-
+
@@ -2093,15 +2193,15 @@ client.triggers.list(
**app:** `typing.Optional[str]` — The ID or name slug of the app to filter the triggers
-
+
-
-**registry:** `typing.Optional[TriggersListRequestRegistry]` — The registry to retrieve triggers from. Defaults to 'all' ('public', 'private', or 'all')
-
+**registry:** `typing.Optional[TriggersListRequestRegistry]` — The registry to retrieve triggers from
+
@@ -2109,7 +2209,7 @@ client.triggers.list(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -2157,8 +2257,8 @@ client = Pipedream(
)
client.triggers.retrieve(
- component_id="component_id",
- version="1.2.3",
+ component_id="slack-send-message",
+ version="1.0.0",
)
```
@@ -2176,23 +2276,23 @@ client.triggers.retrieve(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**component_id:** `str` — The key that uniquely identifies the component (e.g., 'slack-send-message')
-
+**component_id:** `str` — The key that uniquely identifies the component
+
-
-**version:** `typing.Optional[str]` — Optional semantic version of the component to retrieve (for example '1.0.0')
-
+**version:** `typing.Optional[str]` — Optional semantic version of the component to retrieve
+
@@ -2200,7 +2300,7 @@ client.triggers.retrieve(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -2268,15 +2368,15 @@ client.triggers.configure_prop(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**request:** `ConfigurePropOpts`
-
+**request:** `ConfigurePropOpts`
+
@@ -2284,7 +2384,7 @@ client.triggers.configure_prop(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -2351,15 +2451,15 @@ client.triggers.reload_props(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**request:** `ReloadPropsOpts`
-
+**request:** `ReloadPropsOpts`
+
@@ -2367,7 +2467,7 @@ client.triggers.reload_props(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -2434,7 +2534,7 @@ client.triggers.deploy(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -2442,7 +2542,7 @@ client.triggers.deploy(
**id:** `str` — The trigger component ID
-
+
@@ -2450,23 +2550,23 @@ client.triggers.deploy(
**external_user_id:** `str` — The external user ID
-
+
-
-**version:** `typing.Optional[str]` — Optional trigger component version (in SemVer format, for example '1.0.0'), defaults to latest
-
+**version:** `typing.Optional[str]` — Trigger component semantic version
+
-
-**configured_props:** `typing.Optional[ConfiguredProps]`
-
+**configured_props:** `typing.Optional[ConfiguredProps]`
+
@@ -2474,7 +2574,7 @@ client.triggers.deploy(
**dynamic_props_id:** `typing.Optional[str]` — The ID for dynamic props
-
+
@@ -2482,7 +2582,7 @@ client.triggers.deploy(
**workflow_id:** `typing.Optional[str]` — Optional ID of a workflow to receive trigger events
-
+
@@ -2490,7 +2590,7 @@ client.triggers.deploy(
**webhook_url:** `typing.Optional[str]` — Optional webhook URL to receive trigger events
-
+
@@ -2498,7 +2598,7 @@ client.triggers.deploy(
**emit_on_deploy:** `typing.Optional[bool]` — Whether the trigger should emit events during the deploy hook execution. Defaults to true if not specified.
-
+
@@ -2506,7 +2606,7 @@ client.triggers.deploy(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -2577,7 +2677,7 @@ client.deployed_triggers.list(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -2585,7 +2685,7 @@ client.deployed_triggers.list(
**external_user_id:** `str` — Your end user ID, for whom you deployed the trigger
-
+
@@ -2593,7 +2693,7 @@ client.deployed_triggers.list(
**after:** `typing.Optional[str]` — The cursor to start from for pagination
-
+
@@ -2601,7 +2701,7 @@ client.deployed_triggers.list(
**before:** `typing.Optional[str]` — The cursor to end before for pagination
-
+
@@ -2609,7 +2709,7 @@ client.deployed_triggers.list(
**limit:** `typing.Optional[int]` — The maximum number of results to return
-
+
@@ -2617,7 +2717,7 @@ client.deployed_triggers.list(
**emitter_type:** `typing.Optional[EmitterType]` — Filter deployed triggers by emitter type (defaults to 'source' if not provided)
-
+
@@ -2625,7 +2725,7 @@ client.deployed_triggers.list(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -2692,15 +2792,15 @@ client.deployed_triggers.retrieve(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**trigger_id:** `str`
-
+**trigger_id:** `str`
+
@@ -2708,7 +2808,7 @@ client.deployed_triggers.retrieve(
**external_user_id:** `str` — Your end user ID, for whom you deployed the trigger
-
+
@@ -2716,7 +2816,7 @@ client.deployed_triggers.retrieve(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -2783,15 +2883,15 @@ client.deployed_triggers.update(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**trigger_id:** `str`
-
+**trigger_id:** `str`
+
@@ -2799,7 +2899,7 @@ client.deployed_triggers.update(
**external_user_id:** `str` — The external user ID who owns the trigger
-
+
@@ -2807,15 +2907,15 @@ client.deployed_triggers.update(
**active:** `typing.Optional[bool]` — Whether the trigger should be active
-
+
-
-**configured_props:** `typing.Optional[ConfiguredProps]`
-
+**configured_props:** `typing.Optional[ConfiguredProps]`
+
@@ -2823,7 +2923,7 @@ client.deployed_triggers.update(
**name:** `typing.Optional[str]` — The name of the trigger
-
+
@@ -2831,7 +2931,7 @@ client.deployed_triggers.update(
**emit_on_deploy:** `typing.Optional[bool]` — Whether the trigger should emit events during deployment
-
+
@@ -2839,7 +2939,7 @@ client.deployed_triggers.update(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -2907,15 +3007,15 @@ client.deployed_triggers.delete(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**trigger_id:** `str`
-
+**trigger_id:** `str`
+
@@ -2923,7 +3023,7 @@ client.deployed_triggers.delete(
**external_user_id:** `str` — The external user ID who owns the trigger
-
+
@@ -2931,7 +3031,7 @@ client.deployed_triggers.delete(
**ignore_hook_errors:** `typing.Optional[bool]` — Whether to ignore errors during deactivation hook
-
+
@@ -2939,7 +3039,7 @@ client.deployed_triggers.delete(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -3007,15 +3107,15 @@ client.deployed_triggers.list_events(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**trigger_id:** `str`
-
+**trigger_id:** `str`
+
@@ -3023,7 +3123,7 @@ client.deployed_triggers.list_events(
**external_user_id:** `str` — Your end user ID, for whom you deployed the trigger
-
+
@@ -3031,7 +3131,7 @@ client.deployed_triggers.list_events(
**n:** `typing.Optional[int]` — The number of events to retrieve (defaults to 20 if not provided)
-
+
@@ -3039,7 +3139,7 @@ client.deployed_triggers.list_events(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -3106,15 +3206,15 @@ client.deployed_triggers.list_workflows(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**trigger_id:** `str`
-
+**trigger_id:** `str`
+
@@ -3122,7 +3222,7 @@ client.deployed_triggers.list_workflows(
**external_user_id:** `str` — The external user ID who owns the trigger
-
+
@@ -3130,7 +3230,7 @@ client.deployed_triggers.list_workflows(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -3200,15 +3300,15 @@ client.deployed_triggers.update_workflows(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**trigger_id:** `str`
-
+**trigger_id:** `str`
+
@@ -3216,7 +3316,7 @@ client.deployed_triggers.update_workflows(
**external_user_id:** `str` — The external user ID who owns the trigger
-
+
@@ -3224,7 +3324,7 @@ client.deployed_triggers.update_workflows(
**workflow_ids:** `typing.List[str]` — Array of workflow IDs to set
-
+
@@ -3232,7 +3332,7 @@ client.deployed_triggers.update_workflows(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -3299,15 +3399,15 @@ client.deployed_triggers.list_webhooks(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**trigger_id:** `str`
-
+**trigger_id:** `str`
+
@@ -3315,7 +3415,7 @@ client.deployed_triggers.list_webhooks(
**external_user_id:** `str` — The external user ID who owns the trigger
-
+
@@ -3323,7 +3423,7 @@ client.deployed_triggers.list_webhooks(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -3393,15 +3493,15 @@ client.deployed_triggers.update_webhooks(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**trigger_id:** `str`
-
+**trigger_id:** `str`
+
@@ -3409,7 +3509,7 @@ client.deployed_triggers.update_webhooks(
**external_user_id:** `str` — The external user ID who owns the trigger
-
+
@@ -3417,7 +3517,7 @@ client.deployed_triggers.update_webhooks(
**webhook_urls:** `typing.List[str]` — Array of webhook URLs to set
-
+
@@ -3425,7 +3525,7 @@ client.deployed_triggers.update_webhooks(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -3493,23 +3593,23 @@ client.deployed_triggers.retrieve_webhook(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**trigger_id:** `str`
-
+**trigger_id:** `str`
+
-
-**webhook_id:** `str`
-
+**webhook_id:** `str`
+
@@ -3517,7 +3617,7 @@ client.deployed_triggers.retrieve_webhook(
**external_user_id:** `str` — The external user ID who owns the trigger
-
+
@@ -3525,7 +3625,7 @@ client.deployed_triggers.retrieve_webhook(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -3593,23 +3693,23 @@ client.deployed_triggers.regenerate_webhook_signing_key(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**trigger_id:** `str`
-
+**trigger_id:** `str`
+
-
-**webhook_id:** `str`
-
+**webhook_id:** `str`
+
@@ -3617,7 +3717,7 @@ client.deployed_triggers.regenerate_webhook_signing_key(
**external_user_id:** `str` — The external user ID who owns the trigger
-
+
@@ -3625,7 +3725,7 @@ client.deployed_triggers.regenerate_webhook_signing_key(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -3690,7 +3790,7 @@ client.project_environment.retrieve_webhook()
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -3698,7 +3798,7 @@ client.project_environment.retrieve_webhook()
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -3764,7 +3864,7 @@ client.project_environment.update_webhook(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -3772,7 +3872,7 @@ client.project_environment.update_webhook(
**url:** `str` — The webhook URL to set
-
+
@@ -3780,7 +3880,7 @@ client.project_environment.update_webhook(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -3844,7 +3944,7 @@ client.project_environment.delete_webhook()
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -3852,7 +3952,7 @@ client.project_environment.delete_webhook()
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -3916,7 +4016,7 @@ client.project_environment.regenerate_webhook_signing_key()
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -3924,7 +4024,7 @@ client.project_environment.regenerate_webhook_signing_key()
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -3994,7 +4094,7 @@ client.projects.list(
**after:** `typing.Optional[str]` — The cursor to start from for pagination
-
+
@@ -4002,7 +4102,7 @@ client.projects.list(
**before:** `typing.Optional[str]` — The cursor to end before for pagination
-
+
@@ -4010,7 +4110,7 @@ client.projects.list(
**limit:** `typing.Optional[int]` — The maximum number of results to return
-
+
@@ -4018,7 +4118,7 @@ client.projects.list(
**q:** `typing.Optional[str]` — A search query to filter the projects
-
+
@@ -4026,7 +4126,7 @@ client.projects.list(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -4092,7 +4192,7 @@ client.projects.create(
**name:** `str` — Name of the project
-
+
@@ -4100,7 +4200,7 @@ client.projects.create(
**app_name:** `typing.Optional[str]` — Display name for the Connect application
-
+
@@ -4108,7 +4208,7 @@ client.projects.create(
**support_email:** `typing.Optional[str]` — Support email displayed to end users
-
+
@@ -4116,7 +4216,7 @@ client.projects.create(
**connect_require_key_auth_test:** `typing.Optional[bool]` — Send a test request to the upstream API when adding Connect accounts for key-based apps
-
+
@@ -4124,7 +4224,7 @@ client.projects.create(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -4190,7 +4290,7 @@ client.projects.retrieve(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -4198,7 +4298,7 @@ client.projects.retrieve(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -4264,7 +4364,7 @@ client.projects.delete(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -4272,7 +4372,7 @@ client.projects.delete(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -4338,7 +4438,7 @@ client.projects.update(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -4346,7 +4446,7 @@ client.projects.update(
**name:** `typing.Optional[str]` — Name of the project
-
+
@@ -4354,7 +4454,7 @@ client.projects.update(
**app_name:** `typing.Optional[str]` — Display name for the Connect application
-
+
@@ -4362,7 +4462,7 @@ client.projects.update(
**support_email:** `typing.Optional[str]` — Support email displayed to end users
-
+
@@ -4370,7 +4470,7 @@ client.projects.update(
**connect_require_key_auth_test:** `typing.Optional[bool]` — Send a test request to the upstream API when adding Connect accounts for key-based apps
-
+
@@ -4378,7 +4478,7 @@ client.projects.update(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -4445,7 +4545,7 @@ client.projects.update_logo(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -4453,7 +4553,7 @@ client.projects.update_logo(
**logo:** `str` — Data URI containing the new Base64 encoded image
-
+
@@ -4461,7 +4561,7 @@ client.projects.update_logo(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -4525,7 +4625,7 @@ client.projects.retrieve_info()
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -4533,7 +4633,7 @@ client.projects.retrieve_info()
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -4600,15 +4700,15 @@ client.file_stash.download_file(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
-
-**s_3_key:** `str`
-
+**s_3_key:** `str`
+
@@ -4616,7 +4716,7 @@ client.file_stash.download_file(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -4685,7 +4785,7 @@ client.proxy.get(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -4693,7 +4793,7 @@ client.proxy.get(
**url_64:** `str` — Base64-encoded target URL
-
+
@@ -4701,7 +4801,7 @@ client.proxy.get(
**external_user_id:** `str` — The external user ID for the proxy request
-
+
@@ -4709,7 +4809,7 @@ client.proxy.get(
**account_id:** `str` — The account ID to use for authentication
-
+
@@ -4717,7 +4817,7 @@ client.proxy.get(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -4788,7 +4888,7 @@ client.proxy.post(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -4796,7 +4896,7 @@ client.proxy.post(
**url_64:** `str` — Base64-encoded target URL
-
+
@@ -4804,7 +4904,7 @@ client.proxy.post(
**external_user_id:** `str` — The external user ID for the proxy request
-
+
@@ -4812,7 +4912,7 @@ client.proxy.post(
**account_id:** `str` — The account ID to use for authentication
-
+
@@ -4820,7 +4920,7 @@ client.proxy.post(
**request:** `typing.Dict[str, typing.Any]` — Request body to forward to the target API
-
+
@@ -4828,7 +4928,7 @@ client.proxy.post(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -4899,7 +4999,7 @@ client.proxy.put(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -4907,7 +5007,7 @@ client.proxy.put(
**url_64:** `str` — Base64-encoded target URL
-
+
@@ -4915,7 +5015,7 @@ client.proxy.put(
**external_user_id:** `str` — The external user ID for the proxy request
-
+
@@ -4923,7 +5023,7 @@ client.proxy.put(
**account_id:** `str` — The account ID to use for authentication
-
+
@@ -4931,7 +5031,7 @@ client.proxy.put(
**request:** `typing.Dict[str, typing.Any]` — Request body to forward to the target API
-
+
@@ -4939,7 +5039,7 @@ client.proxy.put(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -5007,7 +5107,7 @@ client.proxy.delete(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -5015,7 +5115,7 @@ client.proxy.delete(
**url_64:** `str` — Base64-encoded target URL
-
+
@@ -5023,7 +5123,7 @@ client.proxy.delete(
**external_user_id:** `str` — The external user ID for the proxy request
-
+
@@ -5031,7 +5131,7 @@ client.proxy.delete(
**account_id:** `str` — The account ID to use for authentication
-
+
@@ -5039,7 +5139,7 @@ client.proxy.delete(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -5110,7 +5210,7 @@ client.proxy.patch(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -5118,7 +5218,7 @@ client.proxy.patch(
**url_64:** `str` — Base64-encoded target URL
-
+
@@ -5126,7 +5226,7 @@ client.proxy.patch(
**external_user_id:** `str` — The external user ID for the proxy request
-
+
@@ -5134,7 +5234,7 @@ client.proxy.patch(
**account_id:** `str` — The account ID to use for authentication
-
+
@@ -5142,7 +5242,7 @@ client.proxy.patch(
**request:** `typing.Dict[str, typing.Any]` — Request body to forward to the target API
-
+
@@ -5150,7 +5250,7 @@ client.proxy.patch(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -5217,7 +5317,7 @@ client.tokens.create(
**project_id:** `str` — The project ID, which starts with `proj_`.
-
+
@@ -5225,7 +5325,7 @@ client.tokens.create(
**external_user_id:** `str` — Your end user ID, for whom you're creating the token
-
+
@@ -5233,7 +5333,7 @@ client.tokens.create(
**allowed_origins:** `typing.Optional[typing.List[str]]` — List of allowed origins for CORS
-
+
@@ -5241,7 +5341,7 @@ client.tokens.create(
**error_redirect_uri:** `typing.Optional[str]` — URI to redirect to on error
-
+
@@ -5249,7 +5349,7 @@ client.tokens.create(
**expires_in:** `typing.Optional[int]` — Token TTL in seconds (max 14400 = 4 hours). Defaults to 4 hours if not specified.
-
+
@@ -5257,7 +5357,7 @@ client.tokens.create(
**scope:** `typing.Optional[str]` — Space-separated scopes to restrict token permissions. Defaults to 'connect:*' if not specified. See https://pipedream.com/docs/connect/api-reference/authentication#connect-token-scopes for more information.
-
+
@@ -5265,7 +5365,7 @@ client.tokens.create(
**success_redirect_uri:** `typing.Optional[str]` — URI to redirect to on success
-
+
@@ -5273,7 +5373,7 @@ client.tokens.create(
**webhook_uri:** `typing.Optional[str]` — Webhook URI for notifications
-
+
@@ -5281,7 +5381,7 @@ client.tokens.create(
**allow_progressive_scopes:** `typing.Optional[bool]` — When true, end users may authorize a subset of the app's OAuth scopes; only the app's functional scopes (needed for the post-OAuth test request) are enforced. Defaults to false.
-
+
@@ -5289,7 +5389,7 @@ client.tokens.create(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -5357,8 +5457,8 @@ client.tokens.validate(
-
-**ctok:** `ConnectToken`
-
+**ctok:** `ConnectToken`
+
@@ -5366,7 +5466,7 @@ client.tokens.validate(
**app_id:** `str` — The app ID to validate against
-
+
@@ -5374,7 +5474,7 @@ client.tokens.validate(
**account_id:** `typing.Optional[str]` — An existing account ID to reconnect. Must belong to the app identified by app_id.
-
+
@@ -5382,7 +5482,7 @@ client.tokens.validate(
**oauth_app_id:** `typing.Optional[str]` — The OAuth app ID to validate against (if the token is for an OAuth app)
-
+
@@ -5390,7 +5490,7 @@ client.tokens.validate(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -5458,7 +5558,7 @@ client.usage.list(
**start_ts:** `int` — Usage window start timestamp (seconds)
-
+
@@ -5466,7 +5566,7 @@ client.usage.list(
**end_ts:** `int` — Usage window end timestamp (seconds)
-
+
@@ -5474,7 +5574,7 @@ client.usage.list(
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -5541,24 +5641,24 @@ client.oauth_tokens.create(
-
-**grant_type:** `typing.Literal`
-
+**grant_type:** `typing.Literal`
+
-
-**client_id:** `str`
-
+**client_id:** `str`
+
-
-**client_secret:** `str`
-
+**client_secret:** `str`
+
@@ -5566,104 +5666,7 @@ client.oauth_tokens.create(
**scope:** `typing.Optional[str]` — Optional space-separated scopes for the access token. Defaults to `*`.
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
-
-
-## Workflows
-client.workflows.invoke(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from pipedream import Pipedream, PipedreamEnvironment
-from pipedream.workflows.client import HTTPAuthType
-
-client = Pipedream(
- client_id="",
- client_secret="",
- environment=PipedreamEnvironment.PROD,
-)
-response = client.workflows.invoke(
- url_or_endpoint="https://your-workflow.m.pipedream.net",
- method="POST",
- body={"key": "value"},
- headers={"Content-Type": "application/json"},
- auth_type=HTTPAuthType.NONE,
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**url_or_endpoint:** `str` — The URL of the workflow's HTTP interface or the ID of the endpoint
-
-
-
-
-
--
-
-**method:** `str` — HTTP method to use (default: "POST")
-
-
-
-
-
--
-
-**body:** `typing.Optional[typing.Any]` — Request body data
-
-
-
-
-
--
-
-**headers:** `typing.Optional[typing.Dict[str, str]]` — HTTP headers to include
-
-
-
-
-
--
-
-**auth_type:** `HTTPAuthType` — Type of authorization (default: HTTPAuthType.NONE)
-
+
@@ -5671,7 +5674,7 @@ response = client.workflows.invoke(
-
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
+
@@ -5682,96 +5685,3 @@ response = client.workflows.invoke(
-client.workflows.invoke_for_external_user(...)
-
--
-
-#### 🔌 Usage
-
-
--
-
-
--
-
-```python
-from pipedream import Pipedream, PipedreamEnvironment
-
-client = Pipedream(
- client_id="",
- client_secret="",
- environment=PipedreamEnvironment.PROD,
-)
-response = client.workflows.invoke_for_external_user(
- url_or_endpoint="en2r1n8a98np7",
- external_user_id="user_123",
- method="POST",
- body={"message": "Hello from external user"},
- headers={"Content-Type": "application/json"},
-)
-
-```
-
-
-
-
-
-#### ⚙️ Parameters
-
-
--
-
-
--
-
-**url_or_endpoint:** `str` — The URL of the workflow's HTTP interface or the ID of the endpoint
-
-
-
-
-
--
-
-**external_user_id:** `str` — The external user ID for whom the workflow is being invoked
-
-
-
-
-
--
-
-**method:** `str` — HTTP method to use (default: "POST")
-
-
-
-
-
--
-
-**body:** `typing.Optional[typing.Any]` — Request body data
-
-
-
-
-
--
-
-**headers:** `typing.Optional[typing.Dict[str, str]]` — HTTP headers to include
-
-
-
-
-
--
-
-**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
-
-
-
-
-
-
-
-
-
-
diff --git a/src/pipedream/__init__.py b/src/pipedream/__init__.py
index 090033e..9e9e73e 100644
--- a/src/pipedream/__init__.py
+++ b/src/pipedream/__init__.py
@@ -162,7 +162,6 @@
triggers,
usage,
users,
- workflows,
)
from ._default_clients import DefaultAioHttpClient, DefaultAsyncHttpxClient
from .actions import ActionsListRequestRegistry
@@ -172,7 +171,6 @@
from .pipedream import AsyncPipedream, Pipedream
from .triggers import TriggersListRequestRegistry
from .version import __version__
- from .workflows.client import AsyncWorkflowsClient, WorkflowsClient
_dynamic_imports: typing.Dict[str, str] = {
"Account": ".types",
"AccountCredentials": ".types",
@@ -186,7 +184,6 @@
"AppsListRequestSortDirection": ".apps",
"AppsListRequestSortKey": ".apps",
"AsyncPipedream": ".pipedream",
- "AsyncWorkflowsClient": ".workflows.client",
"BackendClientOpts": ".types",
"BadRequestError": ".errors",
"ClientOpts": ".types",
@@ -325,7 +322,6 @@
"Webhook": ".types",
"WebhookWithOptionalSigningKey": ".types",
"WebhookWithSigningKey": ".types",
- "WorkflowsClient": ".workflows.client",
"__version__": ".version",
"accounts": ".accounts",
"actions": ".actions",
@@ -342,7 +338,6 @@
"triggers": ".triggers",
"usage": ".usage",
"users": ".users",
- "workflows": ".workflows",
}
@@ -380,7 +375,6 @@ def __dir__():
"AppsListRequestSortDirection",
"AppsListRequestSortKey",
"AsyncPipedream",
- "AsyncWorkflowsClient",
"BackendClientOpts",
"BadRequestError",
"ClientOpts",
@@ -519,7 +513,6 @@ def __dir__():
"Webhook",
"WebhookWithOptionalSigningKey",
"WebhookWithSigningKey",
- "WorkflowsClient",
"__version__",
"accounts",
"actions",
@@ -536,5 +529,4 @@ def __dir__():
"triggers",
"usage",
"users",
- "workflows",
]
diff --git a/src/pipedream/actions/client.py b/src/pipedream/actions/client.py
index d4cdf9d..4f0b9c8 100644
--- a/src/pipedream/actions/client.py
+++ b/src/pipedream/actions/client.py
@@ -66,7 +66,7 @@ def list(
The ID or name slug of the app to filter the actions
registry : typing.Optional[ActionsListRequestRegistry]
- The registry to retrieve actions from. Defaults to 'all' ('public', 'private', or 'all')
+ The registry to retrieve actions from
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -116,10 +116,10 @@ def retrieve(
Parameters
----------
component_id : str
- The key that uniquely identifies the component (e.g., 'slack-send-message')
+ The key that uniquely identifies the component
version : typing.Optional[str]
- Optional semantic version of the component to retrieve (for example '1.0.0')
+ Optional semantic version of the component to retrieve
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -139,8 +139,8 @@ def retrieve(
client_secret="YOUR_CLIENT_SECRET",
)
client.actions.retrieve(
- component_id="component_id",
- version="1.2.3",
+ component_id="slack-send-message",
+ version="1.0.0",
)
"""
_response = self._raw_client.retrieve(component_id, version=version, request_options=request_options)
@@ -176,7 +176,7 @@ def configure_prop(
The name of the prop to configure
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -256,7 +256,7 @@ def reload_props(
The external user ID
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -322,7 +322,7 @@ def run(
The external user ID
version : typing.Optional[str]
- Optional action component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Action component semantic version
configured_props : typing.Optional[ConfiguredProps]
@@ -412,7 +412,7 @@ async def list(
The ID or name slug of the app to filter the actions
registry : typing.Optional[ActionsListRequestRegistry]
- The registry to retrieve actions from. Defaults to 'all' ('public', 'private', or 'all')
+ The registry to retrieve actions from
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -471,10 +471,10 @@ async def retrieve(
Parameters
----------
component_id : str
- The key that uniquely identifies the component (e.g., 'slack-send-message')
+ The key that uniquely identifies the component
version : typing.Optional[str]
- Optional semantic version of the component to retrieve (for example '1.0.0')
+ Optional semantic version of the component to retrieve
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -499,8 +499,8 @@ async def retrieve(
async def main() -> None:
await client.actions.retrieve(
- component_id="component_id",
- version="1.2.3",
+ component_id="slack-send-message",
+ version="1.0.0",
)
@@ -539,7 +539,7 @@ async def configure_prop(
The name of the prop to configure
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -627,7 +627,7 @@ async def reload_props(
The external user ID
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -701,7 +701,7 @@ async def run(
The external user ID
version : typing.Optional[str]
- Optional action component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Action component semantic version
configured_props : typing.Optional[ConfiguredProps]
diff --git a/src/pipedream/actions/raw_client.py b/src/pipedream/actions/raw_client.py
index e9bcf94..49fee15 100644
--- a/src/pipedream/actions/raw_client.py
+++ b/src/pipedream/actions/raw_client.py
@@ -65,7 +65,7 @@ def list(
The ID or name slug of the app to filter the actions
registry : typing.Optional[ActionsListRequestRegistry]
- The registry to retrieve actions from. Defaults to 'all' ('public', 'private', or 'all')
+ The registry to retrieve actions from
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -157,10 +157,10 @@ def retrieve(
Parameters
----------
component_id : str
- The key that uniquely identifies the component (e.g., 'slack-send-message')
+ The key that uniquely identifies the component
version : typing.Optional[str]
- Optional semantic version of the component to retrieve (for example '1.0.0')
+ Optional semantic version of the component to retrieve
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -239,7 +239,7 @@ def configure_prop(
The name of the prop to configure
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -283,6 +283,9 @@ def configure_prop(
"prev_context": prev_context,
"query": query,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -339,7 +342,7 @@ def reload_props(
The external user ID
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -370,6 +373,9 @@ def reload_props(
),
"dynamic_props_id": dynamic_props_id,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -426,7 +432,7 @@ def run(
The external user ID
version : typing.Optional[str]
- Optional action component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Action component semantic version
configured_props : typing.Optional[ConfiguredProps]
@@ -531,7 +537,7 @@ async def list(
The ID or name slug of the app to filter the actions
registry : typing.Optional[ActionsListRequestRegistry]
- The registry to retrieve actions from. Defaults to 'all' ('public', 'private', or 'all')
+ The registry to retrieve actions from
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -626,10 +632,10 @@ async def retrieve(
Parameters
----------
component_id : str
- The key that uniquely identifies the component (e.g., 'slack-send-message')
+ The key that uniquely identifies the component
version : typing.Optional[str]
- Optional semantic version of the component to retrieve (for example '1.0.0')
+ Optional semantic version of the component to retrieve
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -708,7 +714,7 @@ async def configure_prop(
The name of the prop to configure
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -752,6 +758,9 @@ async def configure_prop(
"prev_context": prev_context,
"query": query,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -808,7 +817,7 @@ async def reload_props(
The external user ID
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -839,6 +848,9 @@ async def reload_props(
),
"dynamic_props_id": dynamic_props_id,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -895,7 +907,7 @@ async def run(
The external user ID
version : typing.Optional[str]
- Optional action component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Action component semantic version
configured_props : typing.Optional[ConfiguredProps]
diff --git a/src/pipedream/components/client.py b/src/pipedream/components/client.py
index 883856b..4759c18 100644
--- a/src/pipedream/components/client.py
+++ b/src/pipedream/components/client.py
@@ -66,7 +66,7 @@ def list(
The ID or name slug of the app to filter the components
registry : typing.Optional[ComponentsListRequestRegistry]
- The registry to retrieve components from. Defaults to 'all' ('public', 'private', or 'all')
+ The registry to retrieve components from
component_type : typing.Optional[ComponentType]
The type of the component to filter the components
@@ -127,10 +127,10 @@ def retrieve(
Parameters
----------
component_id : str
- The key that uniquely identifies the component (e.g., 'slack-send-message')
+ The key that uniquely identifies the component
version : typing.Optional[str]
- Optional semantic version of the component to retrieve (for example '1.0.0')
+ Optional semantic version of the component to retrieve
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -150,8 +150,8 @@ def retrieve(
client_secret="YOUR_CLIENT_SECRET",
)
client.components.retrieve(
- component_id="component_id",
- version="1.2.3",
+ component_id="slack-send-message",
+ version="1.0.0",
)
"""
_response = self._raw_client.retrieve(component_id, version=version, request_options=request_options)
@@ -187,7 +187,7 @@ def configure_prop(
The name of the prop to configure
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -267,7 +267,7 @@ def reload_props(
The external user ID
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -359,7 +359,7 @@ async def list(
The ID or name slug of the app to filter the components
registry : typing.Optional[ComponentsListRequestRegistry]
- The registry to retrieve components from. Defaults to 'all' ('public', 'private', or 'all')
+ The registry to retrieve components from
component_type : typing.Optional[ComponentType]
The type of the component to filter the components
@@ -429,10 +429,10 @@ async def retrieve(
Parameters
----------
component_id : str
- The key that uniquely identifies the component (e.g., 'slack-send-message')
+ The key that uniquely identifies the component
version : typing.Optional[str]
- Optional semantic version of the component to retrieve (for example '1.0.0')
+ Optional semantic version of the component to retrieve
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -457,8 +457,8 @@ async def retrieve(
async def main() -> None:
await client.components.retrieve(
- component_id="component_id",
- version="1.2.3",
+ component_id="slack-send-message",
+ version="1.0.0",
)
@@ -497,7 +497,7 @@ async def configure_prop(
The name of the prop to configure
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -585,7 +585,7 @@ async def reload_props(
The external user ID
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
diff --git a/src/pipedream/components/raw_client.py b/src/pipedream/components/raw_client.py
index e122c9f..027abc3 100644
--- a/src/pipedream/components/raw_client.py
+++ b/src/pipedream/components/raw_client.py
@@ -65,7 +65,7 @@ def list(
The ID or name slug of the app to filter the components
registry : typing.Optional[ComponentsListRequestRegistry]
- The registry to retrieve components from. Defaults to 'all' ('public', 'private', or 'all')
+ The registry to retrieve components from
component_type : typing.Optional[ComponentType]
The type of the component to filter the components
@@ -162,10 +162,10 @@ def retrieve(
Parameters
----------
component_id : str
- The key that uniquely identifies the component (e.g., 'slack-send-message')
+ The key that uniquely identifies the component
version : typing.Optional[str]
- Optional semantic version of the component to retrieve (for example '1.0.0')
+ Optional semantic version of the component to retrieve
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -244,7 +244,7 @@ def configure_prop(
The name of the prop to configure
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -288,6 +288,9 @@ def configure_prop(
"prev_context": prev_context,
"query": query,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -344,7 +347,7 @@ def reload_props(
The external user ID
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -375,6 +378,9 @@ def reload_props(
),
"dynamic_props_id": dynamic_props_id,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -446,7 +452,7 @@ async def list(
The ID or name slug of the app to filter the components
registry : typing.Optional[ComponentsListRequestRegistry]
- The registry to retrieve components from. Defaults to 'all' ('public', 'private', or 'all')
+ The registry to retrieve components from
component_type : typing.Optional[ComponentType]
The type of the component to filter the components
@@ -546,10 +552,10 @@ async def retrieve(
Parameters
----------
component_id : str
- The key that uniquely identifies the component (e.g., 'slack-send-message')
+ The key that uniquely identifies the component
version : typing.Optional[str]
- Optional semantic version of the component to retrieve (for example '1.0.0')
+ Optional semantic version of the component to retrieve
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -628,7 +634,7 @@ async def configure_prop(
The name of the prop to configure
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -672,6 +678,9 @@ async def configure_prop(
"prev_context": prev_context,
"query": query,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -728,7 +737,7 @@ async def reload_props(
The external user ID
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -759,6 +768,9 @@ async def reload_props(
),
"dynamic_props_id": dynamic_props_id,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
diff --git a/src/pipedream/pipedream.py b/src/pipedream/pipedream.py
index 53f491d..ed51914 100644
--- a/src/pipedream/pipedream.py
+++ b/src/pipedream/pipedream.py
@@ -1,131 +1,86 @@
+# This file was auto-generated by Fern from our API Definition.
+
import os
import typing
import httpx
-
from .client import AsyncClient, Client
from .core.logging import LogConfig, Logger
+from .environment import PipedreamEnvironment
from .types.project_environment import ProjectEnvironment
-from .workflows.client import AsyncWorkflowsClient, WorkflowsClient
-
-_PROD_BASE_URL = "https://api.pipedream.com"
class Pipedream(Client):
-
+ @typing.overload
def __init__(
self,
*,
- access_token: typing.Optional[str] = os.getenv("PIPEDREAM_ACCESS_TOKEN"),
+ base_url: typing.Optional[str] = None,
+ environment: PipedreamEnvironment = PipedreamEnvironment.PROD,
+ project_id: str,
+ project_environment: typing.Optional[ProjectEnvironment] = os.getenv("PIPEDREAM_PROJECT_ENVIRONMENT"),
+ headers: typing.Optional[typing.Dict[str, str]] = None,
+ timeout: typing.Optional[float] = None,
+ max_retries: typing.Optional[int] = None,
+ follow_redirects: typing.Optional[bool] = True,
+ httpx_client: typing.Optional[httpx.Client] = None,
+ logging: typing.Optional[typing.Union[LogConfig, Logger]] = None,
client_id: typing.Optional[str] = os.getenv("PIPEDREAM_CLIENT_ID"),
client_secret: typing.Optional[str] = os.getenv("PIPEDREAM_CLIENT_SECRET"),
- project_id: typing.Optional[str] = os.getenv("PIPEDREAM_PROJECT_ID"),
- project_environment: typing.Optional[ProjectEnvironment] = os.getenv(
- "PIPEDREAM_PROJECT_ENVIRONMENT",
- "production",
- ),
+ ): ...
+ @typing.overload
+ def __init__(
+ self,
+ *,
base_url: typing.Optional[str] = None,
- workflow_domain: typing.Optional[str] = None,
+ environment: PipedreamEnvironment = PipedreamEnvironment.PROD,
+ project_id: str,
+ project_environment: typing.Optional[ProjectEnvironment] = os.getenv("PIPEDREAM_PROJECT_ENVIRONMENT"),
headers: typing.Optional[typing.Dict[str, str]] = None,
timeout: typing.Optional[float] = None,
max_retries: typing.Optional[int] = None,
follow_redirects: typing.Optional[bool] = True,
httpx_client: typing.Optional[httpx.Client] = None,
logging: typing.Optional[typing.Union[LogConfig, Logger]] = None,
- ):
- if not project_id:
- raise ValueError("Project ID is required")
-
- resolved_base_url = base_url or os.environ.get("PIPEDREAM_BASE_URL") or _PROD_BASE_URL
- resolved_workflow_domain = (
- workflow_domain or os.environ.get("PIPEDREAM_WORKFLOW_DOMAIN") or "m.pipedream.net"
- )
-
- common_kwargs: typing.Dict[str, typing.Any] = dict(
- base_url=resolved_base_url,
- project_id=project_id,
- project_environment=project_environment,
- headers=headers,
- timeout=timeout,
- max_retries=max_retries,
- follow_redirects=follow_redirects,
- httpx_client=httpx_client,
- logging=logging,
- )
-
- if access_token:
- super().__init__(token=(lambda: access_token), **common_kwargs)
- else:
- super().__init__(client_id=client_id, client_secret=client_secret, **common_kwargs)
-
- self.workflows = WorkflowsClient(
- client_wrapper=self._client_wrapper,
- workflow_domain=resolved_workflow_domain,
- )
-
- @property
- def raw_access_token(self) -> typing.Optional[str]:
- """
- Returns an access token that can be used to authenticate API requests
- """
- return self._client_wrapper._get_token()
+ token: typing.Callable[[], str],
+ ): ...
+ def __init__(self, **kwargs: typing.Any):
+ super().__init__(**kwargs)
class AsyncPipedream(AsyncClient):
-
+ @typing.overload
def __init__(
self,
*,
- access_token: typing.Optional[str] = os.getenv("PIPEDREAM_ACCESS_TOKEN"),
+ base_url: typing.Optional[str] = None,
+ environment: PipedreamEnvironment = PipedreamEnvironment.PROD,
+ project_id: str,
+ project_environment: typing.Optional[ProjectEnvironment] = os.getenv("PIPEDREAM_PROJECT_ENVIRONMENT"),
+ headers: typing.Optional[typing.Dict[str, str]] = None,
+ timeout: typing.Optional[float] = None,
+ max_retries: typing.Optional[int] = None,
+ follow_redirects: typing.Optional[bool] = True,
+ httpx_client: typing.Optional[httpx.AsyncClient] = None,
+ logging: typing.Optional[typing.Union[LogConfig, Logger]] = None,
client_id: typing.Optional[str] = os.getenv("PIPEDREAM_CLIENT_ID"),
client_secret: typing.Optional[str] = os.getenv("PIPEDREAM_CLIENT_SECRET"),
- project_id: typing.Optional[str] = os.getenv("PIPEDREAM_PROJECT_ID"),
- project_environment: typing.Optional[ProjectEnvironment] = os.getenv(
- "PIPEDREAM_PROJECT_ENVIRONMENT",
- "production",
- ),
+ ): ...
+ @typing.overload
+ def __init__(
+ self,
+ *,
base_url: typing.Optional[str] = None,
- workflow_domain: typing.Optional[str] = None,
+ environment: PipedreamEnvironment = PipedreamEnvironment.PROD,
+ project_id: str,
+ project_environment: typing.Optional[ProjectEnvironment] = os.getenv("PIPEDREAM_PROJECT_ENVIRONMENT"),
headers: typing.Optional[typing.Dict[str, str]] = None,
timeout: typing.Optional[float] = None,
max_retries: typing.Optional[int] = None,
follow_redirects: typing.Optional[bool] = True,
httpx_client: typing.Optional[httpx.AsyncClient] = None,
logging: typing.Optional[typing.Union[LogConfig, Logger]] = None,
- ):
- if not project_id:
- raise ValueError("Project ID is required")
-
- resolved_base_url = base_url or os.environ.get("PIPEDREAM_BASE_URL") or _PROD_BASE_URL
- resolved_workflow_domain = (
- workflow_domain or os.environ.get("PIPEDREAM_WORKFLOW_DOMAIN") or "m.pipedream.net"
- )
-
- common_kwargs: typing.Dict[str, typing.Any] = dict(
- base_url=resolved_base_url,
- project_id=project_id,
- project_environment=project_environment,
- headers=headers,
- timeout=timeout,
- max_retries=max_retries,
- follow_redirects=follow_redirects,
- httpx_client=httpx_client,
- logging=logging,
- )
-
- if access_token:
- super().__init__(token=(lambda: access_token), **common_kwargs)
- else:
- super().__init__(client_id=client_id, client_secret=client_secret, **common_kwargs)
-
- self.workflows = AsyncWorkflowsClient(
- client_wrapper=self._client_wrapper,
- workflow_domain=resolved_workflow_domain,
- )
-
- @property
- def raw_access_token(self) -> typing.Optional[str]:
- """
- Returns an access token that can be used to authenticate API requests
- """
- return self._client_wrapper._get_token()
+ token: typing.Callable[[], str],
+ ): ...
+ def __init__(self, **kwargs: typing.Any):
+ super().__init__(**kwargs)
diff --git a/src/pipedream/proxy/client.py b/src/pipedream/proxy/client.py
index 1bff6ce..38bbf5c 100644
--- a/src/pipedream/proxy/client.py
+++ b/src/pipedream/proxy/client.py
@@ -1,85 +1,14 @@
-import base64
+# This file was auto-generated by Fern from our API Definition.
+
import typing
-from collections.abc import AsyncIterator, Iterator
-from urllib.parse import parse_qs, urlencode, urlparse, urlunparse
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
from ..core.request_options import RequestOptions
-from ..types.proxy_response import ProxyResponse
from .raw_client import AsyncRawProxyClient, RawProxyClient
# this is used as the default value for optional parameters
OMIT = typing.cast(typing.Any, ...)
-_SyncResult = typing.Union[ProxyResponse, typing.Iterator[bytes], None]
-_AsyncResult = typing.Union[ProxyResponse, typing.AsyncIterator[bytes], None]
-
-
-def _add_params_to_url(url: str, params: typing.Dict[str, typing.Any]) -> str:
- parsed = urlparse(url)
- existing_params = parse_qs(parsed.query)
- for key, value in params.items():
- existing_params[key] = value if isinstance(value, list) else [value]
- new_query = urlencode(existing_params, doseq=True)
- return urlunparse(parsed._replace(query=new_query))
-
-
-def _prepare_request(
- url: str,
- *,
- headers: typing.Optional[typing.Dict[str, typing.Any]],
- params: typing.Optional[typing.Dict[str, typing.Any]],
-) -> typing.Tuple[str, RequestOptions]:
- if params:
- url = _add_params_to_url(url, params)
- url_64 = base64.urlsafe_b64encode(url.encode()).decode()
- downstream_headers = {
- f"x-pd-proxy-{name}": value for name, value in (headers or {}).items()
- }
- return url_64, RequestOptions(additional_headers=downstream_headers)
-
-
-def _consume_sync(ctx: typing.ContextManager) -> _SyncResult:
- """
- Open the raw proxy context, peek at the response payload, and either
- return the parsed ProxyResponse (fully-buffered JSON) or a generator that
- streams the binary body and closes the underlying response when exhausted.
- """
- raw = ctx.__enter__()
- data = raw.data
- if not isinstance(data, Iterator):
- ctx.__exit__(None, None, None)
- return data
-
- def _stream() -> typing.Iterator[bytes]:
- try:
- yield from data
- finally:
- ctx.__exit__(None, None, None)
-
- return _stream()
-
-
-async def _consume_async(ctx: typing.AsyncContextManager) -> _AsyncResult:
- """
- Async counterpart of `_consume_sync` — returns either a parsed
- ProxyResponse or an async generator that streams the binary body.
- """
- raw = await ctx.__aenter__()
- data = raw.data
- if not isinstance(data, AsyncIterator):
- await ctx.__aexit__(None, None, None)
- return data
-
- async def _stream() -> typing.AsyncIterator[bytes]:
- try:
- async for chunk in data:
- yield chunk
- finally:
- await ctx.__aexit__(None, None, None)
-
- return _stream()
-
class ProxyClient:
def __init__(self, *, client_wrapper: SyncClientWrapper):
@@ -98,20 +27,19 @@ def with_raw_response(self) -> RawProxyClient:
def get(
self,
- url: str,
+ url_64: str,
*,
external_user_id: str,
account_id: str,
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
- ) -> _SyncResult:
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> typing.Iterator[bytes]:
"""
- Forward an authenticated GET request to an external API using an external user's account credentials.
+ Forward an authenticated GET request to an external API using an external user's account credentials
Parameters
----------
- url : str
- Target URL
+ url_64 : str
+ Base64-encoded target URL
external_user_id : str
The external user ID for the proxy request
@@ -119,137 +47,257 @@ def get(
account_id : str
The account ID to use for authentication
- headers : typing.Optional[typing.Dict[str, typing.Any]]
- Additional headers to include in the request
-
- params : typing.Optional[typing.Dict[str, typing.Any]]
- Query parameters to include in the request
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
Returns
-------
- typing.Union[ProxyResponse, typing.Iterator[bytes], None]
- ProxyResponse for JSON content, Iterator[bytes] for binary content, None for empty bodies.
+ typing.Iterator[bytes]
+ proxy request successful
Examples
--------
- from pipedream import Pipedream, PipedreamEnvironment
+ from pipedream import Pipedream
client = Pipedream(
- client_id="",
- client_secret="",
- environment=PipedreamEnvironment.PROD,
+ project_id="YOUR_PROJECT_ID",
+ client_id="YOUR_CLIENT_ID",
+ client_secret="YOUR_CLIENT_SECRET",
)
client.proxy.get(
- url="https://example.com/api/endpoint",
+ url_64="url_64",
external_user_id="external_user_id",
account_id="account_id",
- headers={"Extra-Downstream-Header": "some value"},
- params={"limit": 10},
)
"""
- url_64, request_options = _prepare_request(url, headers=headers, params=params)
- return _consume_sync(
- self._raw_client.get(
- url_64,
- external_user_id=external_user_id,
- account_id=account_id,
- request_options=request_options,
- )
- )
+ with self._raw_client.get(
+ url_64, external_user_id=external_user_id, account_id=account_id, request_options=request_options
+ ) as r:
+ yield from r.data
def post(
self,
- url: str,
+ url_64: str,
*,
external_user_id: str,
account_id: str,
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
- body: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None,
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
- ) -> _SyncResult:
- """
- Forward an authenticated POST request to an external API using an external user's account credentials.
+ request: typing.Dict[str, typing.Any],
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> typing.Iterator[bytes]:
"""
- url_64, request_options = _prepare_request(url, headers=headers, params=params)
- return _consume_sync(
- self._raw_client.post(
- url_64,
- external_user_id=external_user_id,
- account_id=account_id,
- request=body or {},
- request_options=request_options,
- )
+ Forward an authenticated POST request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request : typing.Dict[str, typing.Any]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.Iterator[bytes]
+ proxy request successful
+
+ Examples
+ --------
+ from pipedream import Pipedream
+
+ client = Pipedream(
+ project_id="YOUR_PROJECT_ID",
+ client_id="YOUR_CLIENT_ID",
+ client_secret="YOUR_CLIENT_SECRET",
)
+ client.proxy.post(
+ url_64="url_64",
+ external_user_id="external_user_id",
+ account_id="account_id",
+ request={"string": {"key": "value"}},
+ )
+ """
+ with self._raw_client.post(
+ url_64,
+ external_user_id=external_user_id,
+ account_id=account_id,
+ request=request,
+ request_options=request_options,
+ ) as r:
+ yield from r.data
def put(
self,
- url: str,
+ url_64: str,
*,
external_user_id: str,
account_id: str,
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
- body: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None,
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
- ) -> _SyncResult:
- """
- Forward an authenticated PUT request to an external API using an external user's account credentials.
+ request: typing.Dict[str, typing.Any],
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> typing.Iterator[bytes]:
"""
- url_64, request_options = _prepare_request(url, headers=headers, params=params)
- return _consume_sync(
- self._raw_client.put(
- url_64,
- external_user_id=external_user_id,
- account_id=account_id,
- request=body or {},
- request_options=request_options,
- )
+ Forward an authenticated PUT request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request : typing.Dict[str, typing.Any]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.Iterator[bytes]
+ proxy request successful
+
+ Examples
+ --------
+ from pipedream import Pipedream
+
+ client = Pipedream(
+ project_id="YOUR_PROJECT_ID",
+ client_id="YOUR_CLIENT_ID",
+ client_secret="YOUR_CLIENT_SECRET",
)
+ client.proxy.put(
+ url_64="url_64",
+ external_user_id="external_user_id",
+ account_id="account_id",
+ request={"string": {"key": "value"}},
+ )
+ """
+ with self._raw_client.put(
+ url_64,
+ external_user_id=external_user_id,
+ account_id=account_id,
+ request=request,
+ request_options=request_options,
+ ) as r:
+ yield from r.data
- def patch(
+ def delete(
self,
- url: str,
+ url_64: str,
*,
external_user_id: str,
account_id: str,
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
- body: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None,
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
- ) -> _SyncResult:
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> typing.Iterator[bytes]:
"""
- Forward an authenticated PATCH request to an external API using an external user's account credentials.
- """
- url_64, request_options = _prepare_request(url, headers=headers, params=params)
- return _consume_sync(
- self._raw_client.patch(
- url_64,
- external_user_id=external_user_id,
- account_id=account_id,
- request=body or {},
- request_options=request_options,
- )
+ Forward an authenticated DELETE request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.Iterator[bytes]
+ proxy request successful
+
+ Examples
+ --------
+ from pipedream import Pipedream
+
+ client = Pipedream(
+ project_id="YOUR_PROJECT_ID",
+ client_id="YOUR_CLIENT_ID",
+ client_secret="YOUR_CLIENT_SECRET",
)
+ client.proxy.delete(
+ url_64="url_64",
+ external_user_id="external_user_id",
+ account_id="account_id",
+ )
+ """
+ with self._raw_client.delete(
+ url_64, external_user_id=external_user_id, account_id=account_id, request_options=request_options
+ ) as r:
+ yield from r.data
- def delete(
+ def patch(
self,
- url: str,
+ url_64: str,
*,
external_user_id: str,
account_id: str,
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
- ) -> _SyncResult:
- """
- Forward an authenticated DELETE request to an external API using an external user's account credentials.
+ request: typing.Dict[str, typing.Any],
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> typing.Iterator[bytes]:
"""
- url_64, request_options = _prepare_request(url, headers=headers, params=params)
- return _consume_sync(
- self._raw_client.delete(
- url_64,
- external_user_id=external_user_id,
- account_id=account_id,
- request_options=request_options,
- )
+ Forward an authenticated PATCH request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request : typing.Dict[str, typing.Any]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.Iterator[bytes]
+ proxy request successful
+
+ Examples
+ --------
+ from pipedream import Pipedream
+
+ client = Pipedream(
+ project_id="YOUR_PROJECT_ID",
+ client_id="YOUR_CLIENT_ID",
+ client_secret="YOUR_CLIENT_SECRET",
)
+ client.proxy.patch(
+ url_64="url_64",
+ external_user_id="external_user_id",
+ account_id="account_id",
+ request={"string": {"key": "value"}},
+ )
+ """
+ with self._raw_client.patch(
+ url_64,
+ external_user_id=external_user_id,
+ account_id=account_id,
+ request=request,
+ request_options=request_options,
+ ) as r:
+ yield from r.data
class AsyncProxyClient:
@@ -269,116 +317,319 @@ def with_raw_response(self) -> AsyncRawProxyClient:
async def get(
self,
- url: str,
+ url_64: str,
*,
external_user_id: str,
account_id: str,
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
- ) -> _AsyncResult:
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> typing.AsyncIterator[bytes]:
"""
- Forward an authenticated GET request to an external API using an external user's account credentials.
- """
- url_64, request_options = _prepare_request(url, headers=headers, params=params)
- return await _consume_async(
- self._raw_client.get(
- url_64,
- external_user_id=external_user_id,
- account_id=account_id,
- request_options=request_options,
- )
+ Forward an authenticated GET request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.AsyncIterator[bytes]
+ proxy request successful
+
+ Examples
+ --------
+ import asyncio
+
+ from pipedream import AsyncPipedream
+
+ client = AsyncPipedream(
+ project_id="YOUR_PROJECT_ID",
+ client_id="YOUR_CLIENT_ID",
+ client_secret="YOUR_CLIENT_SECRET",
)
+
+ async def main() -> None:
+ await client.proxy.get(
+ url_64="url_64",
+ external_user_id="external_user_id",
+ account_id="account_id",
+ )
+
+
+ asyncio.run(main())
+ """
+ async with self._raw_client.get(
+ url_64, external_user_id=external_user_id, account_id=account_id, request_options=request_options
+ ) as r:
+ async for _chunk in r.data:
+ yield _chunk
+
async def post(
self,
- url: str,
+ url_64: str,
*,
external_user_id: str,
account_id: str,
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
- body: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None,
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
- ) -> _AsyncResult:
- """
- Forward an authenticated POST request to an external API using an external user's account credentials.
+ request: typing.Dict[str, typing.Any],
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> typing.AsyncIterator[bytes]:
"""
- url_64, request_options = _prepare_request(url, headers=headers, params=params)
- return await _consume_async(
- self._raw_client.post(
- url_64,
- external_user_id=external_user_id,
- account_id=account_id,
- request=body or {},
- request_options=request_options,
- )
+ Forward an authenticated POST request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request : typing.Dict[str, typing.Any]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.AsyncIterator[bytes]
+ proxy request successful
+
+ Examples
+ --------
+ import asyncio
+
+ from pipedream import AsyncPipedream
+
+ client = AsyncPipedream(
+ project_id="YOUR_PROJECT_ID",
+ client_id="YOUR_CLIENT_ID",
+ client_secret="YOUR_CLIENT_SECRET",
)
+
+ async def main() -> None:
+ await client.proxy.post(
+ url_64="url_64",
+ external_user_id="external_user_id",
+ account_id="account_id",
+ request={"string": {"key": "value"}},
+ )
+
+
+ asyncio.run(main())
+ """
+ async with self._raw_client.post(
+ url_64,
+ external_user_id=external_user_id,
+ account_id=account_id,
+ request=request,
+ request_options=request_options,
+ ) as r:
+ async for _chunk in r.data:
+ yield _chunk
+
async def put(
self,
- url: str,
+ url_64: str,
*,
external_user_id: str,
account_id: str,
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
- body: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None,
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
- ) -> _AsyncResult:
- """
- Forward an authenticated PUT request to an external API using an external user's account credentials.
+ request: typing.Dict[str, typing.Any],
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> typing.AsyncIterator[bytes]:
"""
- url_64, request_options = _prepare_request(url, headers=headers, params=params)
- return await _consume_async(
- self._raw_client.put(
- url_64,
- external_user_id=external_user_id,
- account_id=account_id,
- request=body or {},
- request_options=request_options,
- )
+ Forward an authenticated PUT request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request : typing.Dict[str, typing.Any]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.AsyncIterator[bytes]
+ proxy request successful
+
+ Examples
+ --------
+ import asyncio
+
+ from pipedream import AsyncPipedream
+
+ client = AsyncPipedream(
+ project_id="YOUR_PROJECT_ID",
+ client_id="YOUR_CLIENT_ID",
+ client_secret="YOUR_CLIENT_SECRET",
)
- async def patch(
+
+ async def main() -> None:
+ await client.proxy.put(
+ url_64="url_64",
+ external_user_id="external_user_id",
+ account_id="account_id",
+ request={"string": {"key": "value"}},
+ )
+
+
+ asyncio.run(main())
+ """
+ async with self._raw_client.put(
+ url_64,
+ external_user_id=external_user_id,
+ account_id=account_id,
+ request=request,
+ request_options=request_options,
+ ) as r:
+ async for _chunk in r.data:
+ yield _chunk
+
+ async def delete(
self,
- url: str,
+ url_64: str,
*,
external_user_id: str,
account_id: str,
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
- body: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None,
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
- ) -> _AsyncResult:
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> typing.AsyncIterator[bytes]:
"""
- Forward an authenticated PATCH request to an external API using an external user's account credentials.
- """
- url_64, request_options = _prepare_request(url, headers=headers, params=params)
- return await _consume_async(
- self._raw_client.patch(
- url_64,
- external_user_id=external_user_id,
- account_id=account_id,
- request=body or {},
- request_options=request_options,
- )
+ Forward an authenticated DELETE request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.AsyncIterator[bytes]
+ proxy request successful
+
+ Examples
+ --------
+ import asyncio
+
+ from pipedream import AsyncPipedream
+
+ client = AsyncPipedream(
+ project_id="YOUR_PROJECT_ID",
+ client_id="YOUR_CLIENT_ID",
+ client_secret="YOUR_CLIENT_SECRET",
)
- async def delete(
+
+ async def main() -> None:
+ await client.proxy.delete(
+ url_64="url_64",
+ external_user_id="external_user_id",
+ account_id="account_id",
+ )
+
+
+ asyncio.run(main())
+ """
+ async with self._raw_client.delete(
+ url_64, external_user_id=external_user_id, account_id=account_id, request_options=request_options
+ ) as r:
+ async for _chunk in r.data:
+ yield _chunk
+
+ async def patch(
self,
- url: str,
+ url_64: str,
*,
external_user_id: str,
account_id: str,
- headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
- params: typing.Optional[typing.Dict[str, typing.Any]] = None,
- ) -> _AsyncResult:
- """
- Forward an authenticated DELETE request to an external API using an external user's account credentials.
+ request: typing.Dict[str, typing.Any],
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> typing.AsyncIterator[bytes]:
"""
- url_64, request_options = _prepare_request(url, headers=headers, params=params)
- return await _consume_async(
- self._raw_client.delete(
- url_64,
- external_user_id=external_user_id,
- account_id=account_id,
- request_options=request_options,
- )
+ Forward an authenticated PATCH request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request : typing.Dict[str, typing.Any]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.AsyncIterator[bytes]
+ proxy request successful
+
+ Examples
+ --------
+ import asyncio
+
+ from pipedream import AsyncPipedream
+
+ client = AsyncPipedream(
+ project_id="YOUR_PROJECT_ID",
+ client_id="YOUR_CLIENT_ID",
+ client_secret="YOUR_CLIENT_SECRET",
)
+
+
+ async def main() -> None:
+ await client.proxy.patch(
+ url_64="url_64",
+ external_user_id="external_user_id",
+ account_id="account_id",
+ request={"string": {"key": "value"}},
+ )
+
+
+ asyncio.run(main())
+ """
+ async with self._raw_client.patch(
+ url_64,
+ external_user_id=external_user_id,
+ account_id=account_id,
+ request=request,
+ request_options=request_options,
+ ) as r:
+ async for _chunk in r.data:
+ yield _chunk
diff --git a/src/pipedream/proxy/raw_client.py b/src/pipedream/proxy/raw_client.py
index d9fc875..1af958d 100644
--- a/src/pipedream/proxy/raw_client.py
+++ b/src/pipedream/proxy/raw_client.py
@@ -1,9 +1,9 @@
+# This file was auto-generated by Fern from our API Definition.
+
import contextlib
import typing
from json.decoder import JSONDecodeError
-from pydantic import ValidationError
-
from ..core.api_error import ApiError
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
from ..core.http_response import AsyncHttpResponse, HttpResponse
@@ -12,25 +12,11 @@
from ..core.pydantic_utilities import parse_obj_as
from ..core.request_options import RequestOptions
from ..errors.too_many_requests_error import TooManyRequestsError
-from ..types.proxy_response import ProxyResponse
+from pydantic import ValidationError
# this is used as the default value for optional parameters
OMIT = typing.cast(typing.Any, ...)
-_ProxyData = typing.Optional[typing.Union[ProxyResponse, typing.Iterator[bytes]]]
-_AsyncProxyData = typing.Optional[typing.Union[ProxyResponse, typing.AsyncIterator[bytes]]]
-
-
-def _is_json_content_type(content_type: str) -> bool:
- return "application/json" in content_type or not content_type
-
-
-def _decode_error_body(_response: typing.Any) -> typing.Any:
- error_content_type = _response.headers.get("content-type", "").lower()
- if "application/json" in error_content_type:
- return _response.json()
- return _response.text
-
class RawProxyClient:
def __init__(self, *, client_wrapper: SyncClientWrapper):
@@ -44,9 +30,9 @@ def get(
external_user_id: str,
account_id: str,
request_options: typing.Optional[RequestOptions] = None,
- ) -> typing.Iterator[HttpResponse[_ProxyData]]:
+ ) -> typing.Iterator[HttpResponse[typing.Iterator[bytes]]]:
"""
- Forward an authenticated GET request to an external API using an external user's account credentials.
+ Forward an authenticated GET request to an external API using an external user's account credentials
Parameters
----------
@@ -64,7 +50,7 @@ def get(
Returns
-------
- typing.Iterator[HttpResponse[typing.Optional[typing.Union[ProxyResponse, typing.Iterator[bytes]]]]]
+ typing.Iterator[HttpResponse[typing.Iterator[bytes]]]
proxy request successful
"""
with self._client_wrapper.httpx_client.stream(
@@ -76,7 +62,41 @@ def get(
},
request_options=request_options,
) as _response:
- yield _handle_sync_response(_response, request_options)
+
+ def _stream() -> HttpResponse[typing.Iterator[bytes]]:
+ try:
+ if 200 <= _response.status_code < 300:
+ _chunk_size = request_options.get("chunk_size", None) if request_options is not None else None
+ return HttpResponse(
+ response=_response, data=(_chunk for _chunk in _response.iter_bytes(chunk_size=_chunk_size))
+ )
+ _response.read()
+ if _response.status_code == 429:
+ raise TooManyRequestsError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ parse_obj_as(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code,
+ headers=dict(_response.headers),
+ body=_response.json(),
+ cause=e,
+ )
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ yield _stream()
@contextlib.contextmanager
def post(
@@ -85,11 +105,32 @@ def post(
*,
external_user_id: str,
account_id: str,
- request: typing.Dict[str, typing.Optional[typing.Any]],
+ request: typing.Dict[str, typing.Any],
request_options: typing.Optional[RequestOptions] = None,
- ) -> typing.Iterator[HttpResponse[_ProxyData]]:
+ ) -> typing.Iterator[HttpResponse[typing.Iterator[bytes]]]:
"""
- Forward an authenticated POST request to an external API using an external user's account credentials.
+ Forward an authenticated POST request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request : typing.Dict[str, typing.Any]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.Iterator[HttpResponse[typing.Iterator[bytes]]]
+ proxy request successful
"""
with self._client_wrapper.httpx_client.stream(
f"v1/connect/{encode_path_param(self._client_wrapper._project_id)}/proxy/{encode_path_param(url_64)}",
@@ -99,11 +140,47 @@ def post(
"account_id": account_id,
},
json=request,
- headers={"content-type": "application/json"},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
) as _response:
- yield _handle_sync_response(_response, request_options)
+
+ def _stream() -> HttpResponse[typing.Iterator[bytes]]:
+ try:
+ if 200 <= _response.status_code < 300:
+ _chunk_size = request_options.get("chunk_size", None) if request_options is not None else None
+ return HttpResponse(
+ response=_response, data=(_chunk for _chunk in _response.iter_bytes(chunk_size=_chunk_size))
+ )
+ _response.read()
+ if _response.status_code == 429:
+ raise TooManyRequestsError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ parse_obj_as(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code,
+ headers=dict(_response.headers),
+ body=_response.json(),
+ cause=e,
+ )
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ yield _stream()
@contextlib.contextmanager
def put(
@@ -112,11 +189,32 @@ def put(
*,
external_user_id: str,
account_id: str,
- request: typing.Dict[str, typing.Optional[typing.Any]],
+ request: typing.Dict[str, typing.Any],
request_options: typing.Optional[RequestOptions] = None,
- ) -> typing.Iterator[HttpResponse[_ProxyData]]:
+ ) -> typing.Iterator[HttpResponse[typing.Iterator[bytes]]]:
"""
- Forward an authenticated PUT request to an external API using an external user's account credentials.
+ Forward an authenticated PUT request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request : typing.Dict[str, typing.Any]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.Iterator[HttpResponse[typing.Iterator[bytes]]]
+ proxy request successful
"""
with self._client_wrapper.httpx_client.stream(
f"v1/connect/{encode_path_param(self._client_wrapper._project_id)}/proxy/{encode_path_param(url_64)}",
@@ -126,61 +224,207 @@ def put(
"account_id": account_id,
},
json=request,
- headers={"content-type": "application/json"},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
) as _response:
- yield _handle_sync_response(_response, request_options)
+
+ def _stream() -> HttpResponse[typing.Iterator[bytes]]:
+ try:
+ if 200 <= _response.status_code < 300:
+ _chunk_size = request_options.get("chunk_size", None) if request_options is not None else None
+ return HttpResponse(
+ response=_response, data=(_chunk for _chunk in _response.iter_bytes(chunk_size=_chunk_size))
+ )
+ _response.read()
+ if _response.status_code == 429:
+ raise TooManyRequestsError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ parse_obj_as(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code,
+ headers=dict(_response.headers),
+ body=_response.json(),
+ cause=e,
+ )
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ yield _stream()
@contextlib.contextmanager
- def patch(
+ def delete(
self,
url_64: str,
*,
external_user_id: str,
account_id: str,
- request: typing.Dict[str, typing.Optional[typing.Any]],
request_options: typing.Optional[RequestOptions] = None,
- ) -> typing.Iterator[HttpResponse[_ProxyData]]:
+ ) -> typing.Iterator[HttpResponse[typing.Iterator[bytes]]]:
"""
- Forward an authenticated PATCH request to an external API using an external user's account credentials.
+ Forward an authenticated DELETE request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.Iterator[HttpResponse[typing.Iterator[bytes]]]
+ proxy request successful
"""
with self._client_wrapper.httpx_client.stream(
f"v1/connect/{encode_path_param(self._client_wrapper._project_id)}/proxy/{encode_path_param(url_64)}",
- method="PATCH",
+ method="DELETE",
params={
"external_user_id": external_user_id,
"account_id": account_id,
},
- json=request,
- headers={"content-type": "application/json"},
request_options=request_options,
- omit=OMIT,
) as _response:
- yield _handle_sync_response(_response, request_options)
+
+ def _stream() -> HttpResponse[typing.Iterator[bytes]]:
+ try:
+ if 200 <= _response.status_code < 300:
+ _chunk_size = request_options.get("chunk_size", None) if request_options is not None else None
+ return HttpResponse(
+ response=_response, data=(_chunk for _chunk in _response.iter_bytes(chunk_size=_chunk_size))
+ )
+ _response.read()
+ if _response.status_code == 429:
+ raise TooManyRequestsError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ parse_obj_as(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code,
+ headers=dict(_response.headers),
+ body=_response.json(),
+ cause=e,
+ )
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ yield _stream()
@contextlib.contextmanager
- def delete(
+ def patch(
self,
url_64: str,
*,
external_user_id: str,
account_id: str,
+ request: typing.Dict[str, typing.Any],
request_options: typing.Optional[RequestOptions] = None,
- ) -> typing.Iterator[HttpResponse[_ProxyData]]:
+ ) -> typing.Iterator[HttpResponse[typing.Iterator[bytes]]]:
"""
- Forward an authenticated DELETE request to an external API using an external user's account credentials.
+ Forward an authenticated PATCH request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request : typing.Dict[str, typing.Any]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.Iterator[HttpResponse[typing.Iterator[bytes]]]
+ proxy request successful
"""
with self._client_wrapper.httpx_client.stream(
f"v1/connect/{encode_path_param(self._client_wrapper._project_id)}/proxy/{encode_path_param(url_64)}",
- method="DELETE",
+ method="PATCH",
params={
"external_user_id": external_user_id,
"account_id": account_id,
},
+ json=request,
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
+ omit=OMIT,
) as _response:
- yield _handle_sync_response(_response, request_options)
+
+ def _stream() -> HttpResponse[typing.Iterator[bytes]]:
+ try:
+ if 200 <= _response.status_code < 300:
+ _chunk_size = request_options.get("chunk_size", None) if request_options is not None else None
+ return HttpResponse(
+ response=_response, data=(_chunk for _chunk in _response.iter_bytes(chunk_size=_chunk_size))
+ )
+ _response.read()
+ if _response.status_code == 429:
+ raise TooManyRequestsError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ parse_obj_as(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code,
+ headers=dict(_response.headers),
+ body=_response.json(),
+ cause=e,
+ )
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ yield _stream()
class AsyncRawProxyClient:
@@ -195,9 +439,28 @@ async def get(
external_user_id: str,
account_id: str,
request_options: typing.Optional[RequestOptions] = None,
- ) -> typing.AsyncIterator[AsyncHttpResponse[_AsyncProxyData]]:
+ ) -> typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]:
"""
- Forward an authenticated GET request to an external API using an external user's account credentials.
+ Forward an authenticated GET request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]
+ proxy request successful
"""
async with self._client_wrapper.httpx_client.stream(
f"v1/connect/{encode_path_param(self._client_wrapper._project_id)}/proxy/{encode_path_param(url_64)}",
@@ -208,7 +471,42 @@ async def get(
},
request_options=request_options,
) as _response:
- yield await _handle_async_response(_response, request_options)
+
+ async def _stream() -> AsyncHttpResponse[typing.AsyncIterator[bytes]]:
+ try:
+ if 200 <= _response.status_code < 300:
+ _chunk_size = request_options.get("chunk_size", None) if request_options is not None else None
+ return AsyncHttpResponse(
+ response=_response,
+ data=(_chunk async for _chunk in _response.aiter_bytes(chunk_size=_chunk_size)),
+ )
+ await _response.aread()
+ if _response.status_code == 429:
+ raise TooManyRequestsError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ parse_obj_as(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code,
+ headers=dict(_response.headers),
+ body=_response.json(),
+ cause=e,
+ )
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ yield await _stream()
@contextlib.asynccontextmanager
async def post(
@@ -217,11 +515,32 @@ async def post(
*,
external_user_id: str,
account_id: str,
- request: typing.Dict[str, typing.Optional[typing.Any]],
+ request: typing.Dict[str, typing.Any],
request_options: typing.Optional[RequestOptions] = None,
- ) -> typing.AsyncIterator[AsyncHttpResponse[_AsyncProxyData]]:
+ ) -> typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]:
"""
- Forward an authenticated POST request to an external API using an external user's account credentials.
+ Forward an authenticated POST request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request : typing.Dict[str, typing.Any]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]
+ proxy request successful
"""
async with self._client_wrapper.httpx_client.stream(
f"v1/connect/{encode_path_param(self._client_wrapper._project_id)}/proxy/{encode_path_param(url_64)}",
@@ -231,11 +550,48 @@ async def post(
"account_id": account_id,
},
json=request,
- headers={"content-type": "application/json"},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
) as _response:
- yield await _handle_async_response(_response, request_options)
+
+ async def _stream() -> AsyncHttpResponse[typing.AsyncIterator[bytes]]:
+ try:
+ if 200 <= _response.status_code < 300:
+ _chunk_size = request_options.get("chunk_size", None) if request_options is not None else None
+ return AsyncHttpResponse(
+ response=_response,
+ data=(_chunk async for _chunk in _response.aiter_bytes(chunk_size=_chunk_size)),
+ )
+ await _response.aread()
+ if _response.status_code == 429:
+ raise TooManyRequestsError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ parse_obj_as(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code,
+ headers=dict(_response.headers),
+ body=_response.json(),
+ cause=e,
+ )
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ yield await _stream()
@contextlib.asynccontextmanager
async def put(
@@ -244,11 +600,32 @@ async def put(
*,
external_user_id: str,
account_id: str,
- request: typing.Dict[str, typing.Optional[typing.Any]],
+ request: typing.Dict[str, typing.Any],
request_options: typing.Optional[RequestOptions] = None,
- ) -> typing.AsyncIterator[AsyncHttpResponse[_AsyncProxyData]]:
+ ) -> typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]:
"""
- Forward an authenticated PUT request to an external API using an external user's account credentials.
+ Forward an authenticated PUT request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request : typing.Dict[str, typing.Any]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]
+ proxy request successful
"""
async with self._client_wrapper.httpx_client.stream(
f"v1/connect/{encode_path_param(self._client_wrapper._project_id)}/proxy/{encode_path_param(url_64)}",
@@ -258,170 +635,207 @@ async def put(
"account_id": account_id,
},
json=request,
- headers={"content-type": "application/json"},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
) as _response:
- yield await _handle_async_response(_response, request_options)
+
+ async def _stream() -> AsyncHttpResponse[typing.AsyncIterator[bytes]]:
+ try:
+ if 200 <= _response.status_code < 300:
+ _chunk_size = request_options.get("chunk_size", None) if request_options is not None else None
+ return AsyncHttpResponse(
+ response=_response,
+ data=(_chunk async for _chunk in _response.aiter_bytes(chunk_size=_chunk_size)),
+ )
+ await _response.aread()
+ if _response.status_code == 429:
+ raise TooManyRequestsError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ parse_obj_as(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code,
+ headers=dict(_response.headers),
+ body=_response.json(),
+ cause=e,
+ )
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ yield await _stream()
@contextlib.asynccontextmanager
- async def patch(
+ async def delete(
self,
url_64: str,
*,
external_user_id: str,
account_id: str,
- request: typing.Dict[str, typing.Optional[typing.Any]],
request_options: typing.Optional[RequestOptions] = None,
- ) -> typing.AsyncIterator[AsyncHttpResponse[_AsyncProxyData]]:
+ ) -> typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]:
"""
- Forward an authenticated PATCH request to an external API using an external user's account credentials.
+ Forward an authenticated DELETE request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]
+ proxy request successful
"""
async with self._client_wrapper.httpx_client.stream(
f"v1/connect/{encode_path_param(self._client_wrapper._project_id)}/proxy/{encode_path_param(url_64)}",
- method="PATCH",
+ method="DELETE",
params={
"external_user_id": external_user_id,
"account_id": account_id,
},
- json=request,
- headers={"content-type": "application/json"},
request_options=request_options,
- omit=OMIT,
) as _response:
- yield await _handle_async_response(_response, request_options)
+
+ async def _stream() -> AsyncHttpResponse[typing.AsyncIterator[bytes]]:
+ try:
+ if 200 <= _response.status_code < 300:
+ _chunk_size = request_options.get("chunk_size", None) if request_options is not None else None
+ return AsyncHttpResponse(
+ response=_response,
+ data=(_chunk async for _chunk in _response.aiter_bytes(chunk_size=_chunk_size)),
+ )
+ await _response.aread()
+ if _response.status_code == 429:
+ raise TooManyRequestsError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ parse_obj_as(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code,
+ headers=dict(_response.headers),
+ body=_response.json(),
+ cause=e,
+ )
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ yield await _stream()
@contextlib.asynccontextmanager
- async def delete(
+ async def patch(
self,
url_64: str,
*,
external_user_id: str,
account_id: str,
+ request: typing.Dict[str, typing.Any],
request_options: typing.Optional[RequestOptions] = None,
- ) -> typing.AsyncIterator[AsyncHttpResponse[_AsyncProxyData]]:
+ ) -> typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]:
"""
- Forward an authenticated DELETE request to an external API using an external user's account credentials.
+ Forward an authenticated PATCH request to an external API using an external user's account credentials
+
+ Parameters
+ ----------
+ url_64 : str
+ Base64-encoded target URL
+
+ external_user_id : str
+ The external user ID for the proxy request
+
+ account_id : str
+ The account ID to use for authentication
+
+ request : typing.Dict[str, typing.Any]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
+
+ Returns
+ -------
+ typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]
+ proxy request successful
"""
async with self._client_wrapper.httpx_client.stream(
f"v1/connect/{encode_path_param(self._client_wrapper._project_id)}/proxy/{encode_path_param(url_64)}",
- method="DELETE",
+ method="PATCH",
params={
"external_user_id": external_user_id,
"account_id": account_id,
},
+ json=request,
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
+ omit=OMIT,
) as _response:
- yield await _handle_async_response(_response, request_options)
-
-
-def _handle_sync_response(
- _response: typing.Any, request_options: typing.Optional[RequestOptions]
-) -> HttpResponse[_ProxyData]:
- try:
- if 200 <= _response.status_code < 300:
- content_type = _response.headers.get("content-type", "").lower()
- if _is_json_content_type(content_type):
- _response.read()
- if not _response.text.strip():
- return HttpResponse(response=_response, data=None)
- _data = typing.cast(
- ProxyResponse,
- parse_obj_as(
- type_=ProxyResponse, # type: ignore
- object_=_response.json(),
- ),
- )
- return HttpResponse(response=_response, data=_data)
- _chunk_size = request_options.get("chunk_size", None) if request_options is not None else None
- return HttpResponse(
- response=_response,
- data=(_chunk for _chunk in _response.iter_bytes(chunk_size=_chunk_size)),
- )
- _response.read()
- if _response.status_code == 429:
- raise TooManyRequestsError(
- headers=dict(_response.headers),
- body=typing.cast(
- typing.Optional[typing.Any],
- parse_obj_as(
- type_=typing.Optional[typing.Any], # type: ignore
- object_=_decode_error_body(_response),
- ),
- ),
- )
- _response_body = _decode_error_body(_response)
- except JSONDecodeError:
- raise ApiError(
- status_code=_response.status_code,
- headers=dict(_response.headers),
- body=_response.text,
- )
- except ValidationError as e:
- raise ParsingError(
- status_code=_response.status_code,
- headers=dict(_response.headers),
- body=_response.json(),
- cause=e,
- )
- raise ApiError(
- status_code=_response.status_code,
- headers=dict(_response.headers),
- body=_response_body,
- )
-
-
-async def _handle_async_response(
- _response: typing.Any, request_options: typing.Optional[RequestOptions]
-) -> AsyncHttpResponse[_AsyncProxyData]:
- try:
- if 200 <= _response.status_code < 300:
- content_type = _response.headers.get("content-type", "").lower()
- if _is_json_content_type(content_type):
- await _response.aread()
- if not _response.text.strip():
- return AsyncHttpResponse(response=_response, data=None)
- _data = typing.cast(
- ProxyResponse,
- parse_obj_as(
- type_=ProxyResponse, # type: ignore
- object_=_response.json(),
- ),
- )
- return AsyncHttpResponse(response=_response, data=_data)
- _chunk_size = request_options.get("chunk_size", None) if request_options is not None else None
- return AsyncHttpResponse(
- response=_response,
- data=(_chunk async for _chunk in _response.aiter_bytes(chunk_size=_chunk_size)),
- )
- await _response.aread()
- if _response.status_code == 429:
- raise TooManyRequestsError(
- headers=dict(_response.headers),
- body=typing.cast(
- typing.Optional[typing.Any],
- parse_obj_as(
- type_=typing.Optional[typing.Any], # type: ignore
- object_=_decode_error_body(_response),
- ),
- ),
- )
- _response_body = _decode_error_body(_response)
- except JSONDecodeError:
- raise ApiError(
- status_code=_response.status_code,
- headers=dict(_response.headers),
- body=_response.text,
- )
- except ValidationError as e:
- raise ParsingError(
- status_code=_response.status_code,
- headers=dict(_response.headers),
- body=_response.json(),
- cause=e,
- )
- raise ApiError(
- status_code=_response.status_code,
- headers=dict(_response.headers),
- body=_response_body,
- )
+
+ async def _stream() -> AsyncHttpResponse[typing.AsyncIterator[bytes]]:
+ try:
+ if 200 <= _response.status_code < 300:
+ _chunk_size = request_options.get("chunk_size", None) if request_options is not None else None
+ return AsyncHttpResponse(
+ response=_response,
+ data=(_chunk async for _chunk in _response.aiter_bytes(chunk_size=_chunk_size)),
+ )
+ await _response.aread()
+ if _response.status_code == 429:
+ raise TooManyRequestsError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ parse_obj_as(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response.text
+ )
+ except ValidationError as e:
+ raise ParsingError(
+ status_code=_response.status_code,
+ headers=dict(_response.headers),
+ body=_response.json(),
+ cause=e,
+ )
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ yield await _stream()
diff --git a/src/pipedream/triggers/client.py b/src/pipedream/triggers/client.py
index 2055714..5d12df7 100644
--- a/src/pipedream/triggers/client.py
+++ b/src/pipedream/triggers/client.py
@@ -65,7 +65,7 @@ def list(
The ID or name slug of the app to filter the triggers
registry : typing.Optional[TriggersListRequestRegistry]
- The registry to retrieve triggers from. Defaults to 'all' ('public', 'private', or 'all')
+ The registry to retrieve triggers from
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -115,10 +115,10 @@ def retrieve(
Parameters
----------
component_id : str
- The key that uniquely identifies the component (e.g., 'slack-send-message')
+ The key that uniquely identifies the component
version : typing.Optional[str]
- Optional semantic version of the component to retrieve (for example '1.0.0')
+ Optional semantic version of the component to retrieve
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -138,8 +138,8 @@ def retrieve(
client_secret="YOUR_CLIENT_SECRET",
)
client.triggers.retrieve(
- component_id="component_id",
- version="1.2.3",
+ component_id="slack-send-message",
+ version="1.0.0",
)
"""
_response = self._raw_client.retrieve(component_id, version=version, request_options=request_options)
@@ -175,7 +175,7 @@ def configure_prop(
The name of the prop to configure
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -255,7 +255,7 @@ def reload_props(
The external user ID
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -323,7 +323,7 @@ def deploy(
The external user ID
version : typing.Optional[str]
- Optional trigger component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Trigger component semantic version
configured_props : typing.Optional[ConfiguredProps]
@@ -422,7 +422,7 @@ async def list(
The ID or name slug of the app to filter the triggers
registry : typing.Optional[TriggersListRequestRegistry]
- The registry to retrieve triggers from. Defaults to 'all' ('public', 'private', or 'all')
+ The registry to retrieve triggers from
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -481,10 +481,10 @@ async def retrieve(
Parameters
----------
component_id : str
- The key that uniquely identifies the component (e.g., 'slack-send-message')
+ The key that uniquely identifies the component
version : typing.Optional[str]
- Optional semantic version of the component to retrieve (for example '1.0.0')
+ Optional semantic version of the component to retrieve
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -509,8 +509,8 @@ async def retrieve(
async def main() -> None:
await client.triggers.retrieve(
- component_id="component_id",
- version="1.2.3",
+ component_id="slack-send-message",
+ version="1.0.0",
)
@@ -549,7 +549,7 @@ async def configure_prop(
The name of the prop to configure
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -637,7 +637,7 @@ async def reload_props(
The external user ID
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -713,7 +713,7 @@ async def deploy(
The external user ID
version : typing.Optional[str]
- Optional trigger component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Trigger component semantic version
configured_props : typing.Optional[ConfiguredProps]
diff --git a/src/pipedream/triggers/raw_client.py b/src/pipedream/triggers/raw_client.py
index 7b26a45..a8c6ca2 100644
--- a/src/pipedream/triggers/raw_client.py
+++ b/src/pipedream/triggers/raw_client.py
@@ -65,7 +65,7 @@ def list(
The ID or name slug of the app to filter the triggers
registry : typing.Optional[TriggersListRequestRegistry]
- The registry to retrieve triggers from. Defaults to 'all' ('public', 'private', or 'all')
+ The registry to retrieve triggers from
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -157,10 +157,10 @@ def retrieve(
Parameters
----------
component_id : str
- The key that uniquely identifies the component (e.g., 'slack-send-message')
+ The key that uniquely identifies the component
version : typing.Optional[str]
- Optional semantic version of the component to retrieve (for example '1.0.0')
+ Optional semantic version of the component to retrieve
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -239,7 +239,7 @@ def configure_prop(
The name of the prop to configure
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -283,6 +283,9 @@ def configure_prop(
"prev_context": prev_context,
"query": query,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -339,7 +342,7 @@ def reload_props(
The external user ID
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -370,6 +373,9 @@ def reload_props(
),
"dynamic_props_id": dynamic_props_id,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -428,7 +434,7 @@ def deploy(
The external user ID
version : typing.Optional[str]
- Optional trigger component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Trigger component semantic version
configured_props : typing.Optional[ConfiguredProps]
@@ -541,7 +547,7 @@ async def list(
The ID or name slug of the app to filter the triggers
registry : typing.Optional[TriggersListRequestRegistry]
- The registry to retrieve triggers from. Defaults to 'all' ('public', 'private', or 'all')
+ The registry to retrieve triggers from
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -636,10 +642,10 @@ async def retrieve(
Parameters
----------
component_id : str
- The key that uniquely identifies the component (e.g., 'slack-send-message')
+ The key that uniquely identifies the component
version : typing.Optional[str]
- Optional semantic version of the component to retrieve (for example '1.0.0')
+ Optional semantic version of the component to retrieve
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -718,7 +724,7 @@ async def configure_prop(
The name of the prop to configure
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -762,6 +768,9 @@ async def configure_prop(
"prev_context": prev_context,
"query": query,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -818,7 +827,7 @@ async def reload_props(
The external user ID
version : typing.Optional[str]
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
blocking : typing.Optional[bool]
Whether this operation should block until completion
@@ -849,6 +858,9 @@ async def reload_props(
),
"dynamic_props_id": dynamic_props_id,
},
+ headers={
+ "content-type": "application/json",
+ },
request_options=request_options,
omit=OMIT,
)
@@ -907,7 +919,7 @@ async def deploy(
The external user ID
version : typing.Optional[str]
- Optional trigger component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Trigger component semantic version
configured_props : typing.Optional[ConfiguredProps]
diff --git a/src/pipedream/types/component.py b/src/pipedream/types/component.py
index d707695..12078fe 100644
--- a/src/pipedream/types/component.py
+++ b/src/pipedream/types/component.py
@@ -17,12 +17,12 @@ class Component(UniversalBaseModel):
name: str = pydantic.Field()
"""
- The human-readable name of the component, e.g. 'GitLab: List Commits'
+ The human-readable name of the component
"""
version: str = pydantic.Field()
"""
- The latest version of the component, in SemVer format.
+ The latest version of the component, in semantic versioning format.
"""
configurable_props: typing.List[ConfigurableProp]
diff --git a/src/pipedream/types/configurable_prop_app.py b/src/pipedream/types/configurable_prop_app.py
index f620770..9e95f13 100644
--- a/src/pipedream/types/configurable_prop_app.py
+++ b/src/pipedream/types/configurable_prop_app.py
@@ -12,7 +12,7 @@ class ConfigurablePropApp(UniversalBaseModel):
type: typing.Literal["app"] = "app"
app: str = pydantic.Field()
"""
- The name slug of the app, e.g. 'github', 'slack', etc. This is used to identify the app for which the account is being configured.
+ The name slug of the app, used to identify the app for which the account is being configured.
"""
name: str = pydantic.Field()
diff --git a/src/pipedream/types/configure_prop_opts.py b/src/pipedream/types/configure_prop_opts.py
index 1712ac7..0e94d9a 100644
--- a/src/pipedream/types/configure_prop_opts.py
+++ b/src/pipedream/types/configure_prop_opts.py
@@ -19,7 +19,7 @@ class ConfigurePropOpts(UniversalBaseModel):
version: typing.Optional[str] = pydantic.Field(default=None)
"""
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
"""
external_user_id: str = pydantic.Field()
diff --git a/src/pipedream/types/emitted_event.py b/src/pipedream/types/emitted_event.py
index 0ce4f3d..920f389 100644
--- a/src/pipedream/types/emitted_event.py
+++ b/src/pipedream/types/emitted_event.py
@@ -31,6 +31,11 @@ class EmittedEvent(UniversalBaseModel):
The event's unique ID
"""
+ sum: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ A short summary of the event's payload
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/pipedream/types/reload_props_opts.py b/src/pipedream/types/reload_props_opts.py
index 34399b8..a0369dc 100644
--- a/src/pipedream/types/reload_props_opts.py
+++ b/src/pipedream/types/reload_props_opts.py
@@ -19,7 +19,7 @@ class ReloadPropsOpts(UniversalBaseModel):
version: typing.Optional[str] = pydantic.Field(default=None)
"""
- Optional component version (in SemVer format, for example '1.0.0'), defaults to latest
+ Component semantic version
"""
external_user_id: str = pydantic.Field()
diff --git a/src/pipedream/workflows/__init__.py b/src/pipedream/workflows/__init__.py
deleted file mode 100644
index 395047f..0000000
--- a/src/pipedream/workflows/__init__.py
+++ /dev/null
@@ -1,5 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-from .client import AsyncWorkflowsClient, WorkflowsClient
-
-__all__ = ["AsyncWorkflowsClient", "WorkflowsClient"]
\ No newline at end of file
diff --git a/src/pipedream/workflows/client.py b/src/pipedream/workflows/client.py
deleted file mode 100644
index 1f31604..0000000
--- a/src/pipedream/workflows/client.py
+++ /dev/null
@@ -1,271 +0,0 @@
-import enum
-import re
-import typing
-
-import httpx
-
-from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
-from ..core.request_options import RequestOptions
-
-# this is used as the default value for optional parameters
-OMIT = typing.cast(typing.Any, ...)
-
-_DEFAULT_WORKFLOW_DOMAIN = "m.pipedream.net"
-_ENDPOINT_ID_RE = re.compile(r"^e(n|o)[a-z0-9-]+$")
-
-
-class HTTPAuthType(enum.Enum):
- """Authentication types for workflow invocation."""
-
- NONE = "none"
- STATIC_BEARER = "static_bearer_token"
- OAUTH = "oauth"
-
-
-def _is_endpoint_id(url_or_endpoint: str) -> bool:
- return bool(_ENDPOINT_ID_RE.match(url_or_endpoint))
-
-
-def _build_workflow_url(url_or_endpoint: str, *, workflow_domain: str) -> str:
- if not url_or_endpoint:
- raise ValueError("URL or endpoint ID is required")
-
- if url_or_endpoint.startswith(("http://", "https://")):
- return url_or_endpoint
-
- if "." in url_or_endpoint and not _is_endpoint_id(url_or_endpoint):
- return f"https://{url_or_endpoint}"
-
- if not _is_endpoint_id(url_or_endpoint):
- raise ValueError(f"Invalid endpoint ID format: {url_or_endpoint}")
-
- return f"https://{url_or_endpoint}.{workflow_domain}"
-
-
-def _prepare_headers(
- headers: typing.Optional[typing.Dict[str, str]],
- auth_type: HTTPAuthType,
-) -> typing.Dict[str, str]:
- request_headers = dict(headers) if headers else {}
- if auth_type == HTTPAuthType.NONE:
- # Suppress the default bearer token added by the client wrapper.
- request_headers["Authorization"] = ""
- return request_headers
-
-
-def _add_external_user_id_header(
- headers: typing.Optional[typing.Dict[str, str]],
- external_user_id: str,
-) -> typing.Dict[str, str]:
- if not external_user_id:
- raise ValueError("external_user_id is required")
- request_headers = dict(headers) if headers else {}
- request_headers["X-PD-External-User-ID"] = external_user_id
- return request_headers
-
-
-class WorkflowsClient:
- def __init__(
- self,
- *,
- client_wrapper: SyncClientWrapper,
- workflow_domain: str = _DEFAULT_WORKFLOW_DOMAIN,
- ):
- self._client_wrapper = client_wrapper
- self._workflow_domain = workflow_domain
-
- def invoke(
- self,
- url_or_endpoint: str,
- *,
- method: str = "POST",
- body: typing.Optional[typing.Any] = None,
- headers: typing.Optional[typing.Dict[str, str]] = None,
- auth_type: HTTPAuthType = HTTPAuthType.NONE,
- request_options: typing.Optional[RequestOptions] = None,
- ) -> httpx.Response:
- """
- Invoke a workflow via its HTTP interface URL or endpoint ID.
-
- Parameters
- ----------
- url_or_endpoint : str
- The full URL of the workflow's HTTP interface or the endpoint ID.
-
- method : str
- HTTP method to use (default: "POST").
-
- body : typing.Optional[typing.Any]
- Request body. Dict/list values are serialized as JSON; other types are sent as raw form data.
-
- headers : typing.Optional[typing.Dict[str, str]]
- Additional HTTP headers to include.
-
- auth_type : HTTPAuthType
- Authentication mode (default: HTTPAuthType.NONE).
-
- request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
- Returns
- -------
- httpx.Response
- Response returned by the invoked workflow.
-
- Examples
- --------
- from pipedream import Pipedream, PipedreamEnvironment
- from pipedream.workflows.client import HTTPAuthType
-
- client = Pipedream(
- client_id="",
- client_secret="",
- environment=PipedreamEnvironment.PROD,
- )
- response = client.workflows.invoke(
- url_or_endpoint="https://your-workflow.m.pipedream.net",
- method="POST",
- body={"key": "value"},
- headers={"Content-Type": "application/json"},
- auth_type=HTTPAuthType.NONE,
- )
- """
- workflow_url = _build_workflow_url(url_or_endpoint, workflow_domain=self._workflow_domain)
- request_headers = _prepare_headers(headers, auth_type)
-
- response = self._client_wrapper.httpx_client.request(
- workflow_url,
- method=method,
- data=body,
- json=body,
- headers=request_headers,
- request_options=request_options,
- )
- response.raise_for_status()
- return response
-
- def invoke_for_external_user(
- self,
- url_or_endpoint: str,
- *,
- external_user_id: str,
- method: str = "POST",
- body: typing.Optional[typing.Any] = None,
- headers: typing.Optional[typing.Dict[str, str]] = None,
- request_options: typing.Optional[RequestOptions] = None,
- ) -> httpx.Response:
- """
- Invoke a workflow on behalf of a Pipedream Connect end-user.
-
- Forces OAuth authentication and adds the `X-PD-External-User-ID` header.
-
- Parameters
- ----------
- url_or_endpoint : str
- The full URL of the workflow's HTTP interface or the endpoint ID.
-
- external_user_id : str
- The external user ID for whom the workflow is being invoked.
-
- method : str
- HTTP method to use (default: "POST").
-
- body : typing.Optional[typing.Any]
- Request body. Dict/list values are serialized as JSON; other types are sent as raw form data.
-
- headers : typing.Optional[typing.Dict[str, str]]
- Additional HTTP headers to include.
-
- request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
- Returns
- -------
- httpx.Response
- Response returned by the invoked workflow.
-
- Examples
- --------
- from pipedream import Pipedream, PipedreamEnvironment
-
- client = Pipedream(
- client_id="",
- client_secret="",
- environment=PipedreamEnvironment.PROD,
- )
- response = client.workflows.invoke_for_external_user(
- url_or_endpoint="en2r1n8a98np7",
- external_user_id="user_123",
- method="POST",
- body={"message": "Hello from external user"},
- headers={"Content-Type": "application/json"},
- )
- """
- return self.invoke(
- url_or_endpoint,
- method=method,
- body=body,
- headers=_add_external_user_id_header(headers, external_user_id),
- auth_type=HTTPAuthType.OAUTH,
- request_options=request_options,
- )
-
-
-class AsyncWorkflowsClient:
- def __init__(
- self,
- *,
- client_wrapper: AsyncClientWrapper,
- workflow_domain: str = _DEFAULT_WORKFLOW_DOMAIN,
- ):
- self._client_wrapper = client_wrapper
- self._workflow_domain = workflow_domain
-
- async def invoke(
- self,
- url_or_endpoint: str,
- *,
- method: str = "POST",
- body: typing.Optional[typing.Any] = None,
- headers: typing.Optional[typing.Dict[str, str]] = None,
- auth_type: HTTPAuthType = HTTPAuthType.NONE,
- request_options: typing.Optional[RequestOptions] = None,
- ) -> httpx.Response:
- """
- Async counterpart of `WorkflowsClient.invoke`.
- """
- workflow_url = _build_workflow_url(url_or_endpoint, workflow_domain=self._workflow_domain)
- request_headers = _prepare_headers(headers, auth_type)
-
- response = await self._client_wrapper.httpx_client.request(
- workflow_url,
- method=method,
- data=body,
- json=body,
- headers=request_headers,
- request_options=request_options,
- )
- response.raise_for_status()
- return response
-
- async def invoke_for_external_user(
- self,
- url_or_endpoint: str,
- *,
- external_user_id: str,
- method: str = "POST",
- body: typing.Optional[typing.Any] = None,
- headers: typing.Optional[typing.Dict[str, str]] = None,
- request_options: typing.Optional[RequestOptions] = None,
- ) -> httpx.Response:
- """
- Async counterpart of `WorkflowsClient.invoke_for_external_user`.
- """
- return await self.invoke(
- url_or_endpoint,
- method=method,
- body=body,
- headers=_add_external_user_id_header(headers, external_user_id),
- auth_type=HTTPAuthType.OAUTH,
- request_options=request_options,
- )