diff --git a/poetry.lock b/poetry.lock index 8a7e2992c..a532c5e26 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,5 +1,169 @@ # This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. +[[package]] +name = "aiohappyeyeballs" +version = "2.6.1" +description = "Happy Eyeballs for asyncio" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8"}, + {file = "aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558"}, +] + +[[package]] +name = "aiohttp" +version = "3.12.15" +description = "Async http client/server framework (asyncio)" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "aiohttp-3.12.15-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b6fc902bff74d9b1879ad55f5404153e2b33a82e72a95c89cec5eb6cc9e92fbc"}, + {file = "aiohttp-3.12.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:098e92835b8119b54c693f2f88a1dec690e20798ca5f5fe5f0520245253ee0af"}, + {file = "aiohttp-3.12.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:40b3fee496a47c3b4a39a731954c06f0bd9bd3e8258c059a4beb76ac23f8e421"}, + {file = "aiohttp-3.12.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ce13fcfb0bb2f259fb42106cdc63fa5515fb85b7e87177267d89a771a660b79"}, + {file = "aiohttp-3.12.15-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3beb14f053222b391bf9cf92ae82e0171067cc9c8f52453a0f1ec7c37df12a77"}, + {file = "aiohttp-3.12.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c39e87afe48aa3e814cac5f535bc6199180a53e38d3f51c5e2530f5aa4ec58c"}, + {file = "aiohttp-3.12.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5f1b4ce5bc528a6ee38dbf5f39bbf11dd127048726323b72b8e85769319ffc4"}, + {file = "aiohttp-3.12.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1004e67962efabbaf3f03b11b4c43b834081c9e3f9b32b16a7d97d4708a9abe6"}, + {file = "aiohttp-3.12.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8faa08fcc2e411f7ab91d1541d9d597d3a90e9004180edb2072238c085eac8c2"}, + {file = "aiohttp-3.12.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fe086edf38b2222328cdf89af0dde2439ee173b8ad7cb659b4e4c6f385b2be3d"}, + {file = "aiohttp-3.12.15-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:79b26fe467219add81d5e47b4a4ba0f2394e8b7c7c3198ed36609f9ba161aecb"}, + {file = "aiohttp-3.12.15-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b761bac1192ef24e16706d761aefcb581438b34b13a2f069a6d343ec8fb693a5"}, + {file = "aiohttp-3.12.15-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e153e8adacfe2af562861b72f8bc47f8a5c08e010ac94eebbe33dc21d677cd5b"}, + {file = "aiohttp-3.12.15-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:fc49c4de44977aa8601a00edbf157e9a421f227aa7eb477d9e3df48343311065"}, + {file = "aiohttp-3.12.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2776c7ec89c54a47029940177e75c8c07c29c66f73464784971d6a81904ce9d1"}, + {file = "aiohttp-3.12.15-cp310-cp310-win32.whl", hash = "sha256:2c7d81a277fa78b2203ab626ced1487420e8c11a8e373707ab72d189fcdad20a"}, + {file = "aiohttp-3.12.15-cp310-cp310-win_amd64.whl", hash = "sha256:83603f881e11f0f710f8e2327817c82e79431ec976448839f3cd05d7afe8f830"}, + {file = "aiohttp-3.12.15-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d3ce17ce0220383a0f9ea07175eeaa6aa13ae5a41f30bc61d84df17f0e9b1117"}, + {file = "aiohttp-3.12.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:010cc9bbd06db80fe234d9003f67e97a10fe003bfbedb40da7d71c1008eda0fe"}, + {file = "aiohttp-3.12.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3f9d7c55b41ed687b9d7165b17672340187f87a773c98236c987f08c858145a9"}, + {file = "aiohttp-3.12.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc4fbc61bb3548d3b482f9ac7ddd0f18c67e4225aaa4e8552b9f1ac7e6bda9e5"}, + {file = "aiohttp-3.12.15-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7fbc8a7c410bb3ad5d595bb7118147dfbb6449d862cc1125cf8867cb337e8728"}, + {file = "aiohttp-3.12.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74dad41b3458dbb0511e760fb355bb0b6689e0630de8a22b1b62a98777136e16"}, + {file = "aiohttp-3.12.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b6f0af863cf17e6222b1735a756d664159e58855da99cfe965134a3ff63b0b0"}, + {file = "aiohttp-3.12.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5b7fe4972d48a4da367043b8e023fb70a04d1490aa7d68800e465d1b97e493b"}, + {file = "aiohttp-3.12.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6443cca89553b7a5485331bc9bedb2342b08d073fa10b8c7d1c60579c4a7b9bd"}, + {file = "aiohttp-3.12.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6c5f40ec615e5264f44b4282ee27628cea221fcad52f27405b80abb346d9f3f8"}, + {file = "aiohttp-3.12.15-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:2abbb216a1d3a2fe86dbd2edce20cdc5e9ad0be6378455b05ec7f77361b3ab50"}, + {file = "aiohttp-3.12.15-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:db71ce547012a5420a39c1b744d485cfb823564d01d5d20805977f5ea1345676"}, + {file = "aiohttp-3.12.15-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ced339d7c9b5030abad5854aa5413a77565e5b6e6248ff927d3e174baf3badf7"}, + {file = "aiohttp-3.12.15-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:7c7dd29c7b5bda137464dc9bfc738d7ceea46ff70309859ffde8c022e9b08ba7"}, + {file = "aiohttp-3.12.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:421da6fd326460517873274875c6c5a18ff225b40da2616083c5a34a7570b685"}, + {file = "aiohttp-3.12.15-cp311-cp311-win32.whl", hash = "sha256:4420cf9d179ec8dfe4be10e7d0fe47d6d606485512ea2265b0d8c5113372771b"}, + {file = "aiohttp-3.12.15-cp311-cp311-win_amd64.whl", hash = "sha256:edd533a07da85baa4b423ee8839e3e91681c7bfa19b04260a469ee94b778bf6d"}, + {file = "aiohttp-3.12.15-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:802d3868f5776e28f7bf69d349c26fc0efadb81676d0afa88ed00d98a26340b7"}, + {file = "aiohttp-3.12.15-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2800614cd560287be05e33a679638e586a2d7401f4ddf99e304d98878c29444"}, + {file = "aiohttp-3.12.15-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8466151554b593909d30a0a125d638b4e5f3836e5aecde85b66b80ded1cb5b0d"}, + {file = "aiohttp-3.12.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e5a495cb1be69dae4b08f35a6c4579c539e9b5706f606632102c0f855bcba7c"}, + {file = "aiohttp-3.12.15-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6404dfc8cdde35c69aaa489bb3542fb86ef215fc70277c892be8af540e5e21c0"}, + {file = "aiohttp-3.12.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ead1c00f8521a5c9070fcb88f02967b1d8a0544e6d85c253f6968b785e1a2ab"}, + {file = "aiohttp-3.12.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6990ef617f14450bc6b34941dba4f12d5613cbf4e33805932f853fbd1cf18bfb"}, + {file = "aiohttp-3.12.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd736ed420f4db2b8148b52b46b88ed038d0354255f9a73196b7bbce3ea97545"}, + {file = "aiohttp-3.12.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c5092ce14361a73086b90c6efb3948ffa5be2f5b6fbcf52e8d8c8b8848bb97c"}, + {file = "aiohttp-3.12.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aaa2234bb60c4dbf82893e934d8ee8dea30446f0647e024074237a56a08c01bd"}, + {file = "aiohttp-3.12.15-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:6d86a2fbdd14192e2f234a92d3b494dd4457e683ba07e5905a0b3ee25389ac9f"}, + {file = "aiohttp-3.12.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a041e7e2612041a6ddf1c6a33b883be6a421247c7afd47e885969ee4cc58bd8d"}, + {file = "aiohttp-3.12.15-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5015082477abeafad7203757ae44299a610e89ee82a1503e3d4184e6bafdd519"}, + {file = "aiohttp-3.12.15-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:56822ff5ddfd1b745534e658faba944012346184fbfe732e0d6134b744516eea"}, + {file = "aiohttp-3.12.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b2acbbfff69019d9014508c4ba0401822e8bae5a5fdc3b6814285b71231b60f3"}, + {file = "aiohttp-3.12.15-cp312-cp312-win32.whl", hash = "sha256:d849b0901b50f2185874b9a232f38e26b9b3d4810095a7572eacea939132d4e1"}, + {file = "aiohttp-3.12.15-cp312-cp312-win_amd64.whl", hash = "sha256:b390ef5f62bb508a9d67cb3bba9b8356e23b3996da7062f1a57ce1a79d2b3d34"}, + {file = "aiohttp-3.12.15-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9f922ffd05034d439dde1c77a20461cf4a1b0831e6caa26151fe7aa8aaebc315"}, + {file = "aiohttp-3.12.15-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ee8a8ac39ce45f3e55663891d4b1d15598c157b4d494a4613e704c8b43112cd"}, + {file = "aiohttp-3.12.15-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3eae49032c29d356b94eee45a3f39fdf4b0814b397638c2f718e96cfadf4c4e4"}, + {file = "aiohttp-3.12.15-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b97752ff12cc12f46a9b20327104448042fce5c33a624f88c18f66f9368091c7"}, + {file = "aiohttp-3.12.15-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:894261472691d6fe76ebb7fcf2e5870a2ac284c7406ddc95823c8598a1390f0d"}, + {file = "aiohttp-3.12.15-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5fa5d9eb82ce98959fc1031c28198b431b4d9396894f385cb63f1e2f3f20ca6b"}, + {file = "aiohttp-3.12.15-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0fa751efb11a541f57db59c1dd821bec09031e01452b2b6217319b3a1f34f3d"}, + {file = "aiohttp-3.12.15-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5346b93e62ab51ee2a9d68e8f73c7cf96ffb73568a23e683f931e52450e4148d"}, + {file = "aiohttp-3.12.15-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:049ec0360f939cd164ecbfd2873eaa432613d5e77d6b04535e3d1fbae5a9e645"}, + {file = "aiohttp-3.12.15-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b52dcf013b57464b6d1e51b627adfd69a8053e84b7103a7cd49c030f9ca44461"}, + {file = "aiohttp-3.12.15-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:9b2af240143dd2765e0fb661fd0361a1b469cab235039ea57663cda087250ea9"}, + {file = "aiohttp-3.12.15-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ac77f709a2cde2cc71257ab2d8c74dd157c67a0558a0d2799d5d571b4c63d44d"}, + {file = "aiohttp-3.12.15-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:47f6b962246f0a774fbd3b6b7be25d59b06fdb2f164cf2513097998fc6a29693"}, + {file = "aiohttp-3.12.15-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:760fb7db442f284996e39cf9915a94492e1896baac44f06ae551974907922b64"}, + {file = "aiohttp-3.12.15-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ad702e57dc385cae679c39d318def49aef754455f237499d5b99bea4ef582e51"}, + {file = "aiohttp-3.12.15-cp313-cp313-win32.whl", hash = "sha256:f813c3e9032331024de2eb2e32a88d86afb69291fbc37a3a3ae81cc9917fb3d0"}, + {file = "aiohttp-3.12.15-cp313-cp313-win_amd64.whl", hash = "sha256:1a649001580bdb37c6fdb1bebbd7e3bc688e8ec2b5c6f52edbb664662b17dc84"}, + {file = "aiohttp-3.12.15-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:691d203c2bdf4f4637792efbbcdcd157ae11e55eaeb5e9c360c1206fb03d4d98"}, + {file = "aiohttp-3.12.15-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8e995e1abc4ed2a454c731385bf4082be06f875822adc4c6d9eaadf96e20d406"}, + {file = "aiohttp-3.12.15-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bd44d5936ab3193c617bfd6c9a7d8d1085a8dc8c3f44d5f1dcf554d17d04cf7d"}, + {file = "aiohttp-3.12.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46749be6e89cd78d6068cdf7da51dbcfa4321147ab8e4116ee6678d9a056a0cf"}, + {file = "aiohttp-3.12.15-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0c643f4d75adea39e92c0f01b3fb83d57abdec8c9279b3078b68a3a52b3933b6"}, + {file = "aiohttp-3.12.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0a23918fedc05806966a2438489dcffccbdf83e921a1170773b6178d04ade142"}, + {file = "aiohttp-3.12.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:74bdd8c864b36c3673741023343565d95bfbd778ffe1eb4d412c135a28a8dc89"}, + {file = "aiohttp-3.12.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a146708808c9b7a988a4af3821379e379e0f0e5e466ca31a73dbdd0325b0263"}, + {file = "aiohttp-3.12.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7011a70b56facde58d6d26da4fec3280cc8e2a78c714c96b7a01a87930a9530"}, + {file = "aiohttp-3.12.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:3bdd6e17e16e1dbd3db74d7f989e8af29c4d2e025f9828e6ef45fbdee158ec75"}, + {file = "aiohttp-3.12.15-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:57d16590a351dfc914670bd72530fd78344b885a00b250e992faea565b7fdc05"}, + {file = "aiohttp-3.12.15-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bc9a0f6569ff990e0bbd75506c8d8fe7214c8f6579cca32f0546e54372a3bb54"}, + {file = "aiohttp-3.12.15-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:536ad7234747a37e50e7b6794ea868833d5220b49c92806ae2d7e8a9d6b5de02"}, + {file = "aiohttp-3.12.15-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f0adb4177fa748072546fb650d9bd7398caaf0e15b370ed3317280b13f4083b0"}, + {file = "aiohttp-3.12.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:14954a2988feae3987f1eb49c706bff39947605f4b6fa4027c1d75743723eb09"}, + {file = "aiohttp-3.12.15-cp39-cp39-win32.whl", hash = "sha256:b784d6ed757f27574dca1c336f968f4e81130b27595e458e69457e6878251f5d"}, + {file = "aiohttp-3.12.15-cp39-cp39-win_amd64.whl", hash = "sha256:86ceded4e78a992f835209e236617bffae649371c4a50d5e5a3987f237db84b8"}, + {file = "aiohttp-3.12.15.tar.gz", hash = "sha256:4fc61385e9c98d72fcdf47e6dd81833f47b2f77c114c29cd64a361be57a763a2"}, +] + +[package.dependencies] +aiohappyeyeballs = ">=2.5.0" +aiosignal = ">=1.4.0" +async-timeout = {version = ">=4.0,<6.0", markers = "python_version < \"3.11\""} +attrs = ">=17.3.0" +frozenlist = ">=1.1.1" +multidict = ">=4.5,<7.0" +propcache = ">=0.2.0" +yarl = ">=1.17.0,<2.0" + +[package.extras] +speedups = ["Brotli ; platform_python_implementation == \"CPython\"", "aiodns (>=3.3.0)", "brotlicffi ; platform_python_implementation != \"CPython\""] + +[[package]] +name = "aiohttp-retry" +version = "2.9.1" +description = "Simple retry client for aiohttp" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "aiohttp_retry-2.9.1-py3-none-any.whl", hash = "sha256:66d2759d1921838256a05a3f80ad7e724936f083e35be5abb5e16eed6be6dc54"}, + {file = "aiohttp_retry-2.9.1.tar.gz", hash = "sha256:8eb75e904ed4ee5c2ec242fefe85bf04240f685391c4879d8f541d6028ff01f1"}, +] + +[package.dependencies] +aiohttp = "*" + +[[package]] +name = "aiosignal" +version = "1.4.0" +description = "aiosignal: a list of registered asynchronous callbacks" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "aiosignal-1.4.0-py3-none-any.whl", hash = "sha256:053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e"}, + {file = "aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7"}, +] + +[package.dependencies] +frozenlist = ">=1.1.0" +typing-extensions = {version = ">=4.2", markers = "python_version < \"3.13\""} + +[[package]] +name = "annotated-types" +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"}, +] + [[package]] name = "astor" version = "0.8.1" @@ -27,6 +191,52 @@ files = [ [package.dependencies] typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""} +[[package]] +name = "async-timeout" +version = "5.0.1" +description = "Timeout context manager for asyncio programs" +optional = false +python-versions = ">=3.8" +groups = ["main"] +markers = "python_version < \"3.11\"" +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"}, +] + +[[package]] +name = "attrs" +version = "25.3.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3"}, + {file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b"}, +] + +[package.extras] +benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier"] +tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""] + +[[package]] +name = "backports-asyncio-runner" +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.11\"" +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"}, +] + [[package]] name = "certifi" version = "2025.7.14" @@ -346,6 +556,120 @@ docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3) testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] typing = ["typing-extensions (>=4.12.2) ; python_version < \"3.11\""] +[[package]] +name = "frozenlist" +version = "1.7.0" +description = "A list-like structure which implements collections.abc.MutableSequence" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "frozenlist-1.7.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cc4df77d638aa2ed703b878dd093725b72a824c3c546c076e8fdf276f78ee84a"}, + {file = "frozenlist-1.7.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:716a9973a2cc963160394f701964fe25012600f3d311f60c790400b00e568b61"}, + {file = "frozenlist-1.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0fd1bad056a3600047fb9462cff4c5322cebc59ebf5d0a3725e0ee78955001d"}, + {file = "frozenlist-1.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3789ebc19cb811163e70fe2bd354cea097254ce6e707ae42e56f45e31e96cb8e"}, + {file = "frozenlist-1.7.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af369aa35ee34f132fcfad5be45fbfcde0e3a5f6a1ec0712857f286b7d20cca9"}, + {file = "frozenlist-1.7.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac64b6478722eeb7a3313d494f8342ef3478dff539d17002f849101b212ef97c"}, + {file = "frozenlist-1.7.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f89f65d85774f1797239693cef07ad4c97fdd0639544bad9ac4b869782eb1981"}, + {file = "frozenlist-1.7.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1073557c941395fdfcfac13eb2456cb8aad89f9de27bae29fabca8e563b12615"}, + {file = "frozenlist-1.7.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ed8d2fa095aae4bdc7fdd80351009a48d286635edffee66bf865e37a9125c50"}, + {file = "frozenlist-1.7.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:24c34bea555fe42d9f928ba0a740c553088500377448febecaa82cc3e88aa1fa"}, + {file = "frozenlist-1.7.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:69cac419ac6a6baad202c85aaf467b65ac860ac2e7f2ac1686dc40dbb52f6577"}, + {file = "frozenlist-1.7.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:960d67d0611f4c87da7e2ae2eacf7ea81a5be967861e0c63cf205215afbfac59"}, + {file = "frozenlist-1.7.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:41be2964bd4b15bf575e5daee5a5ce7ed3115320fb3c2b71fca05582ffa4dc9e"}, + {file = "frozenlist-1.7.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:46d84d49e00c9429238a7ce02dc0be8f6d7cd0cd405abd1bebdc991bf27c15bd"}, + {file = "frozenlist-1.7.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:15900082e886edb37480335d9d518cec978afc69ccbc30bd18610b7c1b22a718"}, + {file = "frozenlist-1.7.0-cp310-cp310-win32.whl", hash = "sha256:400ddd24ab4e55014bba442d917203c73b2846391dd42ca5e38ff52bb18c3c5e"}, + {file = "frozenlist-1.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:6eb93efb8101ef39d32d50bce242c84bcbddb4f7e9febfa7b524532a239b4464"}, + {file = "frozenlist-1.7.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:aa51e147a66b2d74de1e6e2cf5921890de6b0f4820b257465101d7f37b49fb5a"}, + {file = "frozenlist-1.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9b35db7ce1cd71d36ba24f80f0c9e7cff73a28d7a74e91fe83e23d27c7828750"}, + {file = "frozenlist-1.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:34a69a85e34ff37791e94542065c8416c1afbf820b68f720452f636d5fb990cd"}, + {file = "frozenlist-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a646531fa8d82c87fe4bb2e596f23173caec9185bfbca5d583b4ccfb95183e2"}, + {file = "frozenlist-1.7.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:79b2ffbba483f4ed36a0f236ccb85fbb16e670c9238313709638167670ba235f"}, + {file = "frozenlist-1.7.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a26f205c9ca5829cbf82bb2a84b5c36f7184c4316617d7ef1b271a56720d6b30"}, + {file = "frozenlist-1.7.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bcacfad3185a623fa11ea0e0634aac7b691aa925d50a440f39b458e41c561d98"}, + {file = "frozenlist-1.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72c1b0fe8fe451b34f12dce46445ddf14bd2a5bcad7e324987194dc8e3a74c86"}, + {file = "frozenlist-1.7.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61d1a5baeaac6c0798ff6edfaeaa00e0e412d49946c53fae8d4b8e8b3566c4ae"}, + {file = "frozenlist-1.7.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7edf5c043c062462f09b6820de9854bf28cc6cc5b6714b383149745e287181a8"}, + {file = "frozenlist-1.7.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:d50ac7627b3a1bd2dcef6f9da89a772694ec04d9a61b66cf87f7d9446b4a0c31"}, + {file = "frozenlist-1.7.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ce48b2fece5aeb45265bb7a58259f45027db0abff478e3077e12b05b17fb9da7"}, + {file = "frozenlist-1.7.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:fe2365ae915a1fafd982c146754e1de6ab3478def8a59c86e1f7242d794f97d5"}, + {file = "frozenlist-1.7.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:45a6f2fdbd10e074e8814eb98b05292f27bad7d1883afbe009d96abdcf3bc898"}, + {file = "frozenlist-1.7.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:21884e23cffabb157a9dd7e353779077bf5b8f9a58e9b262c6caad2ef5f80a56"}, + {file = "frozenlist-1.7.0-cp311-cp311-win32.whl", hash = "sha256:284d233a8953d7b24f9159b8a3496fc1ddc00f4db99c324bd5fb5f22d8698ea7"}, + {file = "frozenlist-1.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:387cbfdcde2f2353f19c2f66bbb52406d06ed77519ac7ee21be0232147c2592d"}, + {file = "frozenlist-1.7.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3dbf9952c4bb0e90e98aec1bd992b3318685005702656bc6f67c1a32b76787f2"}, + {file = "frozenlist-1.7.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1f5906d3359300b8a9bb194239491122e6cf1444c2efb88865426f170c262cdb"}, + {file = "frozenlist-1.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3dabd5a8f84573c8d10d8859a50ea2dec01eea372031929871368c09fa103478"}, + {file = "frozenlist-1.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa57daa5917f1738064f302bf2626281a1cb01920c32f711fbc7bc36111058a8"}, + {file = "frozenlist-1.7.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c193dda2b6d49f4c4398962810fa7d7c78f032bf45572b3e04dd5249dff27e08"}, + {file = "frozenlist-1.7.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfe2b675cf0aaa6d61bf8fbffd3c274b3c9b7b1623beb3809df8a81399a4a9c4"}, + {file = "frozenlist-1.7.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8fc5d5cda37f62b262405cf9652cf0856839c4be8ee41be0afe8858f17f4c94b"}, + {file = "frozenlist-1.7.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0d5ce521d1dd7d620198829b87ea002956e4319002ef0bc8d3e6d045cb4646e"}, + {file = "frozenlist-1.7.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:488d0a7d6a0008ca0db273c542098a0fa9e7dfaa7e57f70acef43f32b3f69dca"}, + {file = "frozenlist-1.7.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:15a7eaba63983d22c54d255b854e8108e7e5f3e89f647fc854bd77a237e767df"}, + {file = "frozenlist-1.7.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1eaa7e9c6d15df825bf255649e05bd8a74b04a4d2baa1ae46d9c2d00b2ca2cb5"}, + {file = "frozenlist-1.7.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4389e06714cfa9d47ab87f784a7c5be91d3934cd6e9a7b85beef808297cc025"}, + {file = "frozenlist-1.7.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:73bd45e1488c40b63fe5a7df892baf9e2a4d4bb6409a2b3b78ac1c6236178e01"}, + {file = "frozenlist-1.7.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:99886d98e1643269760e5fe0df31e5ae7050788dd288947f7f007209b8c33f08"}, + {file = "frozenlist-1.7.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:290a172aae5a4c278c6da8a96222e6337744cd9c77313efe33d5670b9f65fc43"}, + {file = "frozenlist-1.7.0-cp312-cp312-win32.whl", hash = "sha256:426c7bc70e07cfebc178bc4c2bf2d861d720c4fff172181eeb4a4c41d4ca2ad3"}, + {file = "frozenlist-1.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:563b72efe5da92e02eb68c59cb37205457c977aa7a449ed1b37e6939e5c47c6a"}, + {file = "frozenlist-1.7.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee80eeda5e2a4e660651370ebffd1286542b67e268aa1ac8d6dbe973120ef7ee"}, + {file = "frozenlist-1.7.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d1a81c85417b914139e3a9b995d4a1c84559afc839a93cf2cb7f15e6e5f6ed2d"}, + {file = "frozenlist-1.7.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cbb65198a9132ebc334f237d7b0df163e4de83fb4f2bdfe46c1e654bdb0c5d43"}, + {file = "frozenlist-1.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dab46c723eeb2c255a64f9dc05b8dd601fde66d6b19cdb82b2e09cc6ff8d8b5d"}, + {file = "frozenlist-1.7.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:6aeac207a759d0dedd2e40745575ae32ab30926ff4fa49b1635def65806fddee"}, + {file = "frozenlist-1.7.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bd8c4e58ad14b4fa7802b8be49d47993182fdd4023393899632c88fd8cd994eb"}, + {file = "frozenlist-1.7.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04fb24d104f425da3540ed83cbfc31388a586a7696142004c577fa61c6298c3f"}, + {file = "frozenlist-1.7.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a5c505156368e4ea6b53b5ac23c92d7edc864537ff911d2fb24c140bb175e60"}, + {file = "frozenlist-1.7.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bd7eb96a675f18aa5c553eb7ddc24a43c8c18f22e1f9925528128c052cdbe00"}, + {file = "frozenlist-1.7.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:05579bf020096fe05a764f1f84cd104a12f78eaab68842d036772dc6d4870b4b"}, + {file = "frozenlist-1.7.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:376b6222d114e97eeec13d46c486facd41d4f43bab626b7c3f6a8b4e81a5192c"}, + {file = "frozenlist-1.7.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0aa7e176ebe115379b5b1c95b4096fb1c17cce0847402e227e712c27bdb5a949"}, + {file = "frozenlist-1.7.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:3fbba20e662b9c2130dc771e332a99eff5da078b2b2648153a40669a6d0e36ca"}, + {file = "frozenlist-1.7.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:f3f4410a0a601d349dd406b5713fec59b4cee7e71678d5b17edda7f4655a940b"}, + {file = "frozenlist-1.7.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e2cdfaaec6a2f9327bf43c933c0319a7c429058e8537c508964a133dffee412e"}, + {file = "frozenlist-1.7.0-cp313-cp313-win32.whl", hash = "sha256:5fc4df05a6591c7768459caba1b342d9ec23fa16195e744939ba5914596ae3e1"}, + {file = "frozenlist-1.7.0-cp313-cp313-win_amd64.whl", hash = "sha256:52109052b9791a3e6b5d1b65f4b909703984b770694d3eb64fad124c835d7cba"}, + {file = "frozenlist-1.7.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a6f86e4193bb0e235ef6ce3dde5cbabed887e0b11f516ce8a0f4d3b33078ec2d"}, + {file = "frozenlist-1.7.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:82d664628865abeb32d90ae497fb93df398a69bb3434463d172b80fc25b0dd7d"}, + {file = "frozenlist-1.7.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:912a7e8375a1c9a68325a902f3953191b7b292aa3c3fb0d71a216221deca460b"}, + {file = "frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9537c2777167488d539bc5de2ad262efc44388230e5118868e172dd4a552b146"}, + {file = "frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:f34560fb1b4c3e30ba35fa9a13894ba39e5acfc5f60f57d8accde65f46cc5e74"}, + {file = "frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:acd03d224b0175f5a850edc104ac19040d35419eddad04e7cf2d5986d98427f1"}, + {file = "frozenlist-1.7.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2038310bc582f3d6a09b3816ab01737d60bf7b1ec70f5356b09e84fb7408ab1"}, + {file = "frozenlist-1.7.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8c05e4c8e5f36e5e088caa1bf78a687528f83c043706640a92cb76cd6999384"}, + {file = "frozenlist-1.7.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:765bb588c86e47d0b68f23c1bee323d4b703218037765dcf3f25c838c6fecceb"}, + {file = "frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:32dc2e08c67d86d0969714dd484fd60ff08ff81d1a1e40a77dd34a387e6ebc0c"}, + {file = "frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:c0303e597eb5a5321b4de9c68e9845ac8f290d2ab3f3e2c864437d3c5a30cd65"}, + {file = "frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:a47f2abb4e29b3a8d0b530f7c3598badc6b134562b1a5caee867f7c62fee51e3"}, + {file = "frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:3d688126c242a6fabbd92e02633414d40f50bb6002fa4cf995a1d18051525657"}, + {file = "frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:4e7e9652b3d367c7bd449a727dc79d5043f48b88d0cbfd4f9f1060cf2b414104"}, + {file = "frozenlist-1.7.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1a85e345b4c43db8b842cab1feb41be5cc0b10a1830e6295b69d7310f99becaf"}, + {file = "frozenlist-1.7.0-cp313-cp313t-win32.whl", hash = "sha256:3a14027124ddb70dfcee5148979998066897e79f89f64b13328595c4bdf77c81"}, + {file = "frozenlist-1.7.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3bf8010d71d4507775f658e9823210b7427be36625b387221642725b515dcf3e"}, + {file = "frozenlist-1.7.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cea3dbd15aea1341ea2de490574a4a37ca080b2ae24e4b4f4b51b9057b4c3630"}, + {file = "frozenlist-1.7.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7d536ee086b23fecc36c2073c371572374ff50ef4db515e4e503925361c24f71"}, + {file = "frozenlist-1.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dfcebf56f703cb2e346315431699f00db126d158455e513bd14089d992101e44"}, + {file = "frozenlist-1.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:974c5336e61d6e7eb1ea5b929cb645e882aadab0095c5a6974a111e6479f8878"}, + {file = "frozenlist-1.7.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c70db4a0ab5ab20878432c40563573229a7ed9241506181bba12f6b7d0dc41cb"}, + {file = "frozenlist-1.7.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1137b78384eebaf70560a36b7b229f752fb64d463d38d1304939984d5cb887b6"}, + {file = "frozenlist-1.7.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e793a9f01b3e8b5c0bc646fb59140ce0efcc580d22a3468d70766091beb81b35"}, + {file = "frozenlist-1.7.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:74739ba8e4e38221d2c5c03d90a7e542cb8ad681915f4ca8f68d04f810ee0a87"}, + {file = "frozenlist-1.7.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e63344c4e929b1a01e29bc184bbb5fd82954869033765bfe8d65d09e336a677"}, + {file = "frozenlist-1.7.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2ea2a7369eb76de2217a842f22087913cdf75f63cf1307b9024ab82dfb525938"}, + {file = "frozenlist-1.7.0-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:836b42f472a0e006e02499cef9352ce8097f33df43baaba3e0a28a964c26c7d2"}, + {file = "frozenlist-1.7.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e22b9a99741294b2571667c07d9f8cceec07cb92aae5ccda39ea1b6052ed4319"}, + {file = "frozenlist-1.7.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:9a19e85cc503d958abe5218953df722748d87172f71b73cf3c9257a91b999890"}, + {file = "frozenlist-1.7.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f22dac33bb3ee8fe3e013aa7b91dc12f60d61d05b7fe32191ffa84c3aafe77bd"}, + {file = "frozenlist-1.7.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9ccec739a99e4ccf664ea0775149f2749b8a6418eb5b8384b4dc0a7d15d304cb"}, + {file = "frozenlist-1.7.0-cp39-cp39-win32.whl", hash = "sha256:b3950f11058310008a87757f3eee16a8e1ca97979833239439586857bc25482e"}, + {file = "frozenlist-1.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:43a82fce6769c70f2f5a06248b614a7d268080a9d20f7457ef10ecee5af82b63"}, + {file = "frozenlist-1.7.0-py3-none-any.whl", hash = "sha256:9a5af342e34f7e97caf8c995864c7a396418ae2859cc6fdf1b1073020d516a7e"}, + {file = "frozenlist-1.7.0.tar.gz", hash = "sha256:2e310d81923c2437ea8670467121cc3e9b0f76d3043cc1d2331d56c7fb7a3a8f"}, +] + [[package]] name = "identify" version = "2.6.12" @@ -416,6 +740,129 @@ files = [ {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, ] +[[package]] +name = "multidict" +version = "6.6.3" +description = "multidict implementation" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "multidict-6.6.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a2be5b7b35271f7fff1397204ba6708365e3d773579fe2a30625e16c4b4ce817"}, + {file = "multidict-6.6.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:12f4581d2930840295c461764b9a65732ec01250b46c6b2c510d7ee68872b140"}, + {file = "multidict-6.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dd7793bab517e706c9ed9d7310b06c8672fd0aeee5781bfad612f56b8e0f7d14"}, + {file = "multidict-6.6.3-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:72d8815f2cd3cf3df0f83cac3f3ef801d908b2d90409ae28102e0553af85545a"}, + {file = "multidict-6.6.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:531e331a2ee53543ab32b16334e2deb26f4e6b9b28e41f8e0c87e99a6c8e2d69"}, + {file = "multidict-6.6.3-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:42ca5aa9329a63be8dc49040f63817d1ac980e02eeddba763a9ae5b4027b9c9c"}, + {file = "multidict-6.6.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:208b9b9757060b9faa6f11ab4bc52846e4f3c2fb8b14d5680c8aac80af3dc751"}, + {file = "multidict-6.6.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:acf6b97bd0884891af6a8b43d0f586ab2fcf8e717cbd47ab4bdddc09e20652d8"}, + {file = "multidict-6.6.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:68e9e12ed00e2089725669bdc88602b0b6f8d23c0c95e52b95f0bc69f7fe9b55"}, + {file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:05db2f66c9addb10cfa226e1acb363450fab2ff8a6df73c622fefe2f5af6d4e7"}, + {file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:0db58da8eafb514db832a1b44f8fa7906fdd102f7d982025f816a93ba45e3dcb"}, + {file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:14117a41c8fdb3ee19c743b1c027da0736fdb79584d61a766da53d399b71176c"}, + {file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:877443eaaabcd0b74ff32ebeed6f6176c71850feb7d6a1d2db65945256ea535c"}, + {file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:70b72e749a4f6e7ed8fb334fa8d8496384840319512746a5f42fa0aec79f4d61"}, + {file = "multidict-6.6.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:43571f785b86afd02b3855c5ac8e86ec921b760298d6f82ff2a61daf5a35330b"}, + {file = "multidict-6.6.3-cp310-cp310-win32.whl", hash = "sha256:20c5a0c3c13a15fd5ea86c42311859f970070e4e24de5a550e99d7c271d76318"}, + {file = "multidict-6.6.3-cp310-cp310-win_amd64.whl", hash = "sha256:ab0a34a007704c625e25a9116c6770b4d3617a071c8a7c30cd338dfbadfe6485"}, + {file = "multidict-6.6.3-cp310-cp310-win_arm64.whl", hash = "sha256:769841d70ca8bdd140a715746199fc6473414bd02efd678d75681d2d6a8986c5"}, + {file = "multidict-6.6.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:18f4eba0cbac3546b8ae31e0bbc55b02c801ae3cbaf80c247fcdd89b456ff58c"}, + {file = "multidict-6.6.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef43b5dd842382329e4797c46f10748d8c2b6e0614f46b4afe4aee9ac33159df"}, + {file = "multidict-6.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bf9bd1fd5eec01494e0f2e8e446a74a85d5e49afb63d75a9934e4a5423dba21d"}, + {file = "multidict-6.6.3-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:5bd8d6f793a787153956cd35e24f60485bf0651c238e207b9a54f7458b16d539"}, + {file = "multidict-6.6.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1bf99b4daf908c73856bd87ee0a2499c3c9a3d19bb04b9c6025e66af3fd07462"}, + {file = "multidict-6.6.3-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0b9e59946b49dafaf990fd9c17ceafa62976e8471a14952163d10a7a630413a9"}, + {file = "multidict-6.6.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e2db616467070d0533832d204c54eea6836a5e628f2cb1e6dfd8cd6ba7277cb7"}, + {file = "multidict-6.6.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:7394888236621f61dcdd25189b2768ae5cc280f041029a5bcf1122ac63df79f9"}, + {file = "multidict-6.6.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f114d8478733ca7388e7c7e0ab34b72547476b97009d643644ac33d4d3fe1821"}, + {file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cdf22e4db76d323bcdc733514bf732e9fb349707c98d341d40ebcc6e9318ef3d"}, + {file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e995a34c3d44ab511bfc11aa26869b9d66c2d8c799fa0e74b28a473a692532d6"}, + {file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:766a4a5996f54361d8d5a9050140aa5362fe48ce51c755a50c0bc3706460c430"}, + {file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3893a0d7d28a7fe6ca7a1f760593bc13038d1d35daf52199d431b61d2660602b"}, + {file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:934796c81ea996e61914ba58064920d6cad5d99140ac3167901eb932150e2e56"}, + {file = "multidict-6.6.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9ed948328aec2072bc00f05d961ceadfd3e9bfc2966c1319aeaf7b7c21219183"}, + {file = "multidict-6.6.3-cp311-cp311-win32.whl", hash = "sha256:9f5b28c074c76afc3e4c610c488e3493976fe0e596dd3db6c8ddfbb0134dcac5"}, + {file = "multidict-6.6.3-cp311-cp311-win_amd64.whl", hash = "sha256:bc7f6fbc61b1c16050a389c630da0b32fc6d4a3d191394ab78972bf5edc568c2"}, + {file = "multidict-6.6.3-cp311-cp311-win_arm64.whl", hash = "sha256:d4e47d8faffaae822fb5cba20937c048d4f734f43572e7079298a6c39fb172cb"}, + {file = "multidict-6.6.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:056bebbeda16b2e38642d75e9e5310c484b7c24e3841dc0fb943206a72ec89d6"}, + {file = "multidict-6.6.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e5f481cccb3c5c5e5de5d00b5141dc589c1047e60d07e85bbd7dea3d4580d63f"}, + {file = "multidict-6.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:10bea2ee839a759ee368b5a6e47787f399b41e70cf0c20d90dfaf4158dfb4e55"}, + {file = "multidict-6.6.3-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:2334cfb0fa9549d6ce2c21af2bfbcd3ac4ec3646b1b1581c88e3e2b1779ec92b"}, + {file = "multidict-6.6.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b8fee016722550a2276ca2cb5bb624480e0ed2bd49125b2b73b7010b9090e888"}, + {file = "multidict-6.6.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5511cb35f5c50a2db21047c875eb42f308c5583edf96bd8ebf7d770a9d68f6d"}, + {file = "multidict-6.6.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:712b348f7f449948e0a6c4564a21c7db965af900973a67db432d724619b3c680"}, + {file = "multidict-6.6.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e4e15d2138ee2694e038e33b7c3da70e6b0ad8868b9f8094a72e1414aeda9c1a"}, + {file = "multidict-6.6.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8df25594989aebff8a130f7899fa03cbfcc5d2b5f4a461cf2518236fe6f15961"}, + {file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:159ca68bfd284a8860f8d8112cf0521113bffd9c17568579e4d13d1f1dc76b65"}, + {file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e098c17856a8c9ade81b4810888c5ad1914099657226283cab3062c0540b0643"}, + {file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:67c92ed673049dec52d7ed39f8cf9ebbadf5032c774058b4406d18c8f8fe7063"}, + {file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:bd0578596e3a835ef451784053cfd327d607fc39ea1a14812139339a18a0dbc3"}, + {file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:346055630a2df2115cd23ae271910b4cae40f4e336773550dca4889b12916e75"}, + {file = "multidict-6.6.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:555ff55a359302b79de97e0468e9ee80637b0de1fce77721639f7cd9440b3a10"}, + {file = "multidict-6.6.3-cp312-cp312-win32.whl", hash = "sha256:73ab034fb8d58ff85c2bcbadc470efc3fafeea8affcf8722855fb94557f14cc5"}, + {file = "multidict-6.6.3-cp312-cp312-win_amd64.whl", hash = "sha256:04cbcce84f63b9af41bad04a54d4cc4e60e90c35b9e6ccb130be2d75b71f8c17"}, + {file = "multidict-6.6.3-cp312-cp312-win_arm64.whl", hash = "sha256:0f1130b896ecb52d2a1e615260f3ea2af55fa7dc3d7c3003ba0c3121a759b18b"}, + {file = "multidict-6.6.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:540d3c06d48507357a7d57721e5094b4f7093399a0106c211f33540fdc374d55"}, + {file = "multidict-6.6.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9c19cea2a690f04247d43f366d03e4eb110a0dc4cd1bbeee4d445435428ed35b"}, + {file = "multidict-6.6.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7af039820cfd00effec86bda5d8debef711a3e86a1d3772e85bea0f243a4bd65"}, + {file = "multidict-6.6.3-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:500b84f51654fdc3944e936f2922114349bf8fdcac77c3092b03449f0e5bc2b3"}, + {file = "multidict-6.6.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3fc723ab8a5c5ed6c50418e9bfcd8e6dceba6c271cee6728a10a4ed8561520c"}, + {file = "multidict-6.6.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:94c47ea3ade005b5976789baaed66d4de4480d0a0bf31cef6edaa41c1e7b56a6"}, + {file = "multidict-6.6.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dbc7cf464cc6d67e83e136c9f55726da3a30176f020a36ead246eceed87f1cd8"}, + {file = "multidict-6.6.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:900eb9f9da25ada070f8ee4a23f884e0ee66fe4e1a38c3af644256a508ad81ca"}, + {file = "multidict-6.6.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7c6df517cf177da5d47ab15407143a89cd1a23f8b335f3a28d57e8b0a3dbb884"}, + {file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4ef421045f13879e21c994b36e728d8e7d126c91a64b9185810ab51d474f27e7"}, + {file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:6c1e61bb4f80895c081790b6b09fa49e13566df8fbff817da3f85b3a8192e36b"}, + {file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e5e8523bb12d7623cd8300dbd91b9e439a46a028cd078ca695eb66ba31adee3c"}, + {file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:ef58340cc896219e4e653dade08fea5c55c6df41bcc68122e3be3e9d873d9a7b"}, + {file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fc9dc435ec8699e7b602b94fe0cd4703e69273a01cbc34409af29e7820f777f1"}, + {file = "multidict-6.6.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9e864486ef4ab07db5e9cb997bad2b681514158d6954dd1958dfb163b83d53e6"}, + {file = "multidict-6.6.3-cp313-cp313-win32.whl", hash = "sha256:5633a82fba8e841bc5c5c06b16e21529573cd654f67fd833650a215520a6210e"}, + {file = "multidict-6.6.3-cp313-cp313-win_amd64.whl", hash = "sha256:e93089c1570a4ad54c3714a12c2cef549dc9d58e97bcded193d928649cab78e9"}, + {file = "multidict-6.6.3-cp313-cp313-win_arm64.whl", hash = "sha256:c60b401f192e79caec61f166da9c924e9f8bc65548d4246842df91651e83d600"}, + {file = "multidict-6.6.3-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:02fd8f32d403a6ff13864b0851f1f523d4c988051eea0471d4f1fd8010f11134"}, + {file = "multidict-6.6.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f3aa090106b1543f3f87b2041eef3c156c8da2aed90c63a2fbed62d875c49c37"}, + {file = "multidict-6.6.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e924fb978615a5e33ff644cc42e6aa241effcf4f3322c09d4f8cebde95aff5f8"}, + {file = "multidict-6.6.3-cp313-cp313t-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:b9fe5a0e57c6dbd0e2ce81ca66272282c32cd11d31658ee9553849d91289e1c1"}, + {file = "multidict-6.6.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b24576f208793ebae00280c59927c3b7c2a3b1655e443a25f753c4611bc1c373"}, + {file = "multidict-6.6.3-cp313-cp313t-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:135631cb6c58eac37d7ac0df380294fecdc026b28837fa07c02e459c7fb9c54e"}, + {file = "multidict-6.6.3-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:274d416b0df887aef98f19f21578653982cfb8a05b4e187d4a17103322eeaf8f"}, + {file = "multidict-6.6.3-cp313-cp313t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e252017a817fad7ce05cafbe5711ed40faeb580e63b16755a3a24e66fa1d87c0"}, + {file = "multidict-6.6.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2e4cc8d848cd4fe1cdee28c13ea79ab0ed37fc2e89dd77bac86a2e7959a8c3bc"}, + {file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9e236a7094b9c4c1b7585f6b9cca34b9d833cf079f7e4c49e6a4a6ec9bfdc68f"}, + {file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:e0cb0ab69915c55627c933f0b555a943d98ba71b4d1c57bc0d0a66e2567c7471"}, + {file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:81ef2f64593aba09c5212a3d0f8c906a0d38d710a011f2f42759704d4557d3f2"}, + {file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:b9cbc60010de3562545fa198bfc6d3825df430ea96d2cc509c39bd71e2e7d648"}, + {file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:70d974eaaa37211390cd02ef93b7e938de564bbffa866f0b08d07e5e65da783d"}, + {file = "multidict-6.6.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3713303e4a6663c6d01d648a68f2848701001f3390a030edaaf3fc949c90bf7c"}, + {file = "multidict-6.6.3-cp313-cp313t-win32.whl", hash = "sha256:639ecc9fe7cd73f2495f62c213e964843826f44505a3e5d82805aa85cac6f89e"}, + {file = "multidict-6.6.3-cp313-cp313t-win_amd64.whl", hash = "sha256:9f97e181f344a0ef3881b573d31de8542cc0dbc559ec68c8f8b5ce2c2e91646d"}, + {file = "multidict-6.6.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ce8b7693da41a3c4fde5871c738a81490cea5496c671d74374c8ab889e1834fb"}, + {file = "multidict-6.6.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c8161b5a7778d3137ea2ee7ae8a08cce0010de3b00ac671c5ebddeaa17cefd22"}, + {file = "multidict-6.6.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1328201ee930f069961ae707d59c6627ac92e351ed5b92397cf534d1336ce557"}, + {file = "multidict-6.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b1db4d2093d6b235de76932febf9d50766cf49a5692277b2c28a501c9637f616"}, + {file = "multidict-6.6.3-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53becb01dd8ebd19d1724bebe369cfa87e4e7f29abbbe5c14c98ce4c383e16cd"}, + {file = "multidict-6.6.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41bb9d1d4c303886e2d85bade86e59885112a7f4277af5ad47ab919a2251f306"}, + {file = "multidict-6.6.3-cp39-cp39-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:775b464d31dac90f23192af9c291dc9f423101857e33e9ebf0020a10bfcf4144"}, + {file = "multidict-6.6.3-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d04d01f0a913202205a598246cf77826fe3baa5a63e9f6ccf1ab0601cf56eca0"}, + {file = "multidict-6.6.3-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d25594d3b38a2e6cabfdcafef339f754ca6e81fbbdb6650ad773ea9775af35ab"}, + {file = "multidict-6.6.3-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:35712f1748d409e0707b165bf49f9f17f9e28ae85470c41615778f8d4f7d9609"}, + {file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1c8082e5814b662de8589d6a06c17e77940d5539080cbab9fe6794b5241b76d9"}, + {file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:61af8a4b771f1d4d000b3168c12c3120ccf7284502a94aa58c68a81f5afac090"}, + {file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:448e4a9afccbf297577f2eaa586f07067441e7b63c8362a3540ba5a38dc0f14a"}, + {file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:233ad16999afc2bbd3e534ad8dbe685ef8ee49a37dbc2cdc9514e57b6d589ced"}, + {file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:bb933c891cd4da6bdcc9733d048e994e22e1883287ff7540c2a0f3b117605092"}, + {file = "multidict-6.6.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:37b09ca60998e87734699e88c2363abfd457ed18cfbf88e4009a4e83788e63ed"}, + {file = "multidict-6.6.3-cp39-cp39-win32.whl", hash = "sha256:f54cb79d26d0cd420637d184af38f0668558f3c4bbe22ab7ad830e67249f2e0b"}, + {file = "multidict-6.6.3-cp39-cp39-win_amd64.whl", hash = "sha256:295adc9c0551e5d5214b45cf29ca23dbc28c2d197a9c30d51aed9e037cb7c578"}, + {file = "multidict-6.6.3-cp39-cp39-win_arm64.whl", hash = "sha256:15332783596f227db50fb261c2c251a58ac3873c457f3a550a95d5c0aa3c770d"}, + {file = "multidict-6.6.3-py3-none-any.whl", hash = "sha256:8db10f29c7541fc5da4defd8cd697e1ca429db743fa716325f236079b96f775a"}, + {file = "multidict-6.6.3.tar.gz", hash = "sha256:798a9eb12dab0a6c2e29c1de6f3468af5cb2da6053a20dfa3344907eed0937cc"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} + [[package]] name = "nodeenv" version = "1.9.1" @@ -507,6 +954,248 @@ files = [ [package.extras] twisted = ["twisted"] +[[package]] +name = "propcache" +version = "0.3.2" +description = "Accelerated property cache" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "propcache-0.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:22d9962a358aedbb7a2e36187ff273adeaab9743373a272976d2e348d08c7770"}, + {file = "propcache-0.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0d0fda578d1dc3f77b6b5a5dce3b9ad69a8250a891760a548df850a5e8da87f3"}, + {file = "propcache-0.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3def3da3ac3ce41562d85db655d18ebac740cb3fa4367f11a52b3da9d03a5cc3"}, + {file = "propcache-0.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bec58347a5a6cebf239daba9bda37dffec5b8d2ce004d9fe4edef3d2815137e"}, + {file = "propcache-0.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55ffda449a507e9fbd4aca1a7d9aa6753b07d6166140e5a18d2ac9bc49eac220"}, + {file = "propcache-0.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64a67fb39229a8a8491dd42f864e5e263155e729c2e7ff723d6e25f596b1e8cb"}, + {file = "propcache-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9da1cf97b92b51253d5b68cf5a2b9e0dafca095e36b7f2da335e27dc6172a614"}, + {file = "propcache-0.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5f559e127134b07425134b4065be45b166183fdcb433cb6c24c8e4149056ad50"}, + {file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aff2e4e06435d61f11a428360a932138d0ec288b0a31dd9bd78d200bd4a2b339"}, + {file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:4927842833830942a5d0a56e6f4839bc484785b8e1ce8d287359794818633ba0"}, + {file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6107ddd08b02654a30fb8ad7a132021759d750a82578b94cd55ee2772b6ebea2"}, + {file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:70bd8b9cd6b519e12859c99f3fc9a93f375ebd22a50296c3a295028bea73b9e7"}, + {file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2183111651d710d3097338dd1893fcf09c9f54e27ff1a8795495a16a469cc90b"}, + {file = "propcache-0.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fb075ad271405dcad8e2a7ffc9a750a3bf70e533bd86e89f0603e607b93aa64c"}, + {file = "propcache-0.3.2-cp310-cp310-win32.whl", hash = "sha256:404d70768080d3d3bdb41d0771037da19d8340d50b08e104ca0e7f9ce55fce70"}, + {file = "propcache-0.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:7435d766f978b4ede777002e6b3b6641dd229cd1da8d3d3106a45770365f9ad9"}, + {file = "propcache-0.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b8d2f607bd8f80ddc04088bc2a037fdd17884a6fcadc47a96e334d72f3717be"}, + {file = "propcache-0.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06766d8f34733416e2e34f46fea488ad5d60726bb9481d3cddf89a6fa2d9603f"}, + {file = "propcache-0.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a2dc1f4a1df4fecf4e6f68013575ff4af84ef6f478fe5344317a65d38a8e6dc9"}, + {file = "propcache-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:be29c4f4810c5789cf10ddf6af80b041c724e629fa51e308a7a0fb19ed1ef7bf"}, + {file = "propcache-0.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59d61f6970ecbd8ff2e9360304d5c8876a6abd4530cb752c06586849ac8a9dc9"}, + {file = "propcache-0.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:62180e0b8dbb6b004baec00a7983e4cc52f5ada9cd11f48c3528d8cfa7b96a66"}, + {file = "propcache-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c144ca294a204c470f18cf4c9d78887810d04a3e2fbb30eea903575a779159df"}, + {file = "propcache-0.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5c2a784234c28854878d68978265617aa6dc0780e53d44b4d67f3651a17a9a2"}, + {file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5745bc7acdafa978ca1642891b82c19238eadc78ba2aaa293c6863b304e552d7"}, + {file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:c0075bf773d66fa8c9d41f66cc132ecc75e5bb9dd7cce3cfd14adc5ca184cb95"}, + {file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5f57aa0847730daceff0497f417c9de353c575d8da3579162cc74ac294c5369e"}, + {file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:eef914c014bf72d18efb55619447e0aecd5fb7c2e3fa7441e2e5d6099bddff7e"}, + {file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a4092e8549031e82facf3decdbc0883755d5bbcc62d3aea9d9e185549936dcf"}, + {file = "propcache-0.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:85871b050f174bc0bfb437efbdb68aaf860611953ed12418e4361bc9c392749e"}, + {file = "propcache-0.3.2-cp311-cp311-win32.whl", hash = "sha256:36c8d9b673ec57900c3554264e630d45980fd302458e4ac801802a7fd2ef7897"}, + {file = "propcache-0.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53af8cb6a781b02d2ea079b5b853ba9430fcbe18a8e3ce647d5982a3ff69f39"}, + {file = "propcache-0.3.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8de106b6c84506b31c27168582cd3cb3000a6412c16df14a8628e5871ff83c10"}, + {file = "propcache-0.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:28710b0d3975117239c76600ea351934ac7b5ff56e60953474342608dbbb6154"}, + {file = "propcache-0.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce26862344bdf836650ed2487c3d724b00fbfec4233a1013f597b78c1cb73615"}, + {file = "propcache-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bca54bd347a253af2cf4544bbec232ab982f4868de0dd684246b67a51bc6b1db"}, + {file = "propcache-0.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:55780d5e9a2ddc59711d727226bb1ba83a22dd32f64ee15594b9392b1f544eb1"}, + {file = "propcache-0.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:035e631be25d6975ed87ab23153db6a73426a48db688070d925aa27e996fe93c"}, + {file = "propcache-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee6f22b6eaa39297c751d0e80c0d3a454f112f5c6481214fcf4c092074cecd67"}, + {file = "propcache-0.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ca3aee1aa955438c4dba34fc20a9f390e4c79967257d830f137bd5a8a32ed3b"}, + {file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7a4f30862869fa2b68380d677cc1c5fcf1e0f2b9ea0cf665812895c75d0ca3b8"}, + {file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:b77ec3c257d7816d9f3700013639db7491a434644c906a2578a11daf13176251"}, + {file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:cab90ac9d3f14b2d5050928483d3d3b8fb6b4018893fc75710e6aa361ecb2474"}, + {file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0b504d29f3c47cf6b9e936c1852246c83d450e8e063d50562115a6be6d3a2535"}, + {file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:ce2ac2675a6aa41ddb2a0c9cbff53780a617ac3d43e620f8fd77ba1c84dcfc06"}, + {file = "propcache-0.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:62b4239611205294cc433845b914131b2a1f03500ff3c1ed093ed216b82621e1"}, + {file = "propcache-0.3.2-cp312-cp312-win32.whl", hash = "sha256:df4a81b9b53449ebc90cc4deefb052c1dd934ba85012aa912c7ea7b7e38b60c1"}, + {file = "propcache-0.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:7046e79b989d7fe457bb755844019e10f693752d169076138abf17f31380800c"}, + {file = "propcache-0.3.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ca592ed634a73ca002967458187109265e980422116c0a107cf93d81f95af945"}, + {file = "propcache-0.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9ecb0aad4020e275652ba3975740f241bd12a61f1a784df044cf7477a02bc252"}, + {file = "propcache-0.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7f08f1cc28bd2eade7a8a3d2954ccc673bb02062e3e7da09bc75d843386b342f"}, + {file = "propcache-0.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1a342c834734edb4be5ecb1e9fb48cb64b1e2320fccbd8c54bf8da8f2a84c33"}, + {file = "propcache-0.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a544caaae1ac73f1fecfae70ded3e93728831affebd017d53449e3ac052ac1e"}, + {file = "propcache-0.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:310d11aa44635298397db47a3ebce7db99a4cc4b9bbdfcf6c98a60c8d5261cf1"}, + {file = "propcache-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c1396592321ac83157ac03a2023aa6cc4a3cc3cfdecb71090054c09e5a7cce3"}, + {file = "propcache-0.3.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cabf5b5902272565e78197edb682017d21cf3b550ba0460ee473753f28d23c1"}, + {file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0a2f2235ac46a7aa25bdeb03a9e7060f6ecbd213b1f9101c43b3090ffb971ef6"}, + {file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:92b69e12e34869a6970fd2f3da91669899994b47c98f5d430b781c26f1d9f387"}, + {file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:54e02207c79968ebbdffc169591009f4474dde3b4679e16634d34c9363ff56b4"}, + {file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4adfb44cb588001f68c5466579d3f1157ca07f7504fc91ec87862e2b8e556b88"}, + {file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:fd3e6019dc1261cd0291ee8919dd91fbab7b169bb76aeef6c716833a3f65d206"}, + {file = "propcache-0.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4c181cad81158d71c41a2bce88edce078458e2dd5ffee7eddd6b05da85079f43"}, + {file = "propcache-0.3.2-cp313-cp313-win32.whl", hash = "sha256:8a08154613f2249519e549de2330cf8e2071c2887309a7b07fb56098f5170a02"}, + {file = "propcache-0.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e41671f1594fc4ab0a6dec1351864713cb3a279910ae8b58f884a88a0a632c05"}, + {file = "propcache-0.3.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:9a3cf035bbaf035f109987d9d55dc90e4b0e36e04bbbb95af3055ef17194057b"}, + {file = "propcache-0.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:156c03d07dc1323d8dacaa221fbe028c5c70d16709cdd63502778e6c3ccca1b0"}, + {file = "propcache-0.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:74413c0ba02ba86f55cf60d18daab219f7e531620c15f1e23d95563f505efe7e"}, + {file = "propcache-0.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f066b437bb3fa39c58ff97ab2ca351db465157d68ed0440abecb21715eb24b28"}, + {file = "propcache-0.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1304b085c83067914721e7e9d9917d41ad87696bf70f0bc7dee450e9c71ad0a"}, + {file = "propcache-0.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab50cef01b372763a13333b4e54021bdcb291fc9a8e2ccb9c2df98be51bcde6c"}, + {file = "propcache-0.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad3b2a085ec259ad2c2842666b2a0a49dea8463579c606426128925af1ed725"}, + {file = "propcache-0.3.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:261fa020c1c14deafd54c76b014956e2f86991af198c51139faf41c4d5e83892"}, + {file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:46d7f8aa79c927e5f987ee3a80205c987717d3659f035c85cf0c3680526bdb44"}, + {file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:6d8f3f0eebf73e3c0ff0e7853f68be638b4043c65a70517bb575eff54edd8dbe"}, + {file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:03c89c1b14a5452cf15403e291c0ccd7751d5b9736ecb2c5bab977ad6c5bcd81"}, + {file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:0cc17efde71e12bbaad086d679ce575268d70bc123a5a71ea7ad76f70ba30bba"}, + {file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:acdf05d00696bc0447e278bb53cb04ca72354e562cf88ea6f9107df8e7fd9770"}, + {file = "propcache-0.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4445542398bd0b5d32df908031cb1b30d43ac848e20470a878b770ec2dcc6330"}, + {file = "propcache-0.3.2-cp313-cp313t-win32.whl", hash = "sha256:f86e5d7cd03afb3a1db8e9f9f6eff15794e79e791350ac48a8c924e6f439f394"}, + {file = "propcache-0.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:9704bedf6e7cbe3c65eca4379a9b53ee6a83749f047808cbb5044d40d7d72198"}, + {file = "propcache-0.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a7fad897f14d92086d6b03fdd2eb844777b0c4d7ec5e3bac0fbae2ab0602bbe5"}, + {file = "propcache-0.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1f43837d4ca000243fd7fd6301947d7cb93360d03cd08369969450cc6b2ce3b4"}, + {file = "propcache-0.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:261df2e9474a5949c46e962065d88eb9b96ce0f2bd30e9d3136bcde84befd8f2"}, + {file = "propcache-0.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e514326b79e51f0a177daab1052bc164d9d9e54133797a3a58d24c9c87a3fe6d"}, + {file = "propcache-0.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4a996adb6904f85894570301939afeee65f072b4fd265ed7e569e8d9058e4ec"}, + {file = "propcache-0.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76cace5d6b2a54e55b137669b30f31aa15977eeed390c7cbfb1dafa8dfe9a701"}, + {file = "propcache-0.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31248e44b81d59d6addbb182c4720f90b44e1efdc19f58112a3c3a1615fb47ef"}, + {file = "propcache-0.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abb7fa19dbf88d3857363e0493b999b8011eea856b846305d8c0512dfdf8fbb1"}, + {file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d81ac3ae39d38588ad0549e321e6f773a4e7cc68e7751524a22885d5bbadf886"}, + {file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:cc2782eb0f7a16462285b6f8394bbbd0e1ee5f928034e941ffc444012224171b"}, + {file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:db429c19a6c7e8a1c320e6a13c99799450f411b02251fb1b75e6217cf4a14fcb"}, + {file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:21d8759141a9e00a681d35a1f160892a36fb6caa715ba0b832f7747da48fb6ea"}, + {file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2ca6d378f09adb13837614ad2754fa8afaee330254f404299611bce41a8438cb"}, + {file = "propcache-0.3.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:34a624af06c048946709f4278b4176470073deda88d91342665d95f7c6270fbe"}, + {file = "propcache-0.3.2-cp39-cp39-win32.whl", hash = "sha256:4ba3fef1c30f306b1c274ce0b8baaa2c3cdd91f645c48f06394068f37d3837a1"}, + {file = "propcache-0.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:7a2368eed65fc69a7a7a40b27f22e85e7627b74216f0846b04ba5c116e191ec9"}, + {file = "propcache-0.3.2-py3-none-any.whl", hash = "sha256:98f1ec44fb675f5052cccc8e609c46ed23a35a1cfd18545ad4e29002d858a43f"}, + {file = "propcache-0.3.2.tar.gz", hash = "sha256:20d7d62e4e7ef05f221e0db2856b979540686342e7dd9973b815599c7057e168"}, +] + +[[package]] +name = "pydantic" +version = "2.11.7" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b"}, + {file = "pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db"}, +] + +[package.dependencies] +annotated-types = ">=0.6.0" +pydantic-core = "2.33.2" +typing-extensions = ">=4.12.2" +typing-inspection = ">=0.4.0" + +[package.extras] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""] + +[[package]] +name = "pydantic-core" +version = "2.33.2" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8"}, + {file = "pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a"}, + {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac"}, + {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a"}, + {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b"}, + {file = "pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22"}, + {file = "pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640"}, + {file = "pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7"}, + {file = "pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e"}, + {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d"}, + {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30"}, + {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf"}, + {file = "pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51"}, + {file = "pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab"}, + {file = "pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65"}, + {file = "pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc"}, + {file = "pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b"}, + {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1"}, + {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6"}, + {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea"}, + {file = "pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290"}, + {file = "pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2"}, + {file = "pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab"}, + {file = "pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f"}, + {file = "pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56"}, + {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5"}, + {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e"}, + {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162"}, + {file = "pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849"}, + {file = "pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9"}, + {file = "pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9"}, + {file = "pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac"}, + {file = "pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5"}, + {file = "pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9"}, + {file = "pydantic_core-2.33.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d"}, + {file = "pydantic_core-2.33.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a"}, + {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782"}, + {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9"}, + {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e"}, + {file = "pydantic_core-2.33.2-cp39-cp39-win32.whl", hash = "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9"}, + {file = "pydantic_core-2.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27"}, + {file = "pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + [[package]] name = "pygments" version = "2.19.2" @@ -577,6 +1266,27 @@ tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] +[[package]] +name = "pytest-asyncio" +version = "1.1.0" +description = "Pytest support for asyncio" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "pytest_asyncio-1.1.0-py3-none-any.whl", hash = "sha256:5fe2d69607b0bd75c656d1211f969cadba035030156745ee09e7d71740e58ecf"}, + {file = "pytest_asyncio-1.1.0.tar.gz", hash = "sha256:796aa822981e01b68c12e4827b8697108f7205020f24b5793b3c41555dab68ea"}, +] + +[package.dependencies] +backports-asyncio-runner = {version = ">=1.1,<2", markers = "python_version < \"3.11\""} +pytest = ">=8.2,<9" +typing-extensions = {version = ">=4.12", markers = "python_version < \"3.10\""} + +[package.extras] +docs = ["sphinx (>=5.3)", "sphinx-rtd-theme (>=1)"] +testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] + [[package]] name = "pytest-cov" version = "6.2.1" @@ -856,6 +1566,21 @@ files = [ ] markers = {dev = "python_version < \"3.11\""} +[[package]] +name = "typing-inspection" +version = "0.4.1" +description = "Runtime typing introspection tools" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51"}, + {file = "typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28"}, +] + +[package.dependencies] +typing-extensions = ">=4.12.0" + [[package]] name = "urllib3" version = "2.5.0" @@ -984,7 +1709,126 @@ files = [ {file = "wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3"}, ] +[[package]] +name = "yarl" +version = "1.20.1" +description = "Yet another URL library" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "yarl-1.20.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6032e6da6abd41e4acda34d75a816012717000fa6839f37124a47fcefc49bec4"}, + {file = "yarl-1.20.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2c7b34d804b8cf9b214f05015c4fee2ebe7ed05cf581e7192c06555c71f4446a"}, + {file = "yarl-1.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0c869f2651cc77465f6cd01d938d91a11d9ea5d798738c1dc077f3de0b5e5fed"}, + {file = "yarl-1.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62915e6688eb4d180d93840cda4110995ad50c459bf931b8b3775b37c264af1e"}, + {file = "yarl-1.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:41ebd28167bc6af8abb97fec1a399f412eec5fd61a3ccbe2305a18b84fb4ca73"}, + {file = "yarl-1.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21242b4288a6d56f04ea193adde174b7e347ac46ce6bc84989ff7c1b1ecea84e"}, + {file = "yarl-1.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bea21cdae6c7eb02ba02a475f37463abfe0a01f5d7200121b03e605d6a0439f8"}, + {file = "yarl-1.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f8a891e4a22a89f5dde7862994485e19db246b70bb288d3ce73a34422e55b23"}, + {file = "yarl-1.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd803820d44c8853a109a34e3660e5a61beae12970da479cf44aa2954019bf70"}, + {file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b982fa7f74c80d5c0c7b5b38f908971e513380a10fecea528091405f519b9ebb"}, + {file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:33f29ecfe0330c570d997bcf1afd304377f2e48f61447f37e846a6058a4d33b2"}, + {file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:835ab2cfc74d5eb4a6a528c57f05688099da41cf4957cf08cad38647e4a83b30"}, + {file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:46b5e0ccf1943a9a6e766b2c2b8c732c55b34e28be57d8daa2b3c1d1d4009309"}, + {file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:df47c55f7d74127d1b11251fe6397d84afdde0d53b90bedb46a23c0e534f9d24"}, + {file = "yarl-1.20.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76d12524d05841276b0e22573f28d5fbcb67589836772ae9244d90dd7d66aa13"}, + {file = "yarl-1.20.1-cp310-cp310-win32.whl", hash = "sha256:6c4fbf6b02d70e512d7ade4b1f998f237137f1417ab07ec06358ea04f69134f8"}, + {file = "yarl-1.20.1-cp310-cp310-win_amd64.whl", hash = "sha256:aef6c4d69554d44b7f9d923245f8ad9a707d971e6209d51279196d8e8fe1ae16"}, + {file = "yarl-1.20.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:47ee6188fea634bdfaeb2cc420f5b3b17332e6225ce88149a17c413c77ff269e"}, + {file = "yarl-1.20.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d0f6500f69e8402d513e5eedb77a4e1818691e8f45e6b687147963514d84b44b"}, + {file = "yarl-1.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7a8900a42fcdaad568de58887c7b2f602962356908eedb7628eaf6021a6e435b"}, + {file = "yarl-1.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bad6d131fda8ef508b36be3ece16d0902e80b88ea7200f030a0f6c11d9e508d4"}, + {file = "yarl-1.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:df018d92fe22aaebb679a7f89fe0c0f368ec497e3dda6cb81a567610f04501f1"}, + {file = "yarl-1.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f969afbb0a9b63c18d0feecf0db09d164b7a44a053e78a7d05f5df163e43833"}, + {file = "yarl-1.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:812303eb4aa98e302886ccda58d6b099e3576b1b9276161469c25803a8db277d"}, + {file = "yarl-1.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98c4a7d166635147924aa0bf9bfe8d8abad6fffa6102de9c99ea04a1376f91e8"}, + {file = "yarl-1.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12e768f966538e81e6e7550f9086a6236b16e26cd964cf4df35349970f3551cf"}, + {file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fe41919b9d899661c5c28a8b4b0acf704510b88f27f0934ac7a7bebdd8938d5e"}, + {file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:8601bc010d1d7780592f3fc1bdc6c72e2b6466ea34569778422943e1a1f3c389"}, + {file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:daadbdc1f2a9033a2399c42646fbd46da7992e868a5fe9513860122d7fe7a73f"}, + {file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:03aa1e041727cb438ca762628109ef1333498b122e4c76dd858d186a37cec845"}, + {file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:642980ef5e0fa1de5fa96d905c7e00cb2c47cb468bfcac5a18c58e27dbf8d8d1"}, + {file = "yarl-1.20.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:86971e2795584fe8c002356d3b97ef6c61862720eeff03db2a7c86b678d85b3e"}, + {file = "yarl-1.20.1-cp311-cp311-win32.whl", hash = "sha256:597f40615b8d25812f14562699e287f0dcc035d25eb74da72cae043bb884d773"}, + {file = "yarl-1.20.1-cp311-cp311-win_amd64.whl", hash = "sha256:26ef53a9e726e61e9cd1cda6b478f17e350fb5800b4bd1cd9fe81c4d91cfeb2e"}, + {file = "yarl-1.20.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdcc4cd244e58593a4379fe60fdee5ac0331f8eb70320a24d591a3be197b94a9"}, + {file = "yarl-1.20.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b29a2c385a5f5b9c7d9347e5812b6f7ab267193c62d282a540b4fc528c8a9d2a"}, + {file = "yarl-1.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1112ae8154186dfe2de4732197f59c05a83dc814849a5ced892b708033f40dc2"}, + {file = "yarl-1.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90bbd29c4fe234233f7fa2b9b121fb63c321830e5d05b45153a2ca68f7d310ee"}, + {file = "yarl-1.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:680e19c7ce3710ac4cd964e90dad99bf9b5029372ba0c7cbfcd55e54d90ea819"}, + {file = "yarl-1.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a979218c1fdb4246a05efc2cc23859d47c89af463a90b99b7c56094daf25a16"}, + {file = "yarl-1.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255b468adf57b4a7b65d8aad5b5138dce6a0752c139965711bdcb81bc370e1b6"}, + {file = "yarl-1.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a97d67108e79cfe22e2b430d80d7571ae57d19f17cda8bb967057ca8a7bf5bfd"}, + {file = "yarl-1.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8570d998db4ddbfb9a590b185a0a33dbf8aafb831d07a5257b4ec9948df9cb0a"}, + {file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:97c75596019baae7c71ccf1d8cc4738bc08134060d0adfcbe5642f778d1dca38"}, + {file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:1c48912653e63aef91ff988c5432832692ac5a1d8f0fb8a33091520b5bbe19ef"}, + {file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4c3ae28f3ae1563c50f3d37f064ddb1511ecc1d5584e88c6b7c63cf7702a6d5f"}, + {file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c5e9642f27036283550f5f57dc6156c51084b458570b9d0d96100c8bebb186a8"}, + {file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:2c26b0c49220d5799f7b22c6838409ee9bc58ee5c95361a4d7831f03cc225b5a"}, + {file = "yarl-1.20.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:564ab3d517e3d01c408c67f2e5247aad4019dcf1969982aba3974b4093279004"}, + {file = "yarl-1.20.1-cp312-cp312-win32.whl", hash = "sha256:daea0d313868da1cf2fac6b2d3a25c6e3a9e879483244be38c8e6a41f1d876a5"}, + {file = "yarl-1.20.1-cp312-cp312-win_amd64.whl", hash = "sha256:48ea7d7f9be0487339828a4de0360d7ce0efc06524a48e1810f945c45b813698"}, + {file = "yarl-1.20.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:0b5ff0fbb7c9f1b1b5ab53330acbfc5247893069e7716840c8e7d5bb7355038a"}, + {file = "yarl-1.20.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:14f326acd845c2b2e2eb38fb1346c94f7f3b01a4f5c788f8144f9b630bfff9a3"}, + {file = "yarl-1.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f60e4ad5db23f0b96e49c018596707c3ae89f5d0bd97f0ad3684bcbad899f1e7"}, + {file = "yarl-1.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49bdd1b8e00ce57e68ba51916e4bb04461746e794e7c4d4bbc42ba2f18297691"}, + {file = "yarl-1.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:66252d780b45189975abfed839616e8fd2dbacbdc262105ad7742c6ae58f3e31"}, + {file = "yarl-1.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59174e7332f5d153d8f7452a102b103e2e74035ad085f404df2e40e663a22b28"}, + {file = "yarl-1.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3968ec7d92a0c0f9ac34d5ecfd03869ec0cab0697c91a45db3fbbd95fe1b653"}, + {file = "yarl-1.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1a4fbb50e14396ba3d375f68bfe02215d8e7bc3ec49da8341fe3157f59d2ff5"}, + {file = "yarl-1.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11a62c839c3a8eac2410e951301309426f368388ff2f33799052787035793b02"}, + {file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:041eaa14f73ff5a8986b4388ac6bb43a77f2ea09bf1913df7a35d4646db69e53"}, + {file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:377fae2fef158e8fd9d60b4c8751387b8d1fb121d3d0b8e9b0be07d1b41e83dc"}, + {file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1c92f4390e407513f619d49319023664643d3339bd5e5a56a3bebe01bc67ec04"}, + {file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d25ddcf954df1754ab0f86bb696af765c5bfaba39b74095f27eececa049ef9a4"}, + {file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:909313577e9619dcff8c31a0ea2aa0a2a828341d92673015456b3ae492e7317b"}, + {file = "yarl-1.20.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:793fd0580cb9664548c6b83c63b43c477212c0260891ddf86809e1c06c8b08f1"}, + {file = "yarl-1.20.1-cp313-cp313-win32.whl", hash = "sha256:468f6e40285de5a5b3c44981ca3a319a4b208ccc07d526b20b12aeedcfa654b7"}, + {file = "yarl-1.20.1-cp313-cp313-win_amd64.whl", hash = "sha256:495b4ef2fea40596bfc0affe3837411d6aa3371abcf31aac0ccc4bdd64d4ef5c"}, + {file = "yarl-1.20.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:f60233b98423aab21d249a30eb27c389c14929f47be8430efa7dbd91493a729d"}, + {file = "yarl-1.20.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:6f3eff4cc3f03d650d8755c6eefc844edde99d641d0dcf4da3ab27141a5f8ddf"}, + {file = "yarl-1.20.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:69ff8439d8ba832d6bed88af2c2b3445977eba9a4588b787b32945871c2444e3"}, + {file = "yarl-1.20.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cf34efa60eb81dd2645a2e13e00bb98b76c35ab5061a3989c7a70f78c85006d"}, + {file = "yarl-1.20.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:8e0fe9364ad0fddab2688ce72cb7a8e61ea42eff3c7caeeb83874a5d479c896c"}, + {file = "yarl-1.20.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f64fbf81878ba914562c672024089e3401974a39767747691c65080a67b18c1"}, + {file = "yarl-1.20.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f6342d643bf9a1de97e512e45e4b9560a043347e779a173250824f8b254bd5ce"}, + {file = "yarl-1.20.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56dac5f452ed25eef0f6e3c6a066c6ab68971d96a9fb441791cad0efba6140d3"}, + {file = "yarl-1.20.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7d7f497126d65e2cad8dc5f97d34c27b19199b6414a40cb36b52f41b79014be"}, + {file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:67e708dfb8e78d8a19169818eeb5c7a80717562de9051bf2413aca8e3696bf16"}, + {file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:595c07bc79af2494365cc96ddeb772f76272364ef7c80fb892ef9d0649586513"}, + {file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7bdd2f80f4a7df852ab9ab49484a4dee8030023aa536df41f2d922fd57bf023f"}, + {file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:c03bfebc4ae8d862f853a9757199677ab74ec25424d0ebd68a0027e9c639a390"}, + {file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:344d1103e9c1523f32a5ed704d576172d2cabed3122ea90b1d4e11fe17c66458"}, + {file = "yarl-1.20.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:88cab98aa4e13e1ade8c141daeedd300a4603b7132819c484841bb7af3edce9e"}, + {file = "yarl-1.20.1-cp313-cp313t-win32.whl", hash = "sha256:b121ff6a7cbd4abc28985b6028235491941b9fe8fe226e6fdc539c977ea1739d"}, + {file = "yarl-1.20.1-cp313-cp313t-win_amd64.whl", hash = "sha256:541d050a355bbbc27e55d906bc91cb6fe42f96c01413dd0f4ed5a5240513874f"}, + {file = "yarl-1.20.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e42ba79e2efb6845ebab49c7bf20306c4edf74a0b20fc6b2ccdd1a219d12fad3"}, + {file = "yarl-1.20.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:41493b9b7c312ac448b7f0a42a089dffe1d6e6e981a2d76205801a023ed26a2b"}, + {file = "yarl-1.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f5a5928ff5eb13408c62a968ac90d43f8322fd56d87008b8f9dabf3c0f6ee983"}, + {file = "yarl-1.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30c41ad5d717b3961b2dd785593b67d386b73feca30522048d37298fee981805"}, + {file = "yarl-1.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:59febc3969b0781682b469d4aca1a5cab7505a4f7b85acf6db01fa500fa3f6ba"}, + {file = "yarl-1.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d2b6fb3622b7e5bf7a6e5b679a69326b4279e805ed1699d749739a61d242449e"}, + {file = "yarl-1.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:749d73611db8d26a6281086f859ea7ec08f9c4c56cec864e52028c8b328db723"}, + {file = "yarl-1.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9427925776096e664c39e131447aa20ec738bdd77c049c48ea5200db2237e000"}, + {file = "yarl-1.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff70f32aa316393eaf8222d518ce9118148eddb8a53073c2403863b41033eed5"}, + {file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c7ddf7a09f38667aea38801da8b8d6bfe81df767d9dfc8c88eb45827b195cd1c"}, + {file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:57edc88517d7fc62b174fcfb2e939fbc486a68315d648d7e74d07fac42cec240"}, + {file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:dab096ce479d5894d62c26ff4f699ec9072269d514b4edd630a393223f45a0ee"}, + {file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:14a85f3bd2d7bb255be7183e5d7d6e70add151a98edf56a770d6140f5d5f4010"}, + {file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:2c89b5c792685dd9cd3fa9761c1b9f46fc240c2a3265483acc1565769996a3f8"}, + {file = "yarl-1.20.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:69e9b141de5511021942a6866990aea6d111c9042235de90e08f94cf972ca03d"}, + {file = "yarl-1.20.1-cp39-cp39-win32.whl", hash = "sha256:b5f307337819cdfdbb40193cad84978a029f847b0a357fbe49f712063cfc4f06"}, + {file = "yarl-1.20.1-cp39-cp39-win_amd64.whl", hash = "sha256:eae7bfe2069f9c1c5b05fc7fe5d612e5bbc089a39309904ee8b829e322dcad00"}, + {file = "yarl-1.20.1-py3-none-any.whl", hash = "sha256:83b8eb083fe4683c6115795d9fc1cfaf2cbbefb19b3a1cb68f6527460f483a77"}, + {file = "yarl-1.20.1.tar.gz", hash = "sha256:d017a4997ee50c91fd5466cef416231bb82177b93b029906cefc542ce14c35ac"}, +] + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" +propcache = ">=0.2.1" + [metadata] lock-version = "2.1" python-versions = ">=3.9,<3.13" -content-hash = "f8834827ffff509eded3a1b1c3f6640b6c7c36967b4234c5cfa7e9803b7abb79" +content-hash = "e8d4aca022e05779a7941e98b2351b74cb6c1c8caa1bafc561cc987bb96db033" diff --git a/pyproject.toml b/pyproject.toml index 7e8408bb2..5a5d4a121 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,6 +34,9 @@ shortuuid = ">=1.0.11" dacite = ">=1.8.1" deprecated = ">=1.2.14" python-dateutil = "^2.8.2" +pydantic = "^2.11.7" +aiohttp = "^3.12.15" +aiohttp-retry = "^2.9.1" [tool.poetry.group.dev.dependencies] pylint = ">=2.17.5" @@ -44,6 +47,7 @@ pre-commit = "^4.2.0" setuptools = "^80.9.0" pytest = "^8.4.1" pytest-mock = "^3.14.1" +pytest-asyncio = "^1.1.0" [tool.ruff] target-version = "py39" @@ -149,6 +153,7 @@ line-ending = "auto" [tool.ruff.lint.per-file-ignores] "src/conductor/client/http/**/*.py" = ["ALL"] "src/conductor/client/orkes/api/*.py" = ["ALL"] +"src/conductor/client/my_aiohttp_client/*.py" = ["ALL"] "tests/**/*.py" = ["B", "C4", "SIM", "PLR2004"] "examples/**/*.py" = ["B", "C4", "SIM"] diff --git a/src/conductor/client/adapters/__init__.py b/src/conductor/client/adapters/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/conductor/client/adapters/api/__init__.py b/src/conductor/client/adapters/api/__init__.py new file mode 100644 index 000000000..3e9f0df04 --- /dev/null +++ b/src/conductor/client/adapters/api/__init__.py @@ -0,0 +1,5 @@ +from conductor.client.adapters.api.application_resource import ( + ApplicationResourceApiAdapter, +) + +__all__ = ["ApplicationResourceApiAdapter"] diff --git a/src/conductor/client/adapters/api/application_resource.py b/src/conductor/client/adapters/api/application_resource.py new file mode 100644 index 000000000..340929993 --- /dev/null +++ b/src/conductor/client/adapters/api/application_resource.py @@ -0,0 +1,5 @@ +from conductor.client.my_aiohttp_client import ApplicationResourceApi + + +class ApplicationResourceApiAdapter(ApplicationResourceApi): + pass diff --git a/src/conductor/client/adapters/models/__init__.py b/src/conductor/client/adapters/models/__init__.py new file mode 100644 index 000000000..2c9d921ad --- /dev/null +++ b/src/conductor/client/adapters/models/__init__.py @@ -0,0 +1,11 @@ +from conductor.client.adapters.models.create_or_update_application_request import ( + CreateOrUpdateApplicationRequestAdapter, +) +from conductor.client.adapters.models.extended_conductor_application import ( + ExtendedConductorApplicationAdapter, +) + +__all__ = [ + "CreateOrUpdateApplicationRequestAdapter", + "ExtendedConductorApplicationAdapter", +] diff --git a/src/conductor/client/adapters/models/create_or_update_application_request.py b/src/conductor/client/adapters/models/create_or_update_application_request.py new file mode 100644 index 000000000..95ef6b400 --- /dev/null +++ b/src/conductor/client/adapters/models/create_or_update_application_request.py @@ -0,0 +1,5 @@ +from conductor.client.my_aiohttp_client.models import CreateOrUpdateApplicationRequest + + +class CreateOrUpdateApplicationRequestAdapter(CreateOrUpdateApplicationRequest): + pass diff --git a/src/conductor/client/adapters/models/extended_conductor_application.py b/src/conductor/client/adapters/models/extended_conductor_application.py new file mode 100644 index 000000000..322ca8b41 --- /dev/null +++ b/src/conductor/client/adapters/models/extended_conductor_application.py @@ -0,0 +1,5 @@ +from conductor.client.my_aiohttp_client.models import ExtendedConductorApplication + + +class ExtendedConductorApplicationAdapter(ExtendedConductorApplication): + pass diff --git a/src/conductor/client/my_aiohttp_client/__init__.py b/src/conductor/client/my_aiohttp_client/__init__.py new file mode 100644 index 000000000..9d41af51f --- /dev/null +++ b/src/conductor/client/my_aiohttp_client/__init__.py @@ -0,0 +1,51 @@ +# coding: utf-8 + +# flake8: noqa + +""" + Orkes Conductor API Server + + Orkes Conductor API Server + + The version of the OpenAPI document: v2 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +__version__ = "1.0.0" + +# Define package exports +__all__ = [ + "ApplicationResourceApi", + "ApiResponse", + "ApiClient", + "Configuration", + "OpenApiException", + "ApiTypeError", + "ApiValueError", + "ApiKeyError", + "ApiAttributeError", + "ApiException", + "Tag", +] + +# import apis into sdk package +from conductor.client.my_aiohttp_client.api.application_resource_api import ApplicationResourceApi as ApplicationResourceApi + +# import ApiClient +from conductor.client.my_aiohttp_client.api_response import ApiResponse as ApiResponse +from conductor.client.my_aiohttp_client.api_client import ApiClient as ApiClient +from conductor.client.my_aiohttp_client.configuration import Configuration as Configuration +from conductor.client.my_aiohttp_client.exceptions import OpenApiException as OpenApiException +from conductor.client.my_aiohttp_client.exceptions import ApiTypeError as ApiTypeError +from conductor.client.my_aiohttp_client.exceptions import ApiValueError as ApiValueError +from conductor.client.my_aiohttp_client.exceptions import ApiKeyError as ApiKeyError +from conductor.client.my_aiohttp_client.exceptions import ApiAttributeError as ApiAttributeError +from conductor.client.my_aiohttp_client.exceptions import ApiException as ApiException + +# import models into sdk package +from conductor.client.my_aiohttp_client.models.create_or_update_application_request import CreateOrUpdateApplicationRequest as CreateOrUpdateApplicationRequest +from conductor.client.my_aiohttp_client.models.extended_conductor_application import ExtendedConductorApplication as ExtendedConductorApplication +from conductor.client.my_aiohttp_client.models.tag import Tag as Tag diff --git a/src/conductor/client/my_aiohttp_client/api/__init__.py b/src/conductor/client/my_aiohttp_client/api/__init__.py new file mode 100644 index 000000000..a0f27a042 --- /dev/null +++ b/src/conductor/client/my_aiohttp_client/api/__init__.py @@ -0,0 +1,5 @@ +# flake8: noqa + +# import apis into api package +from conductor.client.my_aiohttp_client.api.application_resource_api import ApplicationResourceApi + diff --git a/src/conductor/client/my_aiohttp_client/api/application_resource_api.py b/src/conductor/client/my_aiohttp_client/api/application_resource_api.py new file mode 100644 index 000000000..4cedf6e10 --- /dev/null +++ b/src/conductor/client/my_aiohttp_client/api/application_resource_api.py @@ -0,0 +1,4040 @@ +# coding: utf-8 + +""" + Orkes Conductor API Server + + Orkes Conductor API Server + + The version of the OpenAPI document: v2 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + +import warnings +from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt +from typing import Any, Dict, List, Optional, Tuple, Union +from typing_extensions import Annotated + +from pydantic import StrictStr +from typing import Any, Dict, List +from conductor.client.my_aiohttp_client.models.create_or_update_application_request import CreateOrUpdateApplicationRequest +from conductor.client.my_aiohttp_client.models.extended_conductor_application import ExtendedConductorApplication +from conductor.client.my_aiohttp_client.models.tag import Tag + +from conductor.client.my_aiohttp_client.api_client import ApiClient, RequestSerialized +from conductor.client.my_aiohttp_client.api_response import ApiResponse +from conductor.client.my_aiohttp_client.rest import RESTResponseType + + +class ApplicationResourceApi: + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None) -> None: + if api_client is None: + api_client = ApiClient.get_default() + self.api_client = api_client + + + @validate_call + async def add_role_to_application_user( + self, + application_id: StrictStr, + role: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> object: + """add_role_to_application_user + + + :param application_id: (required) + :type application_id: str + :param role: (required) + :type role: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._add_role_to_application_user_serialize( + application_id=application_id, + role=role, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + async def add_role_to_application_user_with_http_info( + self, + application_id: StrictStr, + role: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[object]: + """add_role_to_application_user + + + :param application_id: (required) + :type application_id: str + :param role: (required) + :type role: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._add_role_to_application_user_serialize( + application_id=application_id, + role=role, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + async def add_role_to_application_user_without_preload_content( + self, + application_id: StrictStr, + role: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """add_role_to_application_user + + + :param application_id: (required) + :type application_id: str + :param role: (required) + :type role: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._add_role_to_application_user_serialize( + application_id=application_id, + role=role, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _add_role_to_application_user_serialize( + self, + application_id, + role, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if application_id is not None: + _path_params['applicationId'] = application_id + if role is not None: + _path_params['role'] = role + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + 'api_key' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/applications/{applicationId}/roles/{role}', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + async def create_access_key( + self, + id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> object: + """Create an access key for an application + + + :param id: (required) + :type id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_access_key_serialize( + id=id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + async def create_access_key_with_http_info( + self, + id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[object]: + """Create an access key for an application + + + :param id: (required) + :type id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_access_key_serialize( + id=id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + async def create_access_key_without_preload_content( + self, + id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create an access key for an application + + + :param id: (required) + :type id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_access_key_serialize( + id=id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _create_access_key_serialize( + self, + id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if id is not None: + _path_params['id'] = id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + 'api_key' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/applications/{id}/accessKeys', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + async def create_application( + self, + create_or_update_application_request: CreateOrUpdateApplicationRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> object: + """Create an application + + + :param create_or_update_application_request: (required) + :type create_or_update_application_request: CreateOrUpdateApplicationRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_application_serialize( + create_or_update_application_request=create_or_update_application_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + async def create_application_with_http_info( + self, + create_or_update_application_request: CreateOrUpdateApplicationRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[object]: + """Create an application + + + :param create_or_update_application_request: (required) + :type create_or_update_application_request: CreateOrUpdateApplicationRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_application_serialize( + create_or_update_application_request=create_or_update_application_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + async def create_application_without_preload_content( + self, + create_or_update_application_request: CreateOrUpdateApplicationRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Create an application + + + :param create_or_update_application_request: (required) + :type create_or_update_application_request: CreateOrUpdateApplicationRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._create_application_serialize( + create_or_update_application_request=create_or_update_application_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _create_application_serialize( + self, + create_or_update_application_request, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_or_update_application_request is not None: + _body_params = create_or_update_application_request + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'api_key' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/applications', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + async def delete_access_key( + self, + application_id: StrictStr, + key_id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> object: + """Delete an access key + + + :param application_id: (required) + :type application_id: str + :param key_id: (required) + :type key_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_access_key_serialize( + application_id=application_id, + key_id=key_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + async def delete_access_key_with_http_info( + self, + application_id: StrictStr, + key_id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[object]: + """Delete an access key + + + :param application_id: (required) + :type application_id: str + :param key_id: (required) + :type key_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_access_key_serialize( + application_id=application_id, + key_id=key_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + async def delete_access_key_without_preload_content( + self, + application_id: StrictStr, + key_id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete an access key + + + :param application_id: (required) + :type application_id: str + :param key_id: (required) + :type key_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_access_key_serialize( + application_id=application_id, + key_id=key_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _delete_access_key_serialize( + self, + application_id, + key_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if application_id is not None: + _path_params['applicationId'] = application_id + if key_id is not None: + _path_params['keyId'] = key_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + 'api_key' + ] + + return self.api_client.param_serialize( + method='DELETE', + resource_path='/api/applications/{applicationId}/accessKeys/{keyId}', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + async def delete_application( + self, + id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> object: + """Delete an application + + + :param id: (required) + :type id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_application_serialize( + id=id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + async def delete_application_with_http_info( + self, + id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[object]: + """Delete an application + + + :param id: (required) + :type id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_application_serialize( + id=id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + async def delete_application_without_preload_content( + self, + id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete an application + + + :param id: (required) + :type id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_application_serialize( + id=id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _delete_application_serialize( + self, + id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if id is not None: + _path_params['id'] = id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + 'api_key' + ] + + return self.api_client.param_serialize( + method='DELETE', + resource_path='/api/applications/{id}', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + async def delete_tag_for_application( + self, + id: StrictStr, + tag: List[Tag], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Delete a tag for application + + + :param id: (required) + :type id: str + :param tag: (required) + :type tag: List[Tag] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_tag_for_application_serialize( + id=id, + tag=tag, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': None, + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + async def delete_tag_for_application_with_http_info( + self, + id: StrictStr, + tag: List[Tag], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Delete a tag for application + + + :param id: (required) + :type id: str + :param tag: (required) + :type tag: List[Tag] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_tag_for_application_serialize( + id=id, + tag=tag, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': None, + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + async def delete_tag_for_application_without_preload_content( + self, + id: StrictStr, + tag: List[Tag], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Delete a tag for application + + + :param id: (required) + :type id: str + :param tag: (required) + :type tag: List[Tag] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._delete_tag_for_application_serialize( + id=id, + tag=tag, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': None, + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _delete_tag_for_application_serialize( + self, + id, + tag, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + 'Tag': '', + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if id is not None: + _path_params['id'] = id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if tag is not None: + _body_params = tag + + + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'api_key' + ] + + return self.api_client.param_serialize( + method='DELETE', + resource_path='/api/applications/{id}/tags', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + async def get_access_keys( + self, + id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> object: + """Get application's access keys + + + :param id: (required) + :type id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_access_keys_serialize( + id=id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + async def get_access_keys_with_http_info( + self, + id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[object]: + """Get application's access keys + + + :param id: (required) + :type id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_access_keys_serialize( + id=id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + async def get_access_keys_without_preload_content( + self, + id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get application's access keys + + + :param id: (required) + :type id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_access_keys_serialize( + id=id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _get_access_keys_serialize( + self, + id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if id is not None: + _path_params['id'] = id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + 'api_key' + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/api/applications/{id}/accessKeys', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + async def get_app_by_access_key_id( + self, + access_key_id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> object: + """Get application id by access key id + + + :param access_key_id: (required) + :type access_key_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_app_by_access_key_id_serialize( + access_key_id=access_key_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + async def get_app_by_access_key_id_with_http_info( + self, + access_key_id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[object]: + """Get application id by access key id + + + :param access_key_id: (required) + :type access_key_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_app_by_access_key_id_serialize( + access_key_id=access_key_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + async def get_app_by_access_key_id_without_preload_content( + self, + access_key_id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get application id by access key id + + + :param access_key_id: (required) + :type access_key_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_app_by_access_key_id_serialize( + access_key_id=access_key_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _get_app_by_access_key_id_serialize( + self, + access_key_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if access_key_id is not None: + _path_params['accessKeyId'] = access_key_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + 'api_key' + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/api/applications/key/{accessKeyId}', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + async def get_application( + self, + id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> object: + """Get an application by id + + + :param id: (required) + :type id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_application_serialize( + id=id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + async def get_application_with_http_info( + self, + id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[object]: + """Get an application by id + + + :param id: (required) + :type id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_application_serialize( + id=id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + async def get_application_without_preload_content( + self, + id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get an application by id + + + :param id: (required) + :type id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_application_serialize( + id=id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _get_application_serialize( + self, + id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if id is not None: + _path_params['id'] = id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + 'api_key' + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/api/applications/{id}', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + async def get_tags_for_application( + self, + id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> List[Tag]: + """Get tags by application + + + :param id: (required) + :type id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_tags_for_application_serialize( + id=id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[Tag]", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + async def get_tags_for_application_with_http_info( + self, + id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[List[Tag]]: + """Get tags by application + + + :param id: (required) + :type id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_tags_for_application_serialize( + id=id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[Tag]", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + async def get_tags_for_application_without_preload_content( + self, + id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get tags by application + + + :param id: (required) + :type id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._get_tags_for_application_serialize( + id=id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[Tag]", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _get_tags_for_application_serialize( + self, + id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if id is not None: + _path_params['id'] = id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + 'api_key' + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/api/applications/{id}/tags', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + async def list_applications( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> List[ExtendedConductorApplication]: + """Get all applications + + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_applications_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[ExtendedConductorApplication]", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + async def list_applications_with_http_info( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[List[ExtendedConductorApplication]]: + """Get all applications + + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_applications_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[ExtendedConductorApplication]", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + async def list_applications_without_preload_content( + self, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Get all applications + + + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._list_applications_serialize( + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "List[ExtendedConductorApplication]", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _list_applications_serialize( + self, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + 'api_key' + ] + + return self.api_client.param_serialize( + method='GET', + resource_path='/api/applications', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + async def put_tag_for_application( + self, + id: StrictStr, + tag: List[Tag], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> None: + """Put a tag to application + + + :param id: (required) + :type id: str + :param tag: (required) + :type tag: List[Tag] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._put_tag_for_application_serialize( + id=id, + tag=tag, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': None, + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + async def put_tag_for_application_with_http_info( + self, + id: StrictStr, + tag: List[Tag], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[None]: + """Put a tag to application + + + :param id: (required) + :type id: str + :param tag: (required) + :type tag: List[Tag] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._put_tag_for_application_serialize( + id=id, + tag=tag, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': None, + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + async def put_tag_for_application_without_preload_content( + self, + id: StrictStr, + tag: List[Tag], + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Put a tag to application + + + :param id: (required) + :type id: str + :param tag: (required) + :type tag: List[Tag] + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._put_tag_for_application_serialize( + id=id, + tag=tag, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': None, + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _put_tag_for_application_serialize( + self, + id, + tag, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + 'Tag': '', + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if id is not None: + _path_params['id'] = id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if tag is not None: + _body_params = tag + + + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'api_key' + ] + + return self.api_client.param_serialize( + method='PUT', + resource_path='/api/applications/{id}/tags', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + async def remove_role_from_application_user( + self, + application_id: StrictStr, + role: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> object: + """remove_role_from_application_user + + + :param application_id: (required) + :type application_id: str + :param role: (required) + :type role: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._remove_role_from_application_user_serialize( + application_id=application_id, + role=role, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + async def remove_role_from_application_user_with_http_info( + self, + application_id: StrictStr, + role: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[object]: + """remove_role_from_application_user + + + :param application_id: (required) + :type application_id: str + :param role: (required) + :type role: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._remove_role_from_application_user_serialize( + application_id=application_id, + role=role, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + async def remove_role_from_application_user_without_preload_content( + self, + application_id: StrictStr, + role: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """remove_role_from_application_user + + + :param application_id: (required) + :type application_id: str + :param role: (required) + :type role: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._remove_role_from_application_user_serialize( + application_id=application_id, + role=role, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _remove_role_from_application_user_serialize( + self, + application_id, + role, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if application_id is not None: + _path_params['applicationId'] = application_id + if role is not None: + _path_params['role'] = role + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + 'api_key' + ] + + return self.api_client.param_serialize( + method='DELETE', + resource_path='/api/applications/{applicationId}/roles/{role}', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + async def toggle_access_key_status( + self, + application_id: StrictStr, + key_id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> object: + """Toggle the status of an access key + + + :param application_id: (required) + :type application_id: str + :param key_id: (required) + :type key_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._toggle_access_key_status_serialize( + application_id=application_id, + key_id=key_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + async def toggle_access_key_status_with_http_info( + self, + application_id: StrictStr, + key_id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[object]: + """Toggle the status of an access key + + + :param application_id: (required) + :type application_id: str + :param key_id: (required) + :type key_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._toggle_access_key_status_serialize( + application_id=application_id, + key_id=key_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + async def toggle_access_key_status_without_preload_content( + self, + application_id: StrictStr, + key_id: StrictStr, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Toggle the status of an access key + + + :param application_id: (required) + :type application_id: str + :param key_id: (required) + :type key_id: str + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._toggle_access_key_status_serialize( + application_id=application_id, + key_id=key_id, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _toggle_access_key_status_serialize( + self, + application_id, + key_id, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if application_id is not None: + _path_params['applicationId'] = application_id + if key_id is not None: + _path_params['keyId'] = key_id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + + # authentication setting + _auth_settings: List[str] = [ + 'api_key' + ] + + return self.api_client.param_serialize( + method='POST', + resource_path='/api/applications/{applicationId}/accessKeys/{keyId}/status', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + + + + @validate_call + async def update_application( + self, + id: StrictStr, + create_or_update_application_request: CreateOrUpdateApplicationRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> object: + """Update an application + + + :param id: (required) + :type id: str + :param create_or_update_application_request: (required) + :type create_or_update_application_request: CreateOrUpdateApplicationRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_application_serialize( + id=id, + create_or_update_application_request=create_or_update_application_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ).data + + + @validate_call + async def update_application_with_http_info( + self, + id: StrictStr, + create_or_update_application_request: CreateOrUpdateApplicationRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> ApiResponse[object]: + """Update an application + + + :param id: (required) + :type id: str + :param create_or_update_application_request: (required) + :type create_or_update_application_request: CreateOrUpdateApplicationRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_application_serialize( + id=id, + create_or_update_application_request=create_or_update_application_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + await response_data.read() + return self.api_client.response_deserialize( + response_data=response_data, + response_types_map=_response_types_map, + ) + + + @validate_call + async def update_application_without_preload_content( + self, + id: StrictStr, + create_or_update_application_request: CreateOrUpdateApplicationRequest, + _request_timeout: Union[ + None, + Annotated[StrictFloat, Field(gt=0)], + Tuple[ + Annotated[StrictFloat, Field(gt=0)], + Annotated[StrictFloat, Field(gt=0)] + ] + ] = None, + _request_auth: Optional[Dict[StrictStr, Any]] = None, + _content_type: Optional[StrictStr] = None, + _headers: Optional[Dict[StrictStr, Any]] = None, + _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, + ) -> RESTResponseType: + """Update an application + + + :param id: (required) + :type id: str + :param create_or_update_application_request: (required) + :type create_or_update_application_request: CreateOrUpdateApplicationRequest + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + :type _request_timeout: int, tuple(int, int), optional + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the + authentication in the spec for a single request. + :type _request_auth: dict, optional + :param _content_type: force content-type for the request. + :type _content_type: str, Optional + :param _headers: set to override the headers for a single + request; this effectively ignores the headers + in the spec for a single request. + :type _headers: dict, optional + :param _host_index: set to override the host_index for a single + request; this effectively ignores the host_index + in the spec for a single request. + :type _host_index: int, optional + :return: Returns the result object. + """ # noqa: E501 + + _param = self._update_application_serialize( + id=id, + create_or_update_application_request=create_or_update_application_request, + _request_auth=_request_auth, + _content_type=_content_type, + _headers=_headers, + _host_index=_host_index + ) + + _response_types_map: Dict[str, Optional[str]] = { + '200': "object", + } + response_data = await self.api_client.call_api( + *_param, + _request_timeout=_request_timeout + ) + return response_data.response + + + def _update_application_serialize( + self, + id, + create_or_update_application_request, + _request_auth, + _content_type, + _headers, + _host_index, + ) -> RequestSerialized: + + _host = None + + _collection_formats: Dict[str, str] = { + } + + _path_params: Dict[str, str] = {} + _query_params: List[Tuple[str, str]] = [] + _header_params: Dict[str, Optional[str]] = _headers or {} + _form_params: List[Tuple[str, str]] = [] + _files: Dict[ + str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]] + ] = {} + _body_params: Optional[bytes] = None + + # process the path parameters + if id is not None: + _path_params['id'] = id + # process the query parameters + # process the header parameters + # process the form parameters + # process the body parameter + if create_or_update_application_request is not None: + _body_params = create_or_update_application_request + + + # set the HTTP header `Accept` + if 'Accept' not in _header_params: + _header_params['Accept'] = self.api_client.select_header_accept( + [ + 'application/json' + ] + ) + + # set the HTTP header `Content-Type` + if _content_type: + _header_params['Content-Type'] = _content_type + else: + _default_content_type = ( + self.api_client.select_header_content_type( + [ + 'application/json' + ] + ) + ) + if _default_content_type is not None: + _header_params['Content-Type'] = _default_content_type + + # authentication setting + _auth_settings: List[str] = [ + 'api_key' + ] + + return self.api_client.param_serialize( + method='PUT', + resource_path='/api/applications/{id}', + path_params=_path_params, + query_params=_query_params, + header_params=_header_params, + body=_body_params, + post_params=_form_params, + files=_files, + auth_settings=_auth_settings, + collection_formats=_collection_formats, + _host=_host, + _request_auth=_request_auth + ) + + diff --git a/src/conductor/client/my_aiohttp_client/api_client.py b/src/conductor/client/my_aiohttp_client/api_client.py new file mode 100644 index 000000000..5d88953b1 --- /dev/null +++ b/src/conductor/client/my_aiohttp_client/api_client.py @@ -0,0 +1,803 @@ +# coding: utf-8 + +""" + Orkes Conductor API Server + + Orkes Conductor API Server + + The version of the OpenAPI document: v2 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import datetime +from dateutil.parser import parse +from enum import Enum +import decimal +import json +import mimetypes +import os +import re +import tempfile + +from urllib.parse import quote +from typing import Tuple, Optional, List, Dict, Union +from pydantic import SecretStr + +from conductor.client.my_aiohttp_client.configuration import Configuration +from conductor.client.my_aiohttp_client.api_response import ApiResponse, T as ApiResponseT +from conductor.client.my_aiohttp_client import rest +from conductor.client.my_aiohttp_client.exceptions import ( + ApiValueError, + ApiException, + BadRequestException, + UnauthorizedException, + ForbiddenException, + NotFoundException, + ServiceException +) + +RequestSerialized = Tuple[str, str, Dict[str, str], Optional[str], List[str]] + +class ApiClient: + """Generic API client for OpenAPI client library builds. + + OpenAPI generic API client. This client handles the client- + server communication, and is invariant across implementations. Specifics of + the methods and models for each application are generated from the OpenAPI + templates. + + :param configuration: .Configuration object for this client + :param header_name: a header to pass when making calls to the API. + :param header_value: a header value to pass when making calls to + the API. + :param cookie: a cookie to include in the header when making calls + to the API + """ + + PRIMITIVE_TYPES = (float, bool, bytes, str, int) + NATIVE_TYPES_MAPPING = { + 'int': int, + 'long': int, # TODO remove as only py3 is supported? + 'float': float, + 'str': str, + 'bool': bool, + 'date': datetime.date, + 'datetime': datetime.datetime, + 'decimal': decimal.Decimal, + 'object': object, + } + _pool = None + + def __init__( + self, + configuration=None, + header_name=None, + header_value=None, + cookie=None + ) -> None: + # use default configuration if none is provided + if configuration is None: + configuration = Configuration.get_default() + self.configuration = configuration + + self.rest_client = rest.RESTClientObject(configuration) + self.default_headers = {} + if header_name is not None: + self.default_headers[header_name] = header_value + self.cookie = cookie + # Set default User-Agent. + self.user_agent = 'OpenAPI-Generator/1.0.0/python' + self.client_side_validation = configuration.client_side_validation + + async def __aenter__(self): + return self + + async def __aexit__(self, exc_type, exc_value, traceback): + await self.close() + + async def close(self): + await self.rest_client.close() + + @property + def user_agent(self): + """User agent for this API client""" + return self.default_headers['User-Agent'] + + @user_agent.setter + def user_agent(self, value): + self.default_headers['User-Agent'] = value + + def set_default_header(self, header_name, header_value): + self.default_headers[header_name] = header_value + + + _default = None + + @classmethod + def get_default(cls): + """Return new instance of ApiClient. + + This method returns newly created, based on default constructor, + object of ApiClient class or returns a copy of default + ApiClient. + + :return: The ApiClient object. + """ + if cls._default is None: + cls._default = ApiClient() + return cls._default + + @classmethod + def set_default(cls, default): + """Set default instance of ApiClient. + + It stores default ApiClient. + + :param default: object of ApiClient. + """ + cls._default = default + + def param_serialize( + self, + method, + resource_path, + path_params=None, + query_params=None, + header_params=None, + body=None, + post_params=None, + files=None, auth_settings=None, + collection_formats=None, + _host=None, + _request_auth=None + ) -> RequestSerialized: + + """Builds the HTTP request params needed by the request. + :param method: Method to call. + :param resource_path: Path to method endpoint. + :param path_params: Path parameters in the url. + :param query_params: Query parameters in the url. + :param header_params: Header parameters to be + placed in the request header. + :param body: Request body. + :param post_params dict: Request post form parameters, + for `application/x-www-form-urlencoded`, `multipart/form-data`. + :param auth_settings list: Auth Settings names for the request. + :param files dict: key -> filename, value -> filepath, + for `multipart/form-data`. + :param collection_formats: dict of collection formats for path, query, + header, and post parameters. + :param _request_auth: set to override the auth_settings for an a single + request; this effectively ignores the authentication + in the spec for a single request. + :return: tuple of form (path, http_method, query_params, header_params, + body, post_params, files) + """ + + config = self.configuration + + # header parameters + header_params = header_params or {} + header_params.update(self.default_headers) + if self.cookie: + header_params['Cookie'] = self.cookie + if header_params: + header_params = self.sanitize_for_serialization(header_params) + header_params = dict( + self.parameters_to_tuples(header_params,collection_formats) + ) + + # path parameters + if path_params: + path_params = self.sanitize_for_serialization(path_params) + path_params = self.parameters_to_tuples( + path_params, + collection_formats + ) + for k, v in path_params: + # specified safe chars, encode everything + resource_path = resource_path.replace( + '{%s}' % k, + quote(str(v), safe=config.safe_chars_for_path_param) + ) + + # post parameters + if post_params or files: + post_params = post_params if post_params else [] + post_params = self.sanitize_for_serialization(post_params) + post_params = self.parameters_to_tuples( + post_params, + collection_formats + ) + if files: + post_params.extend(self.files_parameters(files)) + + # auth setting + self.update_params_for_auth( + header_params, + query_params, + auth_settings, + resource_path, + method, + body, + request_auth=_request_auth + ) + + # body + if body: + body = self.sanitize_for_serialization(body) + + # request url + if _host is None or self.configuration.ignore_operation_servers: + url = self.configuration.host + resource_path + else: + # use server/host defined in path or operation instead + url = _host + resource_path + + # query parameters + if query_params: + query_params = self.sanitize_for_serialization(query_params) + url_query = self.parameters_to_url_query( + query_params, + collection_formats + ) + url += "?" + url_query + + return method, url, header_params, body, post_params + + + async def call_api( + self, + method, + url, + header_params=None, + body=None, + post_params=None, + _request_timeout=None + ) -> rest.RESTResponse: + """Makes the HTTP request (synchronous) + :param method: Method to call. + :param url: Path to method endpoint. + :param header_params: Header parameters to be + placed in the request header. + :param body: Request body. + :param post_params dict: Request post form parameters, + for `application/x-www-form-urlencoded`, `multipart/form-data`. + :param _request_timeout: timeout setting for this request. + :return: RESTResponse + """ + + try: + # perform request and return response + response_data = await self.rest_client.request( + method, url, + headers=header_params, + body=body, post_params=post_params, + _request_timeout=_request_timeout + ) + + except ApiException as e: + raise e + + return response_data + + def response_deserialize( + self, + response_data: rest.RESTResponse, + response_types_map: Optional[Dict[str, ApiResponseT]]=None + ) -> ApiResponse[ApiResponseT]: + """Deserializes response into an object. + :param response_data: RESTResponse object to be deserialized. + :param response_types_map: dict of response types. + :return: ApiResponse + """ + + msg = "RESTResponse.read() must be called before passing it to response_deserialize()" + assert response_data.data is not None, msg + + response_type = response_types_map.get(str(response_data.status), None) + if not response_type and isinstance(response_data.status, int) and 100 <= response_data.status <= 599: + # if not found, look for '1XX', '2XX', etc. + response_type = response_types_map.get(str(response_data.status)[0] + "XX", None) + + # deserialize response data + response_text = None + return_data = None + try: + if response_type == "bytearray": + return_data = response_data.data + elif response_type == "file": + return_data = self.__deserialize_file(response_data) + elif response_type is not None: + match = None + content_type = response_data.getheader('content-type') + if content_type is not None: + match = re.search(r"charset=([a-zA-Z\-\d]+)[\s;]?", content_type) + encoding = match.group(1) if match else "utf-8" + response_text = response_data.data.decode(encoding) + return_data = self.deserialize(response_text, response_type, content_type) + finally: + if not 200 <= response_data.status <= 299: + raise ApiException.from_response( + http_resp=response_data, + body=response_text, + data=return_data, + ) + + return ApiResponse( + status_code = response_data.status, + data = return_data, + headers = response_data.getheaders(), + raw_data = response_data.data + ) + + def sanitize_for_serialization(self, obj): + """Builds a JSON POST object. + + If obj is None, return None. + If obj is SecretStr, return obj.get_secret_value() + If obj is str, int, long, float, bool, return directly. + If obj is datetime.datetime, datetime.date + convert to string in iso8601 format. + If obj is decimal.Decimal return string representation. + If obj is list, sanitize each element in the list. + If obj is dict, return the dict. + If obj is OpenAPI model, return the properties dict. + + :param obj: The data to serialize. + :return: The serialized form of data. + """ + if obj is None: + return None + elif isinstance(obj, Enum): + return obj.value + elif isinstance(obj, SecretStr): + return obj.get_secret_value() + elif isinstance(obj, self.PRIMITIVE_TYPES): + return obj + elif isinstance(obj, list): + return [ + self.sanitize_for_serialization(sub_obj) for sub_obj in obj + ] + elif isinstance(obj, tuple): + return tuple( + self.sanitize_for_serialization(sub_obj) for sub_obj in obj + ) + elif isinstance(obj, (datetime.datetime, datetime.date)): + return obj.isoformat() + elif isinstance(obj, decimal.Decimal): + return str(obj) + + elif isinstance(obj, dict): + obj_dict = obj + else: + # Convert model obj to dict except + # attributes `openapi_types`, `attribute_map` + # and attributes which value is not None. + # Convert attribute name to json key in + # model definition for request. + if hasattr(obj, 'to_dict') and callable(getattr(obj, 'to_dict')): + obj_dict = obj.to_dict() + else: + obj_dict = obj.__dict__ + + if isinstance(obj_dict, list): + # here we handle instances that can either be a list or something else, and only became a real list by calling to_dict() + return self.sanitize_for_serialization(obj_dict) + + return { + key: self.sanitize_for_serialization(val) + for key, val in obj_dict.items() + } + + def deserialize(self, response_text: str, response_type: str, content_type: Optional[str]): + """Deserializes response into an object. + + :param response: RESTResponse object to be deserialized. + :param response_type: class literal for + deserialized object, or string of class name. + :param content_type: content type of response. + + :return: deserialized object. + """ + + # fetch data from response object + if content_type is None: + try: + data = json.loads(response_text) + except ValueError: + data = response_text + elif re.match(r'^application/(json|[\w!#$&.+-^_]+\+json)\s*(;|$)', content_type, re.IGNORECASE): + if response_text == "": + data = "" + else: + data = json.loads(response_text) + elif re.match(r'^text\/[a-z.+-]+\s*(;|$)', content_type, re.IGNORECASE): + data = response_text + else: + raise ApiException( + status=0, + reason="Unsupported content type: {0}".format(content_type) + ) + + return self.__deserialize(data, response_type) + + def __deserialize(self, data, klass): + """Deserializes dict, list, str into an object. + + :param data: dict, list or str. + :param klass: class literal, or string of class name. + + :return: object. + """ + if data is None: + return None + + if isinstance(klass, str): + if klass.startswith('List['): + m = re.match(r'List\[(.*)]', klass) + assert m is not None, "Malformed List type definition" + sub_kls = m.group(1) + return [self.__deserialize(sub_data, sub_kls) + for sub_data in data] + + if klass.startswith('Dict['): + m = re.match(r'Dict\[([^,]*), (.*)]', klass) + assert m is not None, "Malformed Dict type definition" + sub_kls = m.group(2) + return {k: self.__deserialize(v, sub_kls) + for k, v in data.items()} + + # convert str to class + if klass in self.NATIVE_TYPES_MAPPING: + klass = self.NATIVE_TYPES_MAPPING[klass] + else: + klass = getattr(my_aiohttp_client.models, klass) + + if klass in self.PRIMITIVE_TYPES: + return self.__deserialize_primitive(data, klass) + elif klass == object: + return self.__deserialize_object(data) + elif klass == datetime.date: + return self.__deserialize_date(data) + elif klass == datetime.datetime: + return self.__deserialize_datetime(data) + elif klass == decimal.Decimal: + return decimal.Decimal(data) + elif issubclass(klass, Enum): + return self.__deserialize_enum(data, klass) + else: + return self.__deserialize_model(data, klass) + + def parameters_to_tuples(self, params, collection_formats): + """Get parameters as list of tuples, formatting collections. + + :param params: Parameters as dict or list of two-tuples + :param dict collection_formats: Parameter collection formats + :return: Parameters as list of tuples, collections formatted + """ + new_params: List[Tuple[str, str]] = [] + if collection_formats is None: + collection_formats = {} + for k, v in params.items() if isinstance(params, dict) else params: + if k in collection_formats: + collection_format = collection_formats[k] + if collection_format == 'multi': + new_params.extend((k, value) for value in v) + else: + if collection_format == 'ssv': + delimiter = ' ' + elif collection_format == 'tsv': + delimiter = '\t' + elif collection_format == 'pipes': + delimiter = '|' + else: # csv is the default + delimiter = ',' + new_params.append( + (k, delimiter.join(str(value) for value in v))) + else: + new_params.append((k, v)) + return new_params + + def parameters_to_url_query(self, params, collection_formats): + """Get parameters as list of tuples, formatting collections. + + :param params: Parameters as dict or list of two-tuples + :param dict collection_formats: Parameter collection formats + :return: URL query string (e.g. a=Hello%20World&b=123) + """ + new_params: List[Tuple[str, str]] = [] + if collection_formats is None: + collection_formats = {} + for k, v in params.items() if isinstance(params, dict) else params: + if isinstance(v, bool): + v = str(v).lower() + if isinstance(v, (int, float)): + v = str(v) + if isinstance(v, dict): + v = json.dumps(v) + + if k in collection_formats: + collection_format = collection_formats[k] + if collection_format == 'multi': + new_params.extend((k, quote(str(value))) for value in v) + else: + if collection_format == 'ssv': + delimiter = ' ' + elif collection_format == 'tsv': + delimiter = '\t' + elif collection_format == 'pipes': + delimiter = '|' + else: # csv is the default + delimiter = ',' + new_params.append( + (k, delimiter.join(quote(str(value)) for value in v)) + ) + else: + new_params.append((k, quote(str(v)))) + + return "&".join(["=".join(map(str, item)) for item in new_params]) + + def files_parameters( + self, + files: Dict[str, Union[str, bytes, List[str], List[bytes], Tuple[str, bytes]]], + ): + """Builds form parameters. + + :param files: File parameters. + :return: Form parameters with files. + """ + params = [] + for k, v in files.items(): + if isinstance(v, str): + with open(v, 'rb') as f: + filename = os.path.basename(f.name) + filedata = f.read() + elif isinstance(v, bytes): + filename = k + filedata = v + elif isinstance(v, tuple): + filename, filedata = v + elif isinstance(v, list): + for file_param in v: + params.extend(self.files_parameters({k: file_param})) + continue + else: + raise ValueError("Unsupported file value") + mimetype = ( + mimetypes.guess_type(filename)[0] + or 'application/octet-stream' + ) + params.append( + tuple([k, tuple([filename, filedata, mimetype])]) + ) + return params + + def select_header_accept(self, accepts: List[str]) -> Optional[str]: + """Returns `Accept` based on an array of accepts provided. + + :param accepts: List of headers. + :return: Accept (e.g. application/json). + """ + if not accepts: + return None + + for accept in accepts: + if re.search('json', accept, re.IGNORECASE): + return accept + + return accepts[0] + + def select_header_content_type(self, content_types): + """Returns `Content-Type` based on an array of content_types provided. + + :param content_types: List of content-types. + :return: Content-Type (e.g. application/json). + """ + if not content_types: + return None + + for content_type in content_types: + if re.search('json', content_type, re.IGNORECASE): + return content_type + + return content_types[0] + + def update_params_for_auth( + self, + headers, + queries, + auth_settings, + resource_path, + method, + body, + request_auth=None + ) -> None: + """Updates header and query params based on authentication setting. + + :param headers: Header parameters dict to be updated. + :param queries: Query parameters tuple list to be updated. + :param auth_settings: Authentication setting identifiers list. + :resource_path: A string representation of the HTTP request resource path. + :method: A string representation of the HTTP request method. + :body: A object representing the body of the HTTP request. + The object type is the return value of sanitize_for_serialization(). + :param request_auth: if set, the provided settings will + override the token in the configuration. + """ + if not auth_settings: + return + + if request_auth: + self._apply_auth_params( + headers, + queries, + resource_path, + method, + body, + request_auth + ) + else: + for auth in auth_settings: + auth_setting = self.configuration.auth_settings().get(auth) + if auth_setting: + self._apply_auth_params( + headers, + queries, + resource_path, + method, + body, + auth_setting + ) + + def _apply_auth_params( + self, + headers, + queries, + resource_path, + method, + body, + auth_setting + ) -> None: + """Updates the request parameters based on a single auth_setting + + :param headers: Header parameters dict to be updated. + :param queries: Query parameters tuple list to be updated. + :resource_path: A string representation of the HTTP request resource path. + :method: A string representation of the HTTP request method. + :body: A object representing the body of the HTTP request. + The object type is the return value of sanitize_for_serialization(). + :param auth_setting: auth settings for the endpoint + """ + if auth_setting['in'] == 'cookie': + headers['Cookie'] = auth_setting['value'] + elif auth_setting['in'] == 'header': + if auth_setting['type'] != 'http-signature': + headers[auth_setting['key']] = auth_setting['value'] + elif auth_setting['in'] == 'query': + queries.append((auth_setting['key'], auth_setting['value'])) + else: + raise ApiValueError( + 'Authentication token must be in `query` or `header`' + ) + + def __deserialize_file(self, response): + """Deserializes body to file + + Saves response body into a file in a temporary folder, + using the filename from the `Content-Disposition` header if provided. + + handle file downloading + save response body into a tmp file and return the instance + + :param response: RESTResponse. + :return: file path. + """ + fd, path = tempfile.mkstemp(dir=self.configuration.temp_folder_path) + os.close(fd) + os.remove(path) + + content_disposition = response.getheader("Content-Disposition") + if content_disposition: + m = re.search( + r'filename=[\'"]?([^\'"\s]+)[\'"]?', + content_disposition + ) + assert m is not None, "Unexpected 'content-disposition' header value" + filename = m.group(1) + path = os.path.join(os.path.dirname(path), filename) + + with open(path, "wb") as f: + f.write(response.data) + + return path + + def __deserialize_primitive(self, data, klass): + """Deserializes string to primitive type. + + :param data: str. + :param klass: class literal. + + :return: int, long, float, str, bool. + """ + try: + return klass(data) + except UnicodeEncodeError: + return str(data) + except TypeError: + return data + + def __deserialize_object(self, value): + """Return an original value. + + :return: object. + """ + return value + + def __deserialize_date(self, string): + """Deserializes string to date. + + :param string: str. + :return: date. + """ + try: + return parse(string).date() + except ImportError: + return string + except ValueError: + raise rest.ApiException( + status=0, + reason="Failed to parse `{0}` as date object".format(string) + ) + + def __deserialize_datetime(self, string): + """Deserializes string to datetime. + + The string should be in iso8601 datetime format. + + :param string: str. + :return: datetime. + """ + try: + return parse(string) + except ImportError: + return string + except ValueError: + raise rest.ApiException( + status=0, + reason=( + "Failed to parse `{0}` as datetime object" + .format(string) + ) + ) + + def __deserialize_enum(self, data, klass): + """Deserializes primitive type to enum. + + :param data: primitive type. + :param klass: class literal. + :return: enum value. + """ + try: + return klass(data) + except ValueError: + raise rest.ApiException( + status=0, + reason=( + "Failed to parse `{0}` as `{1}`" + .format(data, klass) + ) + ) + + def __deserialize_model(self, data, klass): + """Deserializes list or dict to model. + + :param data: dict, list. + :param klass: class literal. + :return: model object. + """ + + return klass.from_dict(data) diff --git a/src/conductor/client/my_aiohttp_client/api_response.py b/src/conductor/client/my_aiohttp_client/api_response.py new file mode 100644 index 000000000..9bc7c11f6 --- /dev/null +++ b/src/conductor/client/my_aiohttp_client/api_response.py @@ -0,0 +1,21 @@ +"""API response object.""" + +from __future__ import annotations +from typing import Optional, Generic, Mapping, TypeVar +from pydantic import Field, StrictInt, StrictBytes, BaseModel + +T = TypeVar("T") + +class ApiResponse(BaseModel, Generic[T]): + """ + API response object + """ + + status_code: StrictInt = Field(description="HTTP status code") + headers: Optional[Mapping[str, str]] = Field(None, description="HTTP headers") + data: T = Field(description="Deserialized data given the data type") + raw_data: StrictBytes = Field(description="Raw data (HTTP response body)") + + model_config = { + "arbitrary_types_allowed": True + } diff --git a/src/conductor/client/my_aiohttp_client/configuration.py b/src/conductor/client/my_aiohttp_client/configuration.py new file mode 100644 index 000000000..f7cced63e --- /dev/null +++ b/src/conductor/client/my_aiohttp_client/configuration.py @@ -0,0 +1,598 @@ +# coding: utf-8 + +""" + Orkes Conductor API Server + + Orkes Conductor API Server + + The version of the OpenAPI document: v2 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import copy +import http.client as httplib +import logging +from logging import FileHandler +import sys +from typing import Any, ClassVar, Dict, List, Literal, Optional, TypedDict, Union +from typing_extensions import NotRequired, Self + +import urllib3 + + +JSON_SCHEMA_VALIDATION_KEYWORDS = { + 'multipleOf', 'maximum', 'exclusiveMaximum', + 'minimum', 'exclusiveMinimum', 'maxLength', + 'minLength', 'pattern', 'maxItems', 'minItems' +} + +ServerVariablesT = Dict[str, str] + +GenericAuthSetting = TypedDict( + "GenericAuthSetting", + { + "type": str, + "in": str, + "key": str, + "value": str, + }, +) + + +OAuth2AuthSetting = TypedDict( + "OAuth2AuthSetting", + { + "type": Literal["oauth2"], + "in": Literal["header"], + "key": Literal["Authorization"], + "value": str, + }, +) + + +APIKeyAuthSetting = TypedDict( + "APIKeyAuthSetting", + { + "type": Literal["api_key"], + "in": str, + "key": str, + "value": Optional[str], + }, +) + + +BasicAuthSetting = TypedDict( + "BasicAuthSetting", + { + "type": Literal["basic"], + "in": Literal["header"], + "key": Literal["Authorization"], + "value": Optional[str], + }, +) + + +BearerFormatAuthSetting = TypedDict( + "BearerFormatAuthSetting", + { + "type": Literal["bearer"], + "in": Literal["header"], + "format": Literal["JWT"], + "key": Literal["Authorization"], + "value": str, + }, +) + + +BearerAuthSetting = TypedDict( + "BearerAuthSetting", + { + "type": Literal["bearer"], + "in": Literal["header"], + "key": Literal["Authorization"], + "value": str, + }, +) + + +HTTPSignatureAuthSetting = TypedDict( + "HTTPSignatureAuthSetting", + { + "type": Literal["http-signature"], + "in": Literal["header"], + "key": Literal["Authorization"], + "value": None, + }, +) + + +AuthSettings = TypedDict( + "AuthSettings", + { + "api_key": APIKeyAuthSetting, + }, + total=False, +) + + +class HostSettingVariable(TypedDict): + description: str + default_value: str + enum_values: List[str] + + +class HostSetting(TypedDict): + url: str + description: str + variables: NotRequired[Dict[str, HostSettingVariable]] + + +class Configuration: + """This class contains various settings of the API client. + + :param host: Base url. + :param ignore_operation_servers + Boolean to ignore operation servers for the API client. + Config will use `host` as the base url regardless of the operation servers. + :param api_key: Dict to store API key(s). + Each entry in the dict specifies an API key. + The dict key is the name of the security scheme in the OAS specification. + The dict value is the API key secret. + :param api_key_prefix: Dict to store API prefix (e.g. Bearer). + The dict key is the name of the security scheme in the OAS specification. + The dict value is an API key prefix when generating the auth data. + :param username: Username for HTTP basic authentication. + :param password: Password for HTTP basic authentication. + :param access_token: Access token. + :param server_index: Index to servers configuration. + :param server_variables: Mapping with string values to replace variables in + templated server configuration. The validation of enums is performed for + variables with defined enum values before. + :param server_operation_index: Mapping from operation ID to an index to server + configuration. + :param server_operation_variables: Mapping from operation ID to a mapping with + string values to replace variables in templated server configuration. + The validation of enums is performed for variables with defined enum + values before. + :param ssl_ca_cert: str - the path to a file of concatenated CA certificates + in PEM format. + :param retries: Number of retries for API requests. + :param ca_cert_data: verify the peer using concatenated CA certificate data + in PEM (str) or DER (bytes) format. + + :Example: + + API Key Authentication Example. + Given the following security scheme in the OpenAPI specification: + components: + securitySchemes: + cookieAuth: # name for the security scheme + type: apiKey + in: cookie + name: JSESSIONID # cookie name + + You can programmatically set the cookie: + +conf = my_aiohttp_client.Configuration( + api_key={'cookieAuth': 'abc123'} + api_key_prefix={'cookieAuth': 'JSESSIONID'} +) + + The following cookie will be added to the HTTP request: + Cookie: JSESSIONID abc123 + """ + + _default: ClassVar[Optional[Self]] = None + + def __init__( + self, + host: Optional[str]=None, + api_key: Optional[Dict[str, str]]=None, + api_key_prefix: Optional[Dict[str, str]]=None, + username: Optional[str]=None, + password: Optional[str]=None, + access_token: Optional[str]=None, + server_index: Optional[int]=None, + server_variables: Optional[ServerVariablesT]=None, + server_operation_index: Optional[Dict[int, int]]=None, + server_operation_variables: Optional[Dict[int, ServerVariablesT]]=None, + ignore_operation_servers: bool=False, + ssl_ca_cert: Optional[str]=None, + retries: Optional[int] = None, + ca_cert_data: Optional[Union[str, bytes]] = None, + *, + debug: Optional[bool] = None, + ) -> None: + """Constructor + """ + self._base_path = "https://siliconmint-dev.orkesconductor.io" if host is None else host + """Default Base url + """ + self.server_index = 0 if server_index is None and host is None else server_index + self.server_operation_index = server_operation_index or {} + """Default server index + """ + self.server_variables = server_variables or {} + self.server_operation_variables = server_operation_variables or {} + """Default server variables + """ + self.ignore_operation_servers = ignore_operation_servers + """Ignore operation servers + """ + self.temp_folder_path = None + """Temp file folder for downloading files + """ + # Authentication Settings + self.api_key = {} + if api_key: + self.api_key = api_key + """dict to store API key(s) + """ + self.api_key_prefix = {} + if api_key_prefix: + self.api_key_prefix = api_key_prefix + """dict to store API prefix (e.g. Bearer) + """ + self.refresh_api_key_hook = None + """function hook to refresh API key if expired + """ + self.username = username + """Username for HTTP basic authentication + """ + self.password = password + """Password for HTTP basic authentication + """ + self.access_token = access_token + """Access token + """ + self.logger = {} + """Logging Settings + """ + self.logger["package_logger"] = logging.getLogger("my_aiohttp_client") + self.logger["urllib3_logger"] = logging.getLogger("urllib3") + self.logger_format = '%(asctime)s %(levelname)s %(message)s' + """Log format + """ + self.logger_stream_handler = None + """Log stream handler + """ + self.logger_file_handler: Optional[FileHandler] = None + """Log file handler + """ + self.logger_file = None + """Debug file location + """ + if debug is not None: + self.debug = debug + else: + self.__debug = False + """Debug switch + """ + + self.verify_ssl = True + """SSL/TLS verification + Set this to false to skip verifying SSL certificate when calling API + from https server. + """ + self.ssl_ca_cert = ssl_ca_cert + """Set this to customize the certificate file to verify the peer. + """ + self.ca_cert_data = ca_cert_data + """Set this to verify the peer using PEM (str) or DER (bytes) + certificate data. + """ + self.cert_file = None + """client certificate file + """ + self.key_file = None + """client key file + """ + self.assert_hostname = None + """Set this to True/False to enable/disable SSL hostname verification. + """ + self.tls_server_name = None + """SSL/TLS Server Name Indication (SNI) + Set this to the SNI value expected by the server. + """ + + self.connection_pool_maxsize = 100 + """This value is passed to the aiohttp to limit simultaneous connections. + Default values is 100, None means no-limit. + """ + + self.proxy: Optional[str] = None + """Proxy URL + """ + self.proxy_headers = None + """Proxy headers + """ + self.safe_chars_for_path_param = '' + """Safe chars for path_param + """ + self.retries = retries + """Adding retries to override urllib3 default value 3 + """ + # Enable client side validation + self.client_side_validation = True + + self.socket_options = None + """Options to pass down to the underlying urllib3 socket + """ + + self.datetime_format = "%Y-%m-%dT%H:%M:%S.%f%z" + """datetime format + """ + + self.date_format = "%Y-%m-%d" + """date format + """ + + def __deepcopy__(self, memo: Dict[int, Any]) -> Self: + cls = self.__class__ + result = cls.__new__(cls) + memo[id(self)] = result + for k, v in self.__dict__.items(): + if k not in ('logger', 'logger_file_handler'): + setattr(result, k, copy.deepcopy(v, memo)) + # shallow copy of loggers + result.logger = copy.copy(self.logger) + # use setters to configure loggers + result.logger_file = self.logger_file + result.debug = self.debug + return result + + def __setattr__(self, name: str, value: Any) -> None: + object.__setattr__(self, name, value) + + @classmethod + def set_default(cls, default: Optional[Self]) -> None: + """Set default instance of configuration. + + It stores default configuration, which can be + returned by get_default_copy method. + + :param default: object of Configuration + """ + cls._default = default + + @classmethod + def get_default_copy(cls) -> Self: + """Deprecated. Please use `get_default` instead. + + Deprecated. Please use `get_default` instead. + + :return: The configuration object. + """ + return cls.get_default() + + @classmethod + def get_default(cls) -> Self: + """Return the default configuration. + + This method returns newly created, based on default constructor, + object of Configuration class or returns a copy of default + configuration. + + :return: The configuration object. + """ + if cls._default is None: + cls._default = cls() + return cls._default + + @property + def logger_file(self) -> Optional[str]: + """The logger file. + + If the logger_file is None, then add stream handler and remove file + handler. Otherwise, add file handler and remove stream handler. + + :param value: The logger_file path. + :type: str + """ + return self.__logger_file + + @logger_file.setter + def logger_file(self, value: Optional[str]) -> None: + """The logger file. + + If the logger_file is None, then add stream handler and remove file + handler. Otherwise, add file handler and remove stream handler. + + :param value: The logger_file path. + :type: str + """ + self.__logger_file = value + if self.__logger_file: + # If set logging file, + # then add file handler and remove stream handler. + self.logger_file_handler = logging.FileHandler(self.__logger_file) + self.logger_file_handler.setFormatter(self.logger_formatter) + for _, logger in self.logger.items(): + logger.addHandler(self.logger_file_handler) + + @property + def debug(self) -> bool: + """Debug status + + :param value: The debug status, True or False. + :type: bool + """ + return self.__debug + + @debug.setter + def debug(self, value: bool) -> None: + """Debug status + + :param value: The debug status, True or False. + :type: bool + """ + self.__debug = value + if self.__debug: + # if debug status is True, turn on debug logging + for _, logger in self.logger.items(): + logger.setLevel(logging.DEBUG) + # turn on httplib debug + httplib.HTTPConnection.debuglevel = 1 + else: + # if debug status is False, turn off debug logging, + # setting log level to default `logging.WARNING` + for _, logger in self.logger.items(): + logger.setLevel(logging.WARNING) + # turn off httplib debug + httplib.HTTPConnection.debuglevel = 0 + + @property + def logger_format(self) -> str: + """The logger format. + + The logger_formatter will be updated when sets logger_format. + + :param value: The format string. + :type: str + """ + return self.__logger_format + + @logger_format.setter + def logger_format(self, value: str) -> None: + """The logger format. + + The logger_formatter will be updated when sets logger_format. + + :param value: The format string. + :type: str + """ + self.__logger_format = value + self.logger_formatter = logging.Formatter(self.__logger_format) + + def get_api_key_with_prefix(self, identifier: str, alias: Optional[str]=None) -> Optional[str]: + """Gets API key (with prefix if set). + + :param identifier: The identifier of apiKey. + :param alias: The alternative identifier of apiKey. + :return: The token for api key authentication. + """ + if self.refresh_api_key_hook is not None: + self.refresh_api_key_hook(self) + key = self.api_key.get(identifier, self.api_key.get(alias) if alias is not None else None) + if key: + prefix = self.api_key_prefix.get(identifier) + if prefix: + return "%s %s" % (prefix, key) + else: + return key + + return None + + def get_basic_auth_token(self) -> Optional[str]: + """Gets HTTP basic authentication header (string). + + :return: The token for basic HTTP authentication. + """ + username = "" + if self.username is not None: + username = self.username + password = "" + if self.password is not None: + password = self.password + return urllib3.util.make_headers( + basic_auth=username + ':' + password + ).get('authorization') + + def auth_settings(self)-> AuthSettings: + """Gets Auth Settings dict for api client. + + :return: The Auth Settings information dict. + """ + auth: AuthSettings = {} + if 'api_key' in self.api_key: + auth['api_key'] = { + 'type': 'api_key', + 'in': 'header', + 'key': 'X-Authorization', + 'value': self.get_api_key_with_prefix( + 'api_key', + ), + } + return auth + + def to_debug_report(self) -> str: + """Gets the essential information for debugging. + + :return: The report for debugging. + """ + return "Python SDK Debug Report:\n"\ + "OS: {env}\n"\ + "Python Version: {pyversion}\n"\ + "Version of the API: v2\n"\ + "SDK Package Version: 1.0.0".\ + format(env=sys.platform, pyversion=sys.version) + + def get_host_settings(self) -> List[HostSetting]: + """Gets an array of host settings + + :return: An array of host settings + """ + return [ + { + 'url': "https://siliconmint-dev.orkesconductor.io", + 'description': "Generated server url", + } + ] + + def get_host_from_settings( + self, + index: Optional[int], + variables: Optional[ServerVariablesT]=None, + servers: Optional[List[HostSetting]]=None, + ) -> str: + """Gets host URL based on the index and variables + :param index: array index of the host settings + :param variables: hash of variable and the corresponding value + :param servers: an array of host settings or None + :return: URL based on host settings + """ + if index is None: + return self._base_path + + variables = {} if variables is None else variables + servers = self.get_host_settings() if servers is None else servers + + try: + server = servers[index] + except IndexError: + raise ValueError( + "Invalid index {0} when selecting the host settings. " + "Must be less than {1}".format(index, len(servers))) + + url = server['url'] + + # go through variables and replace placeholders + for variable_name, variable in server.get('variables', {}).items(): + used_value = variables.get( + variable_name, variable['default_value']) + + if 'enum_values' in variable \ + and used_value not in variable['enum_values']: + raise ValueError( + "The variable `{0}` in the host URL has invalid value " + "{1}. Must be {2}.".format( + variable_name, variables[variable_name], + variable['enum_values'])) + + url = url.replace("{" + variable_name + "}", used_value) + + return url + + @property + def host(self) -> str: + """Return generated host.""" + return self.get_host_from_settings(self.server_index, variables=self.server_variables) + + @host.setter + def host(self, value: str) -> None: + """Fix base path.""" + self._base_path = value + self.server_index = None diff --git a/src/conductor/client/my_aiohttp_client/exceptions.py b/src/conductor/client/my_aiohttp_client/exceptions.py new file mode 100644 index 000000000..ae60027d7 --- /dev/null +++ b/src/conductor/client/my_aiohttp_client/exceptions.py @@ -0,0 +1,216 @@ +# coding: utf-8 + +""" + Orkes Conductor API Server + + Orkes Conductor API Server + + The version of the OpenAPI document: v2 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + +from typing import Any, Optional +from typing_extensions import Self + +class OpenApiException(Exception): + """The base exception class for all OpenAPIExceptions""" + + +class ApiTypeError(OpenApiException, TypeError): + def __init__(self, msg, path_to_item=None, valid_classes=None, + key_type=None) -> None: + """ Raises an exception for TypeErrors + + Args: + msg (str): the exception message + + Keyword Args: + path_to_item (list): a list of keys an indices to get to the + current_item + None if unset + valid_classes (tuple): the primitive classes that current item + should be an instance of + None if unset + key_type (bool): False if our value is a value in a dict + True if it is a key in a dict + False if our item is an item in a list + None if unset + """ + self.path_to_item = path_to_item + self.valid_classes = valid_classes + self.key_type = key_type + full_msg = msg + if path_to_item: + full_msg = "{0} at {1}".format(msg, render_path(path_to_item)) + super(ApiTypeError, self).__init__(full_msg) + + +class ApiValueError(OpenApiException, ValueError): + def __init__(self, msg, path_to_item=None) -> None: + """ + Args: + msg (str): the exception message + + Keyword Args: + path_to_item (list) the path to the exception in the + received_data dict. None if unset + """ + + self.path_to_item = path_to_item + full_msg = msg + if path_to_item: + full_msg = "{0} at {1}".format(msg, render_path(path_to_item)) + super(ApiValueError, self).__init__(full_msg) + + +class ApiAttributeError(OpenApiException, AttributeError): + def __init__(self, msg, path_to_item=None) -> None: + """ + Raised when an attribute reference or assignment fails. + + Args: + msg (str): the exception message + + Keyword Args: + path_to_item (None/list) the path to the exception in the + received_data dict + """ + self.path_to_item = path_to_item + full_msg = msg + if path_to_item: + full_msg = "{0} at {1}".format(msg, render_path(path_to_item)) + super(ApiAttributeError, self).__init__(full_msg) + + +class ApiKeyError(OpenApiException, KeyError): + def __init__(self, msg, path_to_item=None) -> None: + """ + Args: + msg (str): the exception message + + Keyword Args: + path_to_item (None/list) the path to the exception in the + received_data dict + """ + self.path_to_item = path_to_item + full_msg = msg + if path_to_item: + full_msg = "{0} at {1}".format(msg, render_path(path_to_item)) + super(ApiKeyError, self).__init__(full_msg) + + +class ApiException(OpenApiException): + + def __init__( + self, + status=None, + reason=None, + http_resp=None, + *, + body: Optional[str] = None, + data: Optional[Any] = None, + ) -> None: + self.status = status + self.reason = reason + self.body = body + self.data = data + self.headers = None + + if http_resp: + if self.status is None: + self.status = http_resp.status + if self.reason is None: + self.reason = http_resp.reason + if self.body is None: + try: + self.body = http_resp.data.decode('utf-8') + except Exception: + pass + self.headers = http_resp.getheaders() + + @classmethod + def from_response( + cls, + *, + http_resp, + body: Optional[str], + data: Optional[Any], + ) -> Self: + if http_resp.status == 400: + raise BadRequestException(http_resp=http_resp, body=body, data=data) + + if http_resp.status == 401: + raise UnauthorizedException(http_resp=http_resp, body=body, data=data) + + if http_resp.status == 403: + raise ForbiddenException(http_resp=http_resp, body=body, data=data) + + if http_resp.status == 404: + raise NotFoundException(http_resp=http_resp, body=body, data=data) + + # Added new conditions for 409 and 422 + if http_resp.status == 409: + raise ConflictException(http_resp=http_resp, body=body, data=data) + + if http_resp.status == 422: + raise UnprocessableEntityException(http_resp=http_resp, body=body, data=data) + + if 500 <= http_resp.status <= 599: + raise ServiceException(http_resp=http_resp, body=body, data=data) + raise ApiException(http_resp=http_resp, body=body, data=data) + + def __str__(self): + """Custom error messages for exception""" + error_message = "({0})\n"\ + "Reason: {1}\n".format(self.status, self.reason) + if self.headers: + error_message += "HTTP response headers: {0}\n".format( + self.headers) + + if self.data or self.body: + error_message += "HTTP response body: {0}\n".format(self.data or self.body) + + return error_message + + +class BadRequestException(ApiException): + pass + + +class NotFoundException(ApiException): + pass + + +class UnauthorizedException(ApiException): + pass + + +class ForbiddenException(ApiException): + pass + + +class ServiceException(ApiException): + pass + + +class ConflictException(ApiException): + """Exception for HTTP 409 Conflict.""" + pass + + +class UnprocessableEntityException(ApiException): + """Exception for HTTP 422 Unprocessable Entity.""" + pass + + +def render_path(path_to_item): + """Returns a string representation of a path""" + result = "" + for pth in path_to_item: + if isinstance(pth, int): + result += "[{0}]".format(pth) + else: + result += "['{0}']".format(pth) + return result diff --git a/src/conductor/client/my_aiohttp_client/models/__init__.py b/src/conductor/client/my_aiohttp_client/models/__init__.py new file mode 100644 index 000000000..f3ab3cd0b --- /dev/null +++ b/src/conductor/client/my_aiohttp_client/models/__init__.py @@ -0,0 +1,19 @@ +# coding: utf-8 + +# flake8: noqa +""" + Orkes Conductor API Server + + Orkes Conductor API Server + + The version of the OpenAPI document: v2 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +# import models into model package +from conductor.client.my_aiohttp_client.models.create_or_update_application_request import CreateOrUpdateApplicationRequest +from conductor.client.my_aiohttp_client.models.extended_conductor_application import ExtendedConductorApplication +from conductor.client.my_aiohttp_client.models.tag import Tag diff --git a/src/conductor/client/my_aiohttp_client/models/create_or_update_application_request.py b/src/conductor/client/my_aiohttp_client/models/create_or_update_application_request.py new file mode 100644 index 000000000..862bd020c --- /dev/null +++ b/src/conductor/client/my_aiohttp_client/models/create_or_update_application_request.py @@ -0,0 +1,87 @@ +# coding: utf-8 + +""" + Orkes Conductor API Server + + Orkes Conductor API Server + + The version of the OpenAPI document: v2 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictStr +from typing import Any, ClassVar, Dict, List +from typing import Optional, Set +from typing_extensions import Self + +class CreateOrUpdateApplicationRequest(BaseModel): + """ + CreateOrUpdateApplicationRequest + """ # noqa: E501 + name: StrictStr = Field(description="Application's name e.g.: Payment Processors") + __properties: ClassVar[List[str]] = ["name"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of CreateOrUpdateApplicationRequest from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of CreateOrUpdateApplicationRequest from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "name": obj.get("name") + }) + return _obj + + diff --git a/src/conductor/client/my_aiohttp_client/models/extended_conductor_application.py b/src/conductor/client/my_aiohttp_client/models/extended_conductor_application.py new file mode 100644 index 000000000..1dffdbb42 --- /dev/null +++ b/src/conductor/client/my_aiohttp_client/models/extended_conductor_application.py @@ -0,0 +1,107 @@ +# coding: utf-8 + +""" + Orkes Conductor API Server + + Orkes Conductor API Server + + The version of the OpenAPI document: v2 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from conductor.client.my_aiohttp_client.models.tag import Tag +from typing import Optional, Set +from typing_extensions import Self + +class ExtendedConductorApplication(BaseModel): + """ + ExtendedConductorApplication + """ # noqa: E501 + create_time: Optional[StrictInt] = Field(default=None, alias="createTime") + created_by: Optional[StrictStr] = Field(default=None, alias="createdBy") + id: Optional[StrictStr] = None + name: Optional[StrictStr] = None + tags: Optional[List[Tag]] = None + update_time: Optional[StrictInt] = Field(default=None, alias="updateTime") + updated_by: Optional[StrictStr] = Field(default=None, alias="updatedBy") + __properties: ClassVar[List[str]] = ["createTime", "createdBy", "id", "name", "tags", "updateTime", "updatedBy"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ExtendedConductorApplication from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + # override the default output from pydantic by calling `to_dict()` of each item in tags (list) + _items = [] + if self.tags: + for _item_tags in self.tags: + if _item_tags: + _items.append(_item_tags.to_dict()) + _dict['tags'] = _items + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ExtendedConductorApplication from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "createTime": obj.get("createTime"), + "createdBy": obj.get("createdBy"), + "id": obj.get("id"), + "name": obj.get("name"), + "tags": [Tag.from_dict(_item) for _item in obj["tags"]] if obj.get("tags") is not None else None, + "updateTime": obj.get("updateTime"), + "updatedBy": obj.get("updatedBy") + }) + return _obj + + diff --git a/src/conductor/client/my_aiohttp_client/models/tag.py b/src/conductor/client/my_aiohttp_client/models/tag.py new file mode 100644 index 000000000..5e8921873 --- /dev/null +++ b/src/conductor/client/my_aiohttp_client/models/tag.py @@ -0,0 +1,91 @@ +# coding: utf-8 + +""" + Orkes Conductor API Server + + Orkes Conductor API Server + + The version of the OpenAPI document: v2 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +from __future__ import annotations +import pprint +import re # noqa: F401 +import json + +from pydantic import BaseModel, ConfigDict, StrictStr +from typing import Any, ClassVar, Dict, List, Optional +from typing import Optional, Set +from typing_extensions import Self + +class Tag(BaseModel): + """ + Tag + """ # noqa: E501 + key: Optional[StrictStr] = None + type: Optional[StrictStr] = None + value: Optional[StrictStr] = None + __properties: ClassVar[List[str]] = ["key", "type", "value"] + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of Tag from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([ + ]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of Tag from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate({ + "key": obj.get("key"), + "type": obj.get("type"), + "value": obj.get("value") + }) + return _obj + + diff --git a/src/conductor/client/my_aiohttp_client/rest.py b/src/conductor/client/my_aiohttp_client/rest.py new file mode 100644 index 000000000..c5f74ed6a --- /dev/null +++ b/src/conductor/client/my_aiohttp_client/rest.py @@ -0,0 +1,213 @@ +# coding: utf-8 + +""" + Orkes Conductor API Server + + Orkes Conductor API Server + + The version of the OpenAPI document: v2 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + + +import io +import json +import re +import ssl +from typing import Optional, Union + +import aiohttp +import aiohttp_retry + +from conductor.client.my_aiohttp_client.exceptions import ApiException, ApiValueError + +RESTResponseType = aiohttp.ClientResponse + +ALLOW_RETRY_METHODS = frozenset({'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PUT', 'TRACE'}) + +class RESTResponse(io.IOBase): + + def __init__(self, resp) -> None: + self.response = resp + self.status = resp.status + self.reason = resp.reason + self.data = None + + async def read(self): + if self.data is None: + self.data = await self.response.read() + return self.data + + def getheaders(self): + """Returns a CIMultiDictProxy of the response headers.""" + return self.response.headers + + def getheader(self, name, default=None): + """Returns a given response header.""" + return self.response.headers.get(name, default) + + +class RESTClientObject: + + def __init__(self, configuration) -> None: + + # maxsize is number of requests to host that are allowed in parallel + self.maxsize = configuration.connection_pool_maxsize + + self.ssl_context = ssl.create_default_context( + cafile=configuration.ssl_ca_cert, + cadata=configuration.ca_cert_data, + ) + if configuration.cert_file: + self.ssl_context.load_cert_chain( + configuration.cert_file, keyfile=configuration.key_file + ) + + if not configuration.verify_ssl: + self.ssl_context.check_hostname = False + self.ssl_context.verify_mode = ssl.CERT_NONE + + self.proxy = configuration.proxy + self.proxy_headers = configuration.proxy_headers + + self.retries = configuration.retries + + self.pool_manager: Optional[aiohttp.ClientSession] = None + self.retry_client: Optional[aiohttp_retry.RetryClient] = None + + async def close(self) -> None: + if self.pool_manager: + await self.pool_manager.close() + if self.retry_client is not None: + await self.retry_client.close() + + async def request( + self, + method, + url, + headers=None, + body=None, + post_params=None, + _request_timeout=None + ): + """Execute request + + :param method: http request method + :param url: http request url + :param headers: http request headers + :param body: request json body, for `application/json` + :param post_params: request post parameters, + `application/x-www-form-urlencoded` + and `multipart/form-data` + :param _request_timeout: timeout setting for this request. If one + number provided, it will be total request + timeout. It can also be a pair (tuple) of + (connection, read) timeouts. + """ + method = method.upper() + assert method in [ + 'GET', + 'HEAD', + 'DELETE', + 'POST', + 'PUT', + 'PATCH', + 'OPTIONS' + ] + + if post_params and body: + raise ApiValueError( + "body parameter cannot be used with post_params parameter." + ) + + post_params = post_params or {} + headers = headers or {} + # url already contains the URL query string + timeout = _request_timeout or 5 * 60 + + if 'Content-Type' not in headers: + headers['Content-Type'] = 'application/json' + + args = { + "method": method, + "url": url, + "timeout": timeout, + "headers": headers + } + + if self.proxy: + args["proxy"] = self.proxy + if self.proxy_headers: + args["proxy_headers"] = self.proxy_headers + + # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE` + if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']: + if re.search('json', headers['Content-Type'], re.IGNORECASE): + if body is not None: + body = json.dumps(body) + args["data"] = body + elif headers['Content-Type'] == 'application/x-www-form-urlencoded': + args["data"] = aiohttp.FormData(post_params) + elif headers['Content-Type'] == 'multipart/form-data': + # must del headers['Content-Type'], or the correct + # Content-Type which generated by aiohttp + del headers['Content-Type'] + data = aiohttp.FormData() + for param in post_params: + k, v = param + if isinstance(v, tuple) and len(v) == 3: + data.add_field( + k, + value=v[1], + filename=v[0], + content_type=v[2] + ) + else: + # Ensures that dict objects are serialized + if isinstance(v, dict): + v = json.dumps(v) + elif isinstance(v, int): + v = str(v) + data.add_field(k, v) + args["data"] = data + + # Pass a `bytes` or `str` parameter directly in the body to support + # other content types than Json when `body` argument is provided + # in serialized form + elif isinstance(body, str) or isinstance(body, bytes): + args["data"] = body + else: + # Cannot generate the request from given parameters + msg = """Cannot prepare a request message for provided + arguments. Please check that your arguments match + declared content type.""" + raise ApiException(status=0, reason=msg) + + pool_manager: Union[aiohttp.ClientSession, aiohttp_retry.RetryClient] + + # https pool manager + if self.pool_manager is None: + self.pool_manager = aiohttp.ClientSession( + connector=aiohttp.TCPConnector(limit=self.maxsize, ssl=self.ssl_context), + trust_env=True, + ) + pool_manager = self.pool_manager + + if self.retries is not None and method in ALLOW_RETRY_METHODS: + if self.retry_client is None: + self.retry_client = aiohttp_retry.RetryClient( + client_session=self.pool_manager, + retry_options=aiohttp_retry.ExponentialRetry( + attempts=self.retries, + factor=2.0, + start_timeout=0.1, + max_timeout=120.0 + ) + ) + pool_manager = self.retry_client + + r = await pool_manager.request(**args) + + return RESTResponse(r) diff --git a/src/conductor/client/orkes/async_orkes_base_client.py b/src/conductor/client/orkes/async_orkes_base_client.py new file mode 100644 index 000000000..2f2e85198 --- /dev/null +++ b/src/conductor/client/orkes/async_orkes_base_client.py @@ -0,0 +1,10 @@ +import logging + +from conductor.client.my_aiohttp_client import Configuration, ApiClient, ApplicationResourceApi + + +class AsyncOrkesBaseClient: + def __init__(self, configuration: Configuration): + self.api_client = ApiClient(configuration) + self.logger = logging.getLogger(__name__) + self.application_resource_api = ApplicationResourceApi(self.api_client) diff --git a/swagger.json b/swagger.json new file mode 100644 index 000000000..d6e3deb2b --- /dev/null +++ b/swagger.json @@ -0,0 +1,4900 @@ +{ + "openapi": "3.0.1", + "info": { + "description": "Orkes Conductor API Server", + "title": "Orkes Conductor API Server", + "version": "v2" + }, + "servers": [ + { + "url": "https://siliconmint-dev.orkesconductor.io", + "description": "Generated server url" + } + ], + "security": [{ "api_key": [] }], + "paths": { + "/api/applications": { + "get": { + "operationId": "listApplications", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtendedConductorApplication" + } + } + } + }, + "description": "OK" + } + }, + "summary": "Get all applications", + "tags": ["application-resource"] + }, + "post": { + "operationId": "createApplication", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOrUpdateApplicationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { "schema": { "type": "object" } } + }, + "description": "OK" + } + }, + "summary": "Create an application", + "tags": ["application-resource"] + } + }, + "/api/applications/key/{accessKeyId}": { + "get": { + "operationId": "getAppByAccessKeyId", + "parameters": [ + { + "in": "path", + "name": "accessKeyId", + "required": true, + "schema": { "type": "string" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { "schema": { "type": "object" } } + }, + "description": "OK" + } + }, + "summary": "Get application id by access key id", + "tags": ["application-resource"] + } + }, + "/api/applications/{applicationId}/accessKeys/{keyId}": { + "delete": { + "operationId": "deleteAccessKey", + "parameters": [ + { + "in": "path", + "name": "applicationId", + "required": true, + "schema": { "type": "string" } + }, + { + "in": "path", + "name": "keyId", + "required": true, + "schema": { "type": "string" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { "schema": { "type": "object" } } + }, + "description": "OK" + } + }, + "summary": "Delete an access key", + "tags": ["application-resource"] + } + }, + "/api/applications/{applicationId}/accessKeys/{keyId}/status": { + "post": { + "operationId": "toggleAccessKeyStatus", + "parameters": [ + { + "in": "path", + "name": "applicationId", + "required": true, + "schema": { "type": "string" } + }, + { + "in": "path", + "name": "keyId", + "required": true, + "schema": { "type": "string" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { "schema": { "type": "object" } } + }, + "description": "OK" + } + }, + "summary": "Toggle the status of an access key", + "tags": ["application-resource"] + } + }, + "/api/applications/{applicationId}/roles/{role}": { + "delete": { + "operationId": "removeRoleFromApplicationUser", + "parameters": [ + { + "in": "path", + "name": "applicationId", + "required": true, + "schema": { "type": "string" } + }, + { + "in": "path", + "name": "role", + "required": true, + "schema": { "type": "string" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { "schema": { "type": "object" } } + }, + "description": "OK" + } + }, + "tags": ["application-resource"] + }, + "post": { + "operationId": "addRoleToApplicationUser", + "parameters": [ + { + "in": "path", + "name": "applicationId", + "required": true, + "schema": { "type": "string" } + }, + { + "in": "path", + "name": "role", + "required": true, + "schema": { "type": "string" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { "schema": { "type": "object" } } + }, + "description": "OK" + } + }, + "tags": ["application-resource"] + } + }, + "/api/applications/{id}": { + "delete": { + "operationId": "deleteApplication", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { "type": "string" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { "schema": { "type": "object" } } + }, + "description": "OK" + } + }, + "summary": "Delete an application", + "tags": ["application-resource"] + }, + "get": { + "operationId": "getApplication", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { "type": "string" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { "schema": { "type": "object" } } + }, + "description": "OK" + } + }, + "summary": "Get an application by id", + "tags": ["application-resource"] + }, + "put": { + "operationId": "updateApplication", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { "type": "string" } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOrUpdateApplicationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { "schema": { "type": "object" } } + }, + "description": "OK" + } + }, + "summary": "Update an application", + "tags": ["application-resource"] + } + }, + "/api/applications/{id}/accessKeys": { + "get": { + "operationId": "getAccessKeys", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { "type": "string" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { "schema": { "type": "object" } } + }, + "description": "OK" + } + }, + "summary": "Get application's access keys", + "tags": ["application-resource"] + }, + "post": { + "operationId": "createAccessKey", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { "type": "string" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { "schema": { "type": "object" } } + }, + "description": "OK" + } + }, + "summary": "Create an access key for an application", + "tags": ["application-resource"] + } + }, + "/api/applications/{id}/tags": { + "delete": { + "operationId": "deleteTagForApplication", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { "type": "string" } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { "$ref": "#/components/schemas/Tag" } + } + } + }, + "required": true + }, + "responses": { "200": { "description": "OK" } }, + "summary": "Delete a tag for application", + "tags": ["application-resource"] + }, + "get": { + "operationId": "getTagsForApplication", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { "type": "string" } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { "$ref": "#/components/schemas/Tag" } + } + } + }, + "description": "OK" + } + }, + "summary": "Get tags by application", + "tags": ["application-resource"] + }, + "put": { + "operationId": "putTagForApplication", + "parameters": [ + { + "in": "path", + "name": "id", + "required": true, + "schema": { "type": "string" } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { "$ref": "#/components/schemas/Tag" } + } + } + }, + "required": true + }, + "responses": { "200": { "description": "OK" } }, + "summary": "Put a tag to application", + "tags": ["application-resource"] + } + } + }, + "components": { + "schemas": { + "Action": { + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "start_workflow", + "complete_task", + "fail_task", + "terminate_workflow", + "update_workflow_variables" + ] + }, + "complete_task": { "$ref": "#/components/schemas/TaskDetails" }, + "expandInlineJSON": { "type": "boolean" }, + "fail_task": { "$ref": "#/components/schemas/TaskDetails" }, + "start_workflow": { + "$ref": "#/components/schemas/StartWorkflowRequest" + }, + "terminate_workflow": { + "$ref": "#/components/schemas/TerminateWorkflow" + }, + "update_workflow_variables": { + "$ref": "#/components/schemas/UpdateWorkflowVariables" + } + } + }, + "Any": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Any" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "parserForType": { "$ref": "#/components/schemas/ParserAny" }, + "serializedSize": { "type": "integer", "format": "int32" }, + "typeUrl": { "type": "string" }, + "typeUrlBytes": { "$ref": "#/components/schemas/ByteString" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" }, + "value": { "$ref": "#/components/schemas/ByteString" } + } + }, + "AuthorizationRequest": { + "required": ["access", "subject", "target"], + "type": "object", + "properties": { + "access": { + "uniqueItems": true, + "type": "array", + "description": "The set of access which is granted or removed", + "items": { + "type": "string", + "description": "The set of access which is granted or removed", + "enum": ["CREATE", "READ", "EXECUTE", "UPDATE", "DELETE"] + } + }, + "subject": { "$ref": "#/components/schemas/SubjectRef" }, + "target": { "$ref": "#/components/schemas/TargetRef" } + } + }, + "BulkResponse": { + "type": "object", + "properties": { + "bulkErrorResults": { + "type": "object", + "additionalProperties": { "type": "string" } + }, + "bulkSuccessfulResults": { + "type": "array", + "items": { "type": "object" } + } + } + }, + "ByteString": { + "type": "object", + "properties": { + "empty": { "type": "boolean" }, + "validUtf8": { "type": "boolean" } + } + }, + "CacheConfig": { + "type": "object", + "properties": { + "key": { "type": "string" }, + "ttlInSecond": { "type": "integer", "format": "int32" } + } + }, + "ConductorUser": { + "type": "object", + "properties": { + "applicationUser": { "type": "boolean" }, + "encryptedId": { "type": "boolean" }, + "encryptedIdDisplayValue": { "type": "string" }, + "groups": { + "uniqueItems": true, + "type": "array", + "items": { "$ref": "#/components/schemas/Group" } + }, + "id": { "type": "string" }, + "name": { "type": "string" }, + "orkesWorkersApp": { "type": "boolean" }, + "roles": { + "uniqueItems": true, + "type": "array", + "items": { "$ref": "#/components/schemas/Role" } + }, + "uuid": { "type": "string" } + } + }, + "ConnectivityTestInput": { + "required": ["sink"], + "type": "object", + "properties": { + "input": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "sink": { "type": "string" } + } + }, + "ConnectivityTestResult": { + "type": "object", + "properties": { + "reason": { "type": "string" }, + "successful": { "type": "boolean" }, + "workflowId": { "type": "string" } + } + }, + "CorrelationIdsSearchRequest": { + "required": ["correlationIds", "workflowNames"], + "type": "object", + "properties": { + "correlationIds": { "type": "array", "items": { "type": "string" } }, + "workflowNames": { "type": "array", "items": { "type": "string" } } + } + }, + "CreateOrUpdateApplicationRequest": { + "required": ["name"], + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Application's name e.g.: Payment Processors" + } + } + }, + "Declaration": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/Declaration" + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "fullName": { "type": "string" }, + "fullNameBytes": { "$ref": "#/components/schemas/ByteString" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "number": { "type": "integer", "format": "int32" }, + "parserForType": { "$ref": "#/components/schemas/ParserDeclaration" }, + "repeated": { "type": "boolean" }, + "reserved": { "type": "boolean" }, + "serializedSize": { "type": "integer", "format": "int32" }, + "type": { "type": "string" }, + "typeBytes": { "$ref": "#/components/schemas/ByteString" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "DeclarationOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "fullName": { "type": "string" }, + "fullNameBytes": { "$ref": "#/components/schemas/ByteString" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "number": { "type": "integer", "format": "int32" }, + "repeated": { "type": "boolean" }, + "reserved": { "type": "boolean" }, + "type": { "type": "string" }, + "typeBytes": { "$ref": "#/components/schemas/ByteString" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "Descriptor": { + "type": "object", + "properties": { + "containingType": { "$ref": "#/components/schemas/Descriptor" }, + "enumTypes": { + "type": "array", + "items": { "$ref": "#/components/schemas/EnumDescriptor" } + }, + "extendable": { "type": "boolean" }, + "extensions": { + "type": "array", + "items": { "$ref": "#/components/schemas/FieldDescriptor" } + }, + "fields": { + "type": "array", + "items": { "$ref": "#/components/schemas/FieldDescriptor" } + }, + "file": { "$ref": "#/components/schemas/FileDescriptor" }, + "fullName": { "type": "string" }, + "index": { "type": "integer", "format": "int32" }, + "name": { "type": "string" }, + "nestedTypes": { + "type": "array", + "items": { "$ref": "#/components/schemas/Descriptor" } + }, + "oneofs": { + "type": "array", + "items": { "$ref": "#/components/schemas/OneofDescriptor" } + }, + "options": { "$ref": "#/components/schemas/MessageOptions" }, + "proto": { "$ref": "#/components/schemas/DescriptorProto" }, + "realOneofs": { + "type": "array", + "items": { "$ref": "#/components/schemas/OneofDescriptor" } + } + } + }, + "DescriptorProto": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/DescriptorProto" + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "enumTypeCount": { "type": "integer", "format": "int32" }, + "enumTypeList": { + "type": "array", + "items": { "$ref": "#/components/schemas/EnumDescriptorProto" } + }, + "enumTypeOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EnumDescriptorProtoOrBuilder" + } + }, + "extensionCount": { "type": "integer", "format": "int32" }, + "extensionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/FieldDescriptorProto" } + }, + "extensionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FieldDescriptorProtoOrBuilder" + } + }, + "extensionRangeCount": { "type": "integer", "format": "int32" }, + "extensionRangeList": { + "type": "array", + "items": { "$ref": "#/components/schemas/ExtensionRange" } + }, + "extensionRangeOrBuilderList": { + "type": "array", + "items": { "$ref": "#/components/schemas/ExtensionRangeOrBuilder" } + }, + "fieldCount": { "type": "integer", "format": "int32" }, + "fieldList": { + "type": "array", + "items": { "$ref": "#/components/schemas/FieldDescriptorProto" } + }, + "fieldOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FieldDescriptorProtoOrBuilder" + } + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "name": { "type": "string" }, + "nameBytes": { "$ref": "#/components/schemas/ByteString" }, + "nestedTypeCount": { "type": "integer", "format": "int32" }, + "nestedTypeList": { + "type": "array", + "items": { "$ref": "#/components/schemas/DescriptorProto" } + }, + "nestedTypeOrBuilderList": { + "type": "array", + "items": { "$ref": "#/components/schemas/DescriptorProtoOrBuilder" } + }, + "oneofDeclCount": { "type": "integer", "format": "int32" }, + "oneofDeclList": { + "type": "array", + "items": { "$ref": "#/components/schemas/OneofDescriptorProto" } + }, + "oneofDeclOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OneofDescriptorProtoOrBuilder" + } + }, + "options": { "$ref": "#/components/schemas/MessageOptions" }, + "optionsOrBuilder": { + "$ref": "#/components/schemas/MessageOptionsOrBuilder" + }, + "parserForType": { + "$ref": "#/components/schemas/ParserDescriptorProto" + }, + "reservedNameCount": { "type": "integer", "format": "int32" }, + "reservedNameList": { + "type": "array", + "properties": { "empty": { "type": "boolean" } }, + "items": { "type": "string" } + }, + "reservedRangeCount": { "type": "integer", "format": "int32" }, + "reservedRangeList": { + "type": "array", + "items": { "$ref": "#/components/schemas/ReservedRange" } + }, + "reservedRangeOrBuilderList": { + "type": "array", + "items": { "$ref": "#/components/schemas/ReservedRangeOrBuilder" } + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "DescriptorProtoOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "enumTypeCount": { "type": "integer", "format": "int32" }, + "enumTypeList": { + "type": "array", + "items": { "$ref": "#/components/schemas/EnumDescriptorProto" } + }, + "enumTypeOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EnumDescriptorProtoOrBuilder" + } + }, + "extensionCount": { "type": "integer", "format": "int32" }, + "extensionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/FieldDescriptorProto" } + }, + "extensionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FieldDescriptorProtoOrBuilder" + } + }, + "extensionRangeCount": { "type": "integer", "format": "int32" }, + "extensionRangeList": { + "type": "array", + "items": { "$ref": "#/components/schemas/ExtensionRange" } + }, + "extensionRangeOrBuilderList": { + "type": "array", + "items": { "$ref": "#/components/schemas/ExtensionRangeOrBuilder" } + }, + "fieldCount": { "type": "integer", "format": "int32" }, + "fieldList": { + "type": "array", + "items": { "$ref": "#/components/schemas/FieldDescriptorProto" } + }, + "fieldOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FieldDescriptorProtoOrBuilder" + } + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "name": { "type": "string" }, + "nameBytes": { "$ref": "#/components/schemas/ByteString" }, + "nestedTypeCount": { "type": "integer", "format": "int32" }, + "nestedTypeList": { + "type": "array", + "items": { "$ref": "#/components/schemas/DescriptorProto" } + }, + "oneofDeclCount": { "type": "integer", "format": "int32" }, + "oneofDeclList": { + "type": "array", + "items": { "$ref": "#/components/schemas/OneofDescriptorProto" } + }, + "oneofDeclOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OneofDescriptorProtoOrBuilder" + } + }, + "options": { "$ref": "#/components/schemas/MessageOptions" }, + "optionsOrBuilder": { + "$ref": "#/components/schemas/MessageOptionsOrBuilder" + }, + "reservedNameCount": { "type": "integer", "format": "int32" }, + "reservedNameList": { + "type": "array", + "items": { "type": "string" } + }, + "reservedRangeCount": { "type": "integer", "format": "int32" }, + "reservedRangeList": { + "type": "array", + "items": { "$ref": "#/components/schemas/ReservedRange" } + }, + "reservedRangeOrBuilderList": { + "type": "array", + "items": { "$ref": "#/components/schemas/ReservedRangeOrBuilder" } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "EditionDefault": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/EditionDefault" + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "edition": { + "type": "string", + "enum": [ + "EDITION_UNKNOWN", + "EDITION_PROTO2", + "EDITION_PROTO3", + "EDITION_2023", + "EDITION_1_TEST_ONLY", + "EDITION_2_TEST_ONLY", + "EDITION_99997_TEST_ONLY", + "EDITION_99998_TEST_ONLY", + "EDITION_99999_TEST_ONLY" + ] + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "parserForType": { + "$ref": "#/components/schemas/ParserEditionDefault" + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" }, + "value": { "type": "string" }, + "valueBytes": { "$ref": "#/components/schemas/ByteString" } + } + }, + "EditionDefaultOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "edition": { + "type": "string", + "enum": [ + "EDITION_UNKNOWN", + "EDITION_PROTO2", + "EDITION_PROTO3", + "EDITION_2023", + "EDITION_1_TEST_ONLY", + "EDITION_2_TEST_ONLY", + "EDITION_99997_TEST_ONLY", + "EDITION_99998_TEST_ONLY", + "EDITION_99999_TEST_ONLY" + ] + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" }, + "value": { "type": "string" }, + "valueBytes": { "$ref": "#/components/schemas/ByteString" } + } + }, + "EnumDescriptor": { + "type": "object", + "properties": { + "closed": { "type": "boolean" }, + "containingType": { "$ref": "#/components/schemas/Descriptor" }, + "file": { "$ref": "#/components/schemas/FileDescriptor" }, + "fullName": { "type": "string" }, + "index": { "type": "integer", "format": "int32" }, + "name": { "type": "string" }, + "options": { "$ref": "#/components/schemas/EnumOptions" }, + "proto": { "$ref": "#/components/schemas/EnumDescriptorProto" }, + "values": { + "type": "array", + "items": { "$ref": "#/components/schemas/EnumValueDescriptor" } + } + } + }, + "EnumDescriptorProto": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/EnumDescriptorProto" + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "name": { "type": "string" }, + "nameBytes": { "$ref": "#/components/schemas/ByteString" }, + "options": { "$ref": "#/components/schemas/EnumOptions" }, + "optionsOrBuilder": { + "$ref": "#/components/schemas/EnumOptionsOrBuilder" + }, + "parserForType": { + "$ref": "#/components/schemas/ParserEnumDescriptorProto" + }, + "reservedNameCount": { "type": "integer", "format": "int32" }, + "reservedNameList": { + "type": "array", + "properties": { "empty": { "type": "boolean" } }, + "items": { "type": "string" } + }, + "reservedRangeCount": { "type": "integer", "format": "int32" }, + "reservedRangeList": { + "type": "array", + "items": { "$ref": "#/components/schemas/EnumReservedRange" } + }, + "reservedRangeOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EnumReservedRangeOrBuilder" + } + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" }, + "valueCount": { "type": "integer", "format": "int32" }, + "valueList": { + "type": "array", + "items": { "$ref": "#/components/schemas/EnumValueDescriptorProto" } + }, + "valueOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EnumValueDescriptorProtoOrBuilder" + } + } + } + }, + "EnumDescriptorProtoOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "name": { "type": "string" }, + "nameBytes": { "$ref": "#/components/schemas/ByteString" }, + "options": { "$ref": "#/components/schemas/EnumOptions" }, + "optionsOrBuilder": { + "$ref": "#/components/schemas/EnumOptionsOrBuilder" + }, + "reservedNameCount": { "type": "integer", "format": "int32" }, + "reservedNameList": { + "type": "array", + "items": { "type": "string" } + }, + "reservedRangeCount": { "type": "integer", "format": "int32" }, + "reservedRangeList": { + "type": "array", + "items": { "$ref": "#/components/schemas/EnumReservedRange" } + }, + "reservedRangeOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EnumReservedRangeOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" }, + "valueCount": { "type": "integer", "format": "int32" }, + "valueList": { + "type": "array", + "items": { "$ref": "#/components/schemas/EnumValueDescriptorProto" } + }, + "valueOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EnumValueDescriptorProtoOrBuilder" + } + } + } + }, + "EnumOptions": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "allFieldsRaw": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "allowAlias": { "type": "boolean" }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/EnumOptions" + }, + "deprecated": { "type": "boolean" }, + "deprecatedLegacyJsonFieldConflicts": { + "type": "boolean", + "deprecated": true + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "parserForType": { "$ref": "#/components/schemas/ParserEnumOptions" }, + "serializedSize": { "type": "integer", "format": "int32" }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "EnumOptionsOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "allowAlias": { "type": "boolean" }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "deprecated": { "type": "boolean" }, + "deprecatedLegacyJsonFieldConflicts": { + "type": "boolean", + "deprecated": true + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "EnumReservedRange": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/EnumReservedRange" + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "end": { "type": "integer", "format": "int32" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "parserForType": { + "$ref": "#/components/schemas/ParserEnumReservedRange" + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "start": { "type": "integer", "format": "int32" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "EnumReservedRangeOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "end": { "type": "integer", "format": "int32" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "start": { "type": "integer", "format": "int32" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "EnumValueDescriptor": { + "type": "object", + "properties": { + "file": { "$ref": "#/components/schemas/FileDescriptor" }, + "fullName": { "type": "string" }, + "index": { "type": "integer", "format": "int32" }, + "name": { "type": "string" }, + "number": { "type": "integer", "format": "int32" }, + "options": { "$ref": "#/components/schemas/EnumValueOptions" }, + "proto": { "$ref": "#/components/schemas/EnumValueDescriptorProto" }, + "type": { "$ref": "#/components/schemas/EnumDescriptor" } + } + }, + "EnumValueDescriptorProto": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/EnumValueDescriptorProto" + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "name": { "type": "string" }, + "nameBytes": { "$ref": "#/components/schemas/ByteString" }, + "number": { "type": "integer", "format": "int32" }, + "options": { "$ref": "#/components/schemas/EnumValueOptions" }, + "optionsOrBuilder": { + "$ref": "#/components/schemas/EnumValueOptionsOrBuilder" + }, + "parserForType": { + "$ref": "#/components/schemas/ParserEnumValueDescriptorProto" + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "EnumValueDescriptorProtoOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "name": { "type": "string" }, + "nameBytes": { "$ref": "#/components/schemas/ByteString" }, + "number": { "type": "integer", "format": "int32" }, + "options": { "$ref": "#/components/schemas/EnumValueOptions" }, + "optionsOrBuilder": { + "$ref": "#/components/schemas/EnumValueOptionsOrBuilder" + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "EnumValueOptions": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "allFieldsRaw": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "debugRedact": { "type": "boolean" }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/EnumValueOptions" + }, + "deprecated": { "type": "boolean" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "parserForType": { + "$ref": "#/components/schemas/ParserEnumValueOptions" + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "EnumValueOptionsOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "debugRedact": { "type": "boolean" }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "deprecated": { "type": "boolean" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "EnvironmentVariable": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "tags": { + "type": "array", + "items": { "$ref": "#/components/schemas/Tag" } + }, + "value": { "type": "string" } + } + }, + "EventHandler": { + "type": "object", + "properties": { + "actions": { + "type": "array", + "items": { "$ref": "#/components/schemas/Action" } + }, + "active": { "type": "boolean" }, + "condition": { "type": "string" }, + "createdBy": { "type": "string" }, + "description": { "type": "string" }, + "evaluatorType": { "type": "string" }, + "event": { "type": "string" }, + "name": { "type": "string" }, + "orgId": { "type": "string" }, + "tags": { + "type": "array", + "items": { "$ref": "#/components/schemas/Tag" } + } + } + }, + "EventLog": { + "type": "object", + "properties": { + "createdAt": { "type": "integer", "format": "int64" }, + "event": { "type": "string" }, + "eventType": { "type": "string", "enum": ["SEND", "RECEIVE"] }, + "handlerName": { "type": "string" }, + "id": { "type": "string" }, + "taskId": { "type": "string" }, + "workerId": { "type": "string" } + } + }, + "ExtendedConductorApplication": { + "type": "object", + "properties": { + "createTime": { "type": "integer", "format": "int64" }, + "createdBy": { "type": "string" }, + "id": { "type": "string" }, + "name": { "type": "string" }, + "tags": { + "type": "array", + "items": { "$ref": "#/components/schemas/Tag" } + }, + "updateTime": { "type": "integer", "format": "int64" }, + "updatedBy": { "type": "string" } + } + }, + "ExtendedEventExecution": { + "type": "object", + "properties": { + "action": { + "type": "string", + "enum": [ + "start_workflow", + "complete_task", + "fail_task", + "terminate_workflow", + "update_workflow_variables" + ] + }, + "created": { "type": "integer", "format": "int64" }, + "event": { "type": "string" }, + "eventHandler": { "$ref": "#/components/schemas/EventHandler" }, + "fullMessagePayload": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "id": { "type": "string" }, + "messageId": { "type": "string" }, + "name": { "type": "string" }, + "orgId": { "type": "string" }, + "output": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "payload": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "status": { + "type": "string", + "enum": ["IN_PROGRESS", "COMPLETED", "FAILED", "SKIPPED"] + }, + "statusDescription": { "type": "string" } + } + }, + "ExtendedSecret": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "tags": { + "type": "array", + "items": { "$ref": "#/components/schemas/Tag" } + } + } + }, + "ExtendedTaskDef": { + "required": ["name", "timeoutSeconds", "totalTimeoutSeconds"], + "type": "object", + "properties": { + "backoffScaleFactor": { + "minimum": 1, + "type": "integer", + "format": "int32" + }, + "baseType": { "type": "string" }, + "concurrentExecLimit": { "type": "integer", "format": "int32" }, + "createTime": { "type": "integer", "format": "int64" }, + "createdBy": { "type": "string" }, + "description": { "type": "string" }, + "enforceSchema": { "type": "boolean" }, + "executionNameSpace": { "type": "string" }, + "inputKeys": { "type": "array", "items": { "type": "string" } }, + "inputSchema": { "$ref": "#/components/schemas/SchemaDef" }, + "inputTemplate": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "isolationGroupId": { "type": "string" }, + "name": { "type": "string" }, + "outputKeys": { "type": "array", "items": { "type": "string" } }, + "outputSchema": { "$ref": "#/components/schemas/SchemaDef" }, + "overwriteTags": { "type": "boolean" }, + "ownerApp": { "type": "string" }, + "ownerEmail": { "type": "string" }, + "pollTimeoutSeconds": { + "minimum": 0, + "type": "integer", + "format": "int32" + }, + "rateLimitFrequencyInSeconds": { + "type": "integer", + "format": "int32" + }, + "rateLimitPerFrequency": { "type": "integer", "format": "int32" }, + "responseTimeoutSeconds": { + "minimum": 1, + "type": "integer", + "format": "int64" + }, + "retryCount": { "minimum": 0, "type": "integer", "format": "int32" }, + "retryDelaySeconds": { "type": "integer", "format": "int32" }, + "retryLogic": { + "type": "string", + "enum": ["FIXED", "EXPONENTIAL_BACKOFF", "LINEAR_BACKOFF"] + }, + "tags": { + "type": "array", + "items": { "$ref": "#/components/schemas/Tag" } + }, + "timeoutPolicy": { + "type": "string", + "enum": ["RETRY", "TIME_OUT_WF", "ALERT_ONLY"] + }, + "timeoutSeconds": { "type": "integer", "format": "int64" }, + "totalTimeoutSeconds": { "type": "integer", "format": "int64" }, + "updateTime": { "type": "integer", "format": "int64" }, + "updatedBy": { "type": "string" } + } + }, + "ExtendedWorkflowDef": { + "required": ["name", "tasks", "timeoutSeconds"], + "type": "object", + "properties": { + "createTime": { "type": "integer", "format": "int64" }, + "createdBy": { "type": "string" }, + "description": { "type": "string" }, + "enforceSchema": { "type": "boolean" }, + "failureWorkflow": { "type": "string" }, + "inputParameters": { "type": "array", "items": { "type": "string" } }, + "inputSchema": { "$ref": "#/components/schemas/SchemaDef" }, + "inputTemplate": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "name": { "type": "string" }, + "outputParameters": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "outputSchema": { "$ref": "#/components/schemas/SchemaDef" }, + "overwriteTags": { "type": "boolean" }, + "ownerApp": { "type": "string" }, + "ownerEmail": { "type": "string" }, + "rateLimitConfig": { "$ref": "#/components/schemas/RateLimitConfig" }, + "restartable": { "type": "boolean" }, + "schemaVersion": { + "maximum": 2, + "minimum": 2, + "type": "integer", + "format": "int32" + }, + "tags": { + "type": "array", + "items": { "$ref": "#/components/schemas/Tag" } + }, + "tasks": { + "type": "array", + "items": { "$ref": "#/components/schemas/WorkflowTask" } + }, + "timeoutPolicy": { + "type": "string", + "enum": ["TIME_OUT_WF", "ALERT_ONLY"] + }, + "timeoutSeconds": { "type": "integer", "format": "int64" }, + "updateTime": { "type": "integer", "format": "int64" }, + "updatedBy": { "type": "string" }, + "variables": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "version": { "type": "integer", "format": "int32" }, + "workflowStatusListenerEnabled": { "type": "boolean" }, + "workflowStatusListenerSink": { "type": "string" } + } + }, + "ExtensionRange": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/ExtensionRange" + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "end": { "type": "integer", "format": "int32" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "options": { "$ref": "#/components/schemas/ExtensionRangeOptions" }, + "optionsOrBuilder": { + "$ref": "#/components/schemas/ExtensionRangeOptionsOrBuilder" + }, + "parserForType": { + "$ref": "#/components/schemas/ParserExtensionRange" + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "start": { "type": "integer", "format": "int32" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "ExtensionRangeOptions": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "allFieldsRaw": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "declarationCount": { "type": "integer", "format": "int32" }, + "declarationList": { + "type": "array", + "items": { "$ref": "#/components/schemas/Declaration" } + }, + "declarationOrBuilderList": { + "type": "array", + "items": { "$ref": "#/components/schemas/DeclarationOrBuilder" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/ExtensionRangeOptions" + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "parserForType": { + "$ref": "#/components/schemas/ParserExtensionRangeOptions" + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" }, + "verification": { + "type": "string", + "enum": ["DECLARATION", "UNVERIFIED"] + } + } + }, + "ExtensionRangeOptionsOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "declarationCount": { "type": "integer", "format": "int32" }, + "declarationList": { + "type": "array", + "items": { "$ref": "#/components/schemas/Declaration" } + }, + "declarationOrBuilderList": { + "type": "array", + "items": { "$ref": "#/components/schemas/DeclarationOrBuilder" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" }, + "verification": { + "type": "string", + "enum": ["DECLARATION", "UNVERIFIED"] + } + } + }, + "ExtensionRangeOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "end": { "type": "integer", "format": "int32" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "options": { "$ref": "#/components/schemas/ExtensionRangeOptions" }, + "optionsOrBuilder": { + "$ref": "#/components/schemas/ExtensionRangeOptionsOrBuilder" + }, + "start": { "type": "integer", "format": "int32" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "FeatureSet": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "allFieldsRaw": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/FeatureSet" + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "enumType": { + "type": "string", + "enum": ["ENUM_TYPE_UNKNOWN", "OPEN", "CLOSED"] + }, + "fieldPresence": { + "type": "string", + "enum": [ + "FIELD_PRESENCE_UNKNOWN", + "EXPLICIT", + "IMPLICIT", + "LEGACY_REQUIRED" + ] + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "jsonFormat": { + "type": "string", + "enum": ["JSON_FORMAT_UNKNOWN", "ALLOW", "LEGACY_BEST_EFFORT"] + }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "messageEncoding": { + "type": "string", + "enum": ["MESSAGE_ENCODING_UNKNOWN", "LENGTH_PREFIXED", "DELIMITED"] + }, + "parserForType": { "$ref": "#/components/schemas/ParserFeatureSet" }, + "repeatedFieldEncoding": { + "type": "string", + "enum": ["REPEATED_FIELD_ENCODING_UNKNOWN", "PACKED", "EXPANDED"] + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" }, + "utf8Validation": { + "type": "string", + "enum": ["UTF8_VALIDATION_UNKNOWN", "NONE", "VERIFY"] + } + } + }, + "FeatureSetOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "enumType": { + "type": "string", + "enum": ["ENUM_TYPE_UNKNOWN", "OPEN", "CLOSED"] + }, + "fieldPresence": { + "type": "string", + "enum": [ + "FIELD_PRESENCE_UNKNOWN", + "EXPLICIT", + "IMPLICIT", + "LEGACY_REQUIRED" + ] + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "jsonFormat": { + "type": "string", + "enum": ["JSON_FORMAT_UNKNOWN", "ALLOW", "LEGACY_BEST_EFFORT"] + }, + "messageEncoding": { + "type": "string", + "enum": ["MESSAGE_ENCODING_UNKNOWN", "LENGTH_PREFIXED", "DELIMITED"] + }, + "repeatedFieldEncoding": { + "type": "string", + "enum": ["REPEATED_FIELD_ENCODING_UNKNOWN", "PACKED", "EXPANDED"] + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" }, + "utf8Validation": { + "type": "string", + "enum": ["UTF8_VALIDATION_UNKNOWN", "NONE", "VERIFY"] + } + } + }, + "FieldDescriptor": { + "type": "object", + "properties": { + "containingOneof": { "$ref": "#/components/schemas/OneofDescriptor" }, + "containingType": { "$ref": "#/components/schemas/Descriptor" }, + "defaultValue": { "type": "object" }, + "enumType": { "$ref": "#/components/schemas/EnumDescriptor" }, + "extension": { "type": "boolean" }, + "extensionScope": { "$ref": "#/components/schemas/Descriptor" }, + "file": { "$ref": "#/components/schemas/FileDescriptor" }, + "fullName": { "type": "string" }, + "index": { "type": "integer", "format": "int32" }, + "javaType": { + "type": "string", + "enum": [ + "INT", + "LONG", + "FLOAT", + "DOUBLE", + "BOOLEAN", + "STRING", + "BYTE_STRING", + "ENUM", + "MESSAGE" + ] + }, + "jsonName": { "type": "string" }, + "liteJavaType": { + "type": "string", + "enum": [ + "INT", + "LONG", + "FLOAT", + "DOUBLE", + "BOOLEAN", + "STRING", + "BYTE_STRING", + "ENUM", + "MESSAGE" + ] + }, + "liteType": { + "type": "string", + "enum": [ + "DOUBLE", + "FLOAT", + "INT64", + "UINT64", + "INT32", + "FIXED64", + "FIXED32", + "BOOL", + "STRING", + "GROUP", + "MESSAGE", + "BYTES", + "UINT32", + "ENUM", + "SFIXED32", + "SFIXED64", + "SINT32", + "SINT64" + ] + }, + "mapField": { "type": "boolean" }, + "messageType": { "$ref": "#/components/schemas/Descriptor" }, + "name": { "type": "string" }, + "number": { "type": "integer", "format": "int32" }, + "optional": { "type": "boolean" }, + "options": { "$ref": "#/components/schemas/FieldOptions" }, + "packable": { "type": "boolean" }, + "packed": { "type": "boolean" }, + "proto": { "$ref": "#/components/schemas/FieldDescriptorProto" }, + "realContainingOneof": { + "$ref": "#/components/schemas/OneofDescriptor" + }, + "repeated": { "type": "boolean" }, + "required": { "type": "boolean" }, + "type": { + "type": "string", + "enum": [ + "DOUBLE", + "FLOAT", + "INT64", + "UINT64", + "INT32", + "FIXED64", + "FIXED32", + "BOOL", + "STRING", + "GROUP", + "MESSAGE", + "BYTES", + "UINT32", + "ENUM", + "SFIXED32", + "SFIXED64", + "SINT32", + "SINT64" + ] + } + } + }, + "FieldDescriptorProto": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/FieldDescriptorProto" + }, + "defaultValue": { "type": "string" }, + "defaultValueBytes": { "$ref": "#/components/schemas/ByteString" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "extendee": { "type": "string" }, + "extendeeBytes": { "$ref": "#/components/schemas/ByteString" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "jsonName": { "type": "string" }, + "jsonNameBytes": { "$ref": "#/components/schemas/ByteString" }, + "label": { + "type": "string", + "enum": ["LABEL_OPTIONAL", "LABEL_REPEATED", "LABEL_REQUIRED"] + }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "name": { "type": "string" }, + "nameBytes": { "$ref": "#/components/schemas/ByteString" }, + "number": { "type": "integer", "format": "int32" }, + "oneofIndex": { "type": "integer", "format": "int32" }, + "options": { "$ref": "#/components/schemas/FieldOptions" }, + "optionsOrBuilder": { + "$ref": "#/components/schemas/FieldOptionsOrBuilder" + }, + "parserForType": { + "$ref": "#/components/schemas/ParserFieldDescriptorProto" + }, + "proto3Optional": { "type": "boolean" }, + "serializedSize": { "type": "integer", "format": "int32" }, + "type": { + "type": "string", + "enum": [ + "TYPE_DOUBLE", + "TYPE_FLOAT", + "TYPE_INT64", + "TYPE_UINT64", + "TYPE_INT32", + "TYPE_FIXED64", + "TYPE_FIXED32", + "TYPE_BOOL", + "TYPE_STRING", + "TYPE_GROUP", + "TYPE_MESSAGE", + "TYPE_BYTES", + "TYPE_UINT32", + "TYPE_ENUM", + "TYPE_SFIXED32", + "TYPE_SFIXED64", + "TYPE_SINT32", + "TYPE_SINT64" + ] + }, + "typeName": { "type": "string" }, + "typeNameBytes": { "$ref": "#/components/schemas/ByteString" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "FieldDescriptorProtoOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "defaultValue": { "type": "string" }, + "defaultValueBytes": { "$ref": "#/components/schemas/ByteString" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "extendee": { "type": "string" }, + "extendeeBytes": { "$ref": "#/components/schemas/ByteString" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "jsonName": { "type": "string" }, + "jsonNameBytes": { "$ref": "#/components/schemas/ByteString" }, + "label": { + "type": "string", + "enum": ["LABEL_OPTIONAL", "LABEL_REPEATED", "LABEL_REQUIRED"] + }, + "name": { "type": "string" }, + "nameBytes": { "$ref": "#/components/schemas/ByteString" }, + "number": { "type": "integer", "format": "int32" }, + "oneofIndex": { "type": "integer", "format": "int32" }, + "options": { "$ref": "#/components/schemas/FieldOptions" }, + "optionsOrBuilder": { + "$ref": "#/components/schemas/FieldOptionsOrBuilder" + }, + "proto3Optional": { "type": "boolean" }, + "type": { + "type": "string", + "enum": [ + "TYPE_DOUBLE", + "TYPE_FLOAT", + "TYPE_INT64", + "TYPE_UINT64", + "TYPE_INT32", + "TYPE_FIXED64", + "TYPE_FIXED32", + "TYPE_BOOL", + "TYPE_STRING", + "TYPE_GROUP", + "TYPE_MESSAGE", + "TYPE_BYTES", + "TYPE_UINT32", + "TYPE_ENUM", + "TYPE_SFIXED32", + "TYPE_SFIXED64", + "TYPE_SINT32", + "TYPE_SINT64" + ] + }, + "typeName": { "type": "string" }, + "typeNameBytes": { "$ref": "#/components/schemas/ByteString" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "FieldOptions": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "allFieldsRaw": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "ctype": { + "type": "string", + "enum": ["STRING", "CORD", "STRING_PIECE"] + }, + "debugRedact": { "type": "boolean" }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/FieldOptions" + }, + "deprecated": { "type": "boolean" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "editionDefaultsCount": { "type": "integer", "format": "int32" }, + "editionDefaultsList": { + "type": "array", + "items": { "$ref": "#/components/schemas/EditionDefault" } + }, + "editionDefaultsOrBuilderList": { + "type": "array", + "items": { "$ref": "#/components/schemas/EditionDefaultOrBuilder" } + }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "jstype": { + "type": "string", + "enum": ["JS_NORMAL", "JS_STRING", "JS_NUMBER"] + }, + "lazy": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "packed": { "type": "boolean" }, + "parserForType": { + "$ref": "#/components/schemas/ParserFieldOptions" + }, + "retention": { + "type": "string", + "enum": [ + "RETENTION_UNKNOWN", + "RETENTION_RUNTIME", + "RETENTION_SOURCE" + ] + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "targetsCount": { "type": "integer", "format": "int32" }, + "targetsList": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "TARGET_TYPE_UNKNOWN", + "TARGET_TYPE_FILE", + "TARGET_TYPE_EXTENSION_RANGE", + "TARGET_TYPE_MESSAGE", + "TARGET_TYPE_FIELD", + "TARGET_TYPE_ONEOF", + "TARGET_TYPE_ENUM", + "TARGET_TYPE_ENUM_ENTRY", + "TARGET_TYPE_SERVICE", + "TARGET_TYPE_METHOD" + ] + } + }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" }, + "unverifiedLazy": { "type": "boolean" }, + "weak": { "type": "boolean" } + } + }, + "FieldOptionsOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "ctype": { + "type": "string", + "enum": ["STRING", "CORD", "STRING_PIECE"] + }, + "debugRedact": { "type": "boolean" }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "deprecated": { "type": "boolean" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "editionDefaultsCount": { "type": "integer", "format": "int32" }, + "editionDefaultsList": { + "type": "array", + "items": { "$ref": "#/components/schemas/EditionDefault" } + }, + "editionDefaultsOrBuilderList": { + "type": "array", + "items": { "$ref": "#/components/schemas/EditionDefaultOrBuilder" } + }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "jstype": { + "type": "string", + "enum": ["JS_NORMAL", "JS_STRING", "JS_NUMBER"] + }, + "lazy": { "type": "boolean" }, + "packed": { "type": "boolean" }, + "retention": { + "type": "string", + "enum": [ + "RETENTION_UNKNOWN", + "RETENTION_RUNTIME", + "RETENTION_SOURCE" + ] + }, + "targetsCount": { "type": "integer", "format": "int32" }, + "targetsList": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "TARGET_TYPE_UNKNOWN", + "TARGET_TYPE_FILE", + "TARGET_TYPE_EXTENSION_RANGE", + "TARGET_TYPE_MESSAGE", + "TARGET_TYPE_FIELD", + "TARGET_TYPE_ONEOF", + "TARGET_TYPE_ENUM", + "TARGET_TYPE_ENUM_ENTRY", + "TARGET_TYPE_SERVICE", + "TARGET_TYPE_METHOD" + ] + } + }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" }, + "unverifiedLazy": { "type": "boolean" }, + "weak": { "type": "boolean" } + } + }, + "FileDescriptor": { + "type": "object", + "properties": { + "dependencies": { + "type": "array", + "items": { "$ref": "#/components/schemas/FileDescriptor" } + }, + "edition": { + "type": "string", + "enum": [ + "EDITION_UNKNOWN", + "EDITION_PROTO2", + "EDITION_PROTO3", + "EDITION_2023", + "EDITION_1_TEST_ONLY", + "EDITION_2_TEST_ONLY", + "EDITION_99997_TEST_ONLY", + "EDITION_99998_TEST_ONLY", + "EDITION_99999_TEST_ONLY" + ] + }, + "editionName": { "type": "string" }, + "enumTypes": { + "type": "array", + "items": { "$ref": "#/components/schemas/EnumDescriptor" } + }, + "extensions": { + "type": "array", + "items": { "$ref": "#/components/schemas/FieldDescriptor" } + }, + "file": { "$ref": "#/components/schemas/FileDescriptor" }, + "fullName": { "type": "string" }, + "messageTypes": { + "type": "array", + "items": { "$ref": "#/components/schemas/Descriptor" } + }, + "name": { "type": "string" }, + "options": { "$ref": "#/components/schemas/FileOptions" }, + "package": { "type": "string" }, + "proto": { "$ref": "#/components/schemas/FileDescriptorProto" }, + "publicDependencies": { + "type": "array", + "items": { "$ref": "#/components/schemas/FileDescriptor" } + }, + "services": { + "type": "array", + "items": { "$ref": "#/components/schemas/ServiceDescriptor" } + }, + "syntax": { + "type": "string", + "deprecated": true, + "enum": ["UNKNOWN", "PROTO2", "PROTO3", "EDITIONS"] + } + } + }, + "FileDescriptorProto": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/FileDescriptorProto" + }, + "dependencyCount": { "type": "integer", "format": "int32" }, + "dependencyList": { + "type": "array", + "properties": { "empty": { "type": "boolean" } }, + "items": { "type": "string" } + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "edition": { + "type": "string", + "enum": [ + "EDITION_UNKNOWN", + "EDITION_PROTO2", + "EDITION_PROTO3", + "EDITION_2023", + "EDITION_1_TEST_ONLY", + "EDITION_2_TEST_ONLY", + "EDITION_99997_TEST_ONLY", + "EDITION_99998_TEST_ONLY", + "EDITION_99999_TEST_ONLY" + ] + }, + "enumTypeCount": { "type": "integer", "format": "int32" }, + "enumTypeList": { + "type": "array", + "items": { "$ref": "#/components/schemas/EnumDescriptorProto" } + }, + "enumTypeOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/EnumDescriptorProtoOrBuilder" + } + }, + "extensionCount": { "type": "integer", "format": "int32" }, + "extensionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/FieldDescriptorProto" } + }, + "extensionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FieldDescriptorProtoOrBuilder" + } + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "messageTypeCount": { "type": "integer", "format": "int32" }, + "messageTypeList": { + "type": "array", + "items": { "$ref": "#/components/schemas/DescriptorProto" } + }, + "messageTypeOrBuilderList": { + "type": "array", + "items": { "$ref": "#/components/schemas/DescriptorProtoOrBuilder" } + }, + "name": { "type": "string" }, + "nameBytes": { "$ref": "#/components/schemas/ByteString" }, + "options": { "$ref": "#/components/schemas/FileOptions" }, + "optionsOrBuilder": { + "$ref": "#/components/schemas/FileOptionsOrBuilder" + }, + "package": { "type": "string" }, + "packageBytes": { "$ref": "#/components/schemas/ByteString" }, + "parserForType": { + "$ref": "#/components/schemas/ParserFileDescriptorProto" + }, + "publicDependencyCount": { "type": "integer", "format": "int32" }, + "publicDependencyList": { + "type": "array", + "items": { "type": "integer", "format": "int32" } + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "serviceCount": { "type": "integer", "format": "int32" }, + "serviceList": { + "type": "array", + "items": { "$ref": "#/components/schemas/ServiceDescriptorProto" } + }, + "serviceOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ServiceDescriptorProtoOrBuilder" + } + }, + "sourceCodeInfo": { "$ref": "#/components/schemas/SourceCodeInfo" }, + "sourceCodeInfoOrBuilder": { + "$ref": "#/components/schemas/SourceCodeInfoOrBuilder" + }, + "syntax": { "type": "string" }, + "syntaxBytes": { "$ref": "#/components/schemas/ByteString" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" }, + "weakDependencyCount": { "type": "integer", "format": "int32" }, + "weakDependencyList": { + "type": "array", + "items": { "type": "integer", "format": "int32" } + } + } + }, + "FileOptions": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "allFieldsRaw": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "ccEnableArenas": { "type": "boolean" }, + "ccGenericServices": { "type": "boolean" }, + "csharpNamespace": { "type": "string" }, + "csharpNamespaceBytes": { "$ref": "#/components/schemas/ByteString" }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/FileOptions" + }, + "deprecated": { "type": "boolean" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "goPackage": { "type": "string" }, + "goPackageBytes": { "$ref": "#/components/schemas/ByteString" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "javaGenerateEqualsAndHash": { + "type": "boolean", + "deprecated": true + }, + "javaGenericServices": { "type": "boolean" }, + "javaMultipleFiles": { "type": "boolean" }, + "javaOuterClassname": { "type": "string" }, + "javaOuterClassnameBytes": { + "$ref": "#/components/schemas/ByteString" + }, + "javaPackage": { "type": "string" }, + "javaPackageBytes": { "$ref": "#/components/schemas/ByteString" }, + "javaStringCheckUtf8": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "objcClassPrefix": { "type": "string" }, + "objcClassPrefixBytes": { "$ref": "#/components/schemas/ByteString" }, + "optimizeFor": { + "type": "string", + "enum": ["SPEED", "CODE_SIZE", "LITE_RUNTIME"] + }, + "parserForType": { "$ref": "#/components/schemas/ParserFileOptions" }, + "phpClassPrefix": { "type": "string" }, + "phpClassPrefixBytes": { "$ref": "#/components/schemas/ByteString" }, + "phpGenericServices": { "type": "boolean" }, + "phpMetadataNamespace": { "type": "string" }, + "phpMetadataNamespaceBytes": { + "$ref": "#/components/schemas/ByteString" + }, + "phpNamespace": { "type": "string" }, + "phpNamespaceBytes": { "$ref": "#/components/schemas/ByteString" }, + "pyGenericServices": { "type": "boolean" }, + "rubyPackage": { "type": "string" }, + "rubyPackageBytes": { "$ref": "#/components/schemas/ByteString" }, + "serializedSize": { "type": "integer", "format": "int32" }, + "swiftPrefix": { "type": "string" }, + "swiftPrefixBytes": { "$ref": "#/components/schemas/ByteString" }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "FileOptionsOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "ccEnableArenas": { "type": "boolean" }, + "ccGenericServices": { "type": "boolean" }, + "csharpNamespace": { "type": "string" }, + "csharpNamespaceBytes": { "$ref": "#/components/schemas/ByteString" }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "deprecated": { "type": "boolean" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "goPackage": { "type": "string" }, + "goPackageBytes": { "$ref": "#/components/schemas/ByteString" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "javaGenerateEqualsAndHash": { + "type": "boolean", + "deprecated": true + }, + "javaGenericServices": { "type": "boolean" }, + "javaMultipleFiles": { "type": "boolean" }, + "javaOuterClassname": { "type": "string" }, + "javaOuterClassnameBytes": { + "$ref": "#/components/schemas/ByteString" + }, + "javaPackage": { "type": "string" }, + "javaPackageBytes": { "$ref": "#/components/schemas/ByteString" }, + "javaStringCheckUtf8": { "type": "boolean" }, + "objcClassPrefix": { "type": "string" }, + "objcClassPrefixBytes": { "$ref": "#/components/schemas/ByteString" }, + "optimizeFor": { + "type": "string", + "enum": ["SPEED", "CODE_SIZE", "LITE_RUNTIME"] + }, + "phpClassPrefix": { "type": "string" }, + "phpClassPrefixBytes": { "$ref": "#/components/schemas/ByteString" }, + "phpGenericServices": { "type": "boolean" }, + "phpMetadataNamespace": { "type": "string" }, + "phpMetadataNamespaceBytes": { + "$ref": "#/components/schemas/ByteString" + }, + "phpNamespace": { "type": "string" }, + "phpNamespaceBytes": { "$ref": "#/components/schemas/ByteString" }, + "pyGenericServices": { "type": "boolean" }, + "rubyPackage": { "type": "string" }, + "rubyPackageBytes": { "$ref": "#/components/schemas/ByteString" }, + "swiftPrefix": { "type": "string" }, + "swiftPrefixBytes": { "$ref": "#/components/schemas/ByteString" }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "GenerateTokenRequest": { + "required": ["keyId", "keySecret"], + "type": "object", + "properties": { + "keyId": { "type": "string" }, + "keySecret": { "type": "string" } + } + }, + "GrantedAccess": { + "type": "object", + "properties": { + "access": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string", + "enum": ["CREATE", "READ", "EXECUTE", "UPDATE", "DELETE"] + } + }, + "tag": { "type": "string" }, + "target": { "$ref": "#/components/schemas/TargetRef" } + } + }, + "GrantedAccessResponse": { + "type": "object", + "properties": { + "grantedAccess": { + "type": "array", + "items": { "$ref": "#/components/schemas/GrantedAccess" } + } + } + }, + "Group": { + "type": "object", + "properties": { + "defaultAccess": { + "type": "object", + "additionalProperties": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string", + "enum": ["CREATE", "READ", "EXECUTE", "UPDATE", "DELETE"] + } + } + }, + "description": { "type": "string" }, + "id": { "type": "string" }, + "roles": { + "uniqueItems": true, + "type": "array", + "items": { "$ref": "#/components/schemas/Role" } + } + } + }, + "HandledEventResponse": { + "type": "object", + "properties": { + "active": { "type": "boolean" }, + "event": { "type": "string" }, + "name": { "type": "string" }, + "numberOfActions": { "type": "integer", "format": "int64" }, + "numberOfMessages": { "type": "integer", "format": "int64" } + } + }, + "Integration": { + "type": "object", + "properties": { + "apis": { + "type": "array", + "items": { "$ref": "#/components/schemas/IntegrationApi" } + }, + "category": { + "type": "string", + "enum": [ + "API", + "AI_MODEL", + "VECTOR_DB", + "RELATIONAL_DB", + "MESSAGE_BROKER" + ] + }, + "configuration": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "createTime": { "type": "integer", "format": "int64" }, + "createdBy": { "type": "string" }, + "description": { "type": "string" }, + "enabled": { "type": "boolean" }, + "modelsCount": { "type": "integer", "format": "int64" }, + "name": { "type": "string" }, + "ownerApp": { "type": "string" }, + "tags": { + "type": "array", + "items": { "$ref": "#/components/schemas/Tag" } + }, + "type": { "type": "string" }, + "updateTime": { "type": "integer", "format": "int64" }, + "updatedBy": { "type": "string" } + } + }, + "IntegrationApi": { + "type": "object", + "properties": { + "api": { "type": "string" }, + "configuration": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "createTime": { "type": "integer", "format": "int64" }, + "createdBy": { "type": "string" }, + "description": { "type": "string" }, + "enabled": { "type": "boolean" }, + "integrationName": { "type": "string" }, + "ownerApp": { "type": "string" }, + "tags": { + "type": "array", + "items": { "$ref": "#/components/schemas/Tag" } + }, + "updateTime": { "type": "integer", "format": "int64" }, + "updatedBy": { "type": "string" } + } + }, + "IntegrationApiUpdate": { + "type": "object", + "properties": { + "configuration": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "description": { "type": "string" }, + "enabled": { "type": "boolean" } + } + }, + "IntegrationDef": { + "type": "object", + "properties": { + "category": { + "type": "string", + "enum": [ + "API", + "AI_MODEL", + "VECTOR_DB", + "RELATIONAL_DB", + "MESSAGE_BROKER" + ] + }, + "categoryLabel": { "type": "string" }, + "configuration": { + "type": "array", + "items": { "$ref": "#/components/schemas/IntegrationDefFormField" } + }, + "description": { "type": "string" }, + "enabled": { "type": "boolean" }, + "iconName": { "type": "string" }, + "name": { "type": "string" }, + "tags": { + "uniqueItems": true, + "type": "array", + "items": { "type": "string" } + }, + "type": { "type": "string" } + } + }, + "IntegrationDefFormField": { + "type": "object", + "properties": { + "defaultValue": { "type": "string" }, + "description": { "type": "string" }, + "fieldName": { + "type": "string", + "enum": [ + "api_key", + "user", + "endpoint", + "authUrl", + "environment", + "projectName", + "indexName", + "publisher", + "password", + "namespace", + "batchSize", + "batchWaitTime", + "visibilityTimeout", + "connectionType", + "consumer", + "stream", + "batchPollConsumersCount", + "consumer_type", + "region", + "awsAccountId", + "externalId", + "roleArn", + "protocol", + "mechanism", + "port", + "schemaRegistryUrl", + "schemaRegistryApiKey", + "schemaRegistryApiSecret", + "authenticationType", + "truststoreAuthenticationType", + "tls", + "cipherSuite", + "pubSubMethod", + "keyStorePassword", + "keyStoreLocation", + "schemaRegistryAuthType", + "valueSubjectNameStrategy", + "datasourceURL", + "jdbcDriver", + "subscription", + "serviceAccountCredentials", + "file", + "tlsFile", + "queueManager", + "groupId", + "channel", + "dimensions", + "distance_metric", + "indexing_method", + "inverted_list_count" + ] + }, + "fieldType": { + "type": "string", + "enum": ["DROPDOWN", "TEXT", "PASSWORD", "FILE"] + }, + "label": { "type": "string" }, + "optional": { "type": "boolean" }, + "value": { "type": "string" }, + "valueOptions": { + "type": "array", + "items": { "$ref": "#/components/schemas/Option" } + } + } + }, + "IntegrationUpdate": { + "type": "object", + "properties": { + "category": { + "type": "string", + "enum": [ + "API", + "AI_MODEL", + "VECTOR_DB", + "RELATIONAL_DB", + "MESSAGE_BROKER" + ] + }, + "configuration": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "description": { "type": "string" }, + "enabled": { "type": "boolean" }, + "type": { "type": "string" } + } + }, + "JsonNode": { "type": "object" }, + "Location": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Location" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "leadingComments": { "type": "string" }, + "leadingCommentsBytes": { "$ref": "#/components/schemas/ByteString" }, + "leadingDetachedCommentsCount": { + "type": "integer", + "format": "int32" + }, + "leadingDetachedCommentsList": { + "type": "array", + "properties": { "empty": { "type": "boolean" } }, + "items": { "type": "string" } + }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "parserForType": { "$ref": "#/components/schemas/ParserLocation" }, + "pathCount": { "type": "integer", "format": "int32" }, + "pathList": { + "type": "array", + "items": { "type": "integer", "format": "int32" } + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "spanCount": { "type": "integer", "format": "int32" }, + "spanList": { + "type": "array", + "items": { "type": "integer", "format": "int32" } + }, + "trailingComments": { "type": "string" }, + "trailingCommentsBytes": { + "$ref": "#/components/schemas/ByteString" + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "LocationOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "leadingComments": { "type": "string" }, + "leadingCommentsBytes": { "$ref": "#/components/schemas/ByteString" }, + "leadingDetachedCommentsCount": { + "type": "integer", + "format": "int32" + }, + "leadingDetachedCommentsList": { + "type": "array", + "items": { "type": "string" } + }, + "pathCount": { "type": "integer", "format": "int32" }, + "pathList": { + "type": "array", + "items": { "type": "integer", "format": "int32" } + }, + "spanCount": { "type": "integer", "format": "int32" }, + "spanList": { + "type": "array", + "items": { "type": "integer", "format": "int32" } + }, + "trailingComments": { "type": "string" }, + "trailingCommentsBytes": { + "$ref": "#/components/schemas/ByteString" + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "Message": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/MessageLite" + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "parserForType": { "$ref": "#/components/schemas/ParserMessage" }, + "serializedSize": { "type": "integer", "format": "int32" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "MessageLite": { + "type": "object", + "properties": { + "defaultInstanceForType": { + "$ref": "#/components/schemas/MessageLite" + }, + "initialized": { "type": "boolean" }, + "parserForType": { "$ref": "#/components/schemas/ParserMessageLite" }, + "serializedSize": { "type": "integer", "format": "int32" } + } + }, + "MessageOptions": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "allFieldsRaw": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/MessageOptions" + }, + "deprecated": { "type": "boolean" }, + "deprecatedLegacyJsonFieldConflicts": { + "type": "boolean", + "deprecated": true + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "mapEntry": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "messageSetWireFormat": { "type": "boolean" }, + "noStandardDescriptorAccessor": { "type": "boolean" }, + "parserForType": { + "$ref": "#/components/schemas/ParserMessageOptions" + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "MessageOptionsOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "deprecated": { "type": "boolean" }, + "deprecatedLegacyJsonFieldConflicts": { + "type": "boolean", + "deprecated": true + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "mapEntry": { "type": "boolean" }, + "messageSetWireFormat": { "type": "boolean" }, + "noStandardDescriptorAccessor": { "type": "boolean" }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "MessageTemplate": { + "type": "object", + "properties": { + "createTime": { "type": "integer", "format": "int64" }, + "createdBy": { "type": "string" }, + "description": { "type": "string" }, + "integrations": { + "uniqueItems": true, + "type": "array", + "items": { "type": "string" } + }, + "name": { "type": "string" }, + "ownerApp": { "type": "string" }, + "tags": { + "type": "array", + "items": { "$ref": "#/components/schemas/Tag" } + }, + "template": { "type": "string" }, + "updateTime": { "type": "integer", "format": "int64" }, + "updatedBy": { "type": "string" }, + "variables": { + "uniqueItems": true, + "type": "array", + "items": { "type": "string" } + } + } + }, + "MethodDescriptor": { + "type": "object", + "properties": { + "clientStreaming": { "type": "boolean" }, + "file": { "$ref": "#/components/schemas/FileDescriptor" }, + "fullName": { "type": "string" }, + "index": { "type": "integer", "format": "int32" }, + "inputType": { "$ref": "#/components/schemas/Descriptor" }, + "name": { "type": "string" }, + "options": { "$ref": "#/components/schemas/MethodOptions" }, + "outputType": { "$ref": "#/components/schemas/Descriptor" }, + "proto": { "$ref": "#/components/schemas/MethodDescriptorProto" }, + "serverStreaming": { "type": "boolean" }, + "service": { "$ref": "#/components/schemas/ServiceDescriptor" } + } + }, + "MethodDescriptorProto": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "clientStreaming": { "type": "boolean" }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/MethodDescriptorProto" + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "inputType": { "type": "string" }, + "inputTypeBytes": { "$ref": "#/components/schemas/ByteString" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "name": { "type": "string" }, + "nameBytes": { "$ref": "#/components/schemas/ByteString" }, + "options": { "$ref": "#/components/schemas/MethodOptions" }, + "optionsOrBuilder": { + "$ref": "#/components/schemas/MethodOptionsOrBuilder" + }, + "outputType": { "type": "string" }, + "outputTypeBytes": { "$ref": "#/components/schemas/ByteString" }, + "parserForType": { + "$ref": "#/components/schemas/ParserMethodDescriptorProto" + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "serverStreaming": { "type": "boolean" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "MethodDescriptorProtoOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "clientStreaming": { "type": "boolean" }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "inputType": { "type": "string" }, + "inputTypeBytes": { "$ref": "#/components/schemas/ByteString" }, + "name": { "type": "string" }, + "nameBytes": { "$ref": "#/components/schemas/ByteString" }, + "options": { "$ref": "#/components/schemas/MethodOptions" }, + "optionsOrBuilder": { + "$ref": "#/components/schemas/MethodOptionsOrBuilder" + }, + "outputType": { "type": "string" }, + "outputTypeBytes": { "$ref": "#/components/schemas/ByteString" }, + "serverStreaming": { "type": "boolean" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "MethodOptions": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "allFieldsRaw": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/MethodOptions" + }, + "deprecated": { "type": "boolean" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "idempotencyLevel": { + "type": "string", + "enum": ["IDEMPOTENCY_UNKNOWN", "NO_SIDE_EFFECTS", "IDEMPOTENT"] + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "parserForType": { + "$ref": "#/components/schemas/ParserMethodOptions" + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "MethodOptionsOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "deprecated": { "type": "boolean" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "idempotencyLevel": { + "type": "string", + "enum": ["IDEMPOTENCY_UNKNOWN", "NO_SIDE_EFFECTS", "IDEMPOTENT"] + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "MetricsToken": { + "type": "object", + "properties": { "token": { "type": "string" } } + }, + "NamePart": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/NamePart" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "isExtension": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "namePart": { "type": "string" }, + "namePartBytes": { "$ref": "#/components/schemas/ByteString" }, + "parserForType": { "$ref": "#/components/schemas/ParserNamePart" }, + "serializedSize": { "type": "integer", "format": "int32" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "NamePartOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "isExtension": { "type": "boolean" }, + "namePart": { "type": "string" }, + "namePartBytes": { "$ref": "#/components/schemas/ByteString" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "OneofDescriptor": { + "type": "object", + "properties": { + "containingType": { "$ref": "#/components/schemas/Descriptor" }, + "fieldCount": { "type": "integer", "format": "int32" }, + "file": { "$ref": "#/components/schemas/FileDescriptor" }, + "fullName": { "type": "string" }, + "index": { "type": "integer", "format": "int32" }, + "name": { "type": "string" }, + "options": { "$ref": "#/components/schemas/OneofOptions" }, + "proto": { "$ref": "#/components/schemas/OneofDescriptorProto" }, + "synthetic": { "type": "boolean", "deprecated": true } + } + }, + "OneofDescriptorProto": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/OneofDescriptorProto" + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "name": { "type": "string" }, + "nameBytes": { "$ref": "#/components/schemas/ByteString" }, + "options": { "$ref": "#/components/schemas/OneofOptions" }, + "optionsOrBuilder": { + "$ref": "#/components/schemas/OneofOptionsOrBuilder" + }, + "parserForType": { + "$ref": "#/components/schemas/ParserOneofDescriptorProto" + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "OneofDescriptorProtoOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "name": { "type": "string" }, + "nameBytes": { "$ref": "#/components/schemas/ByteString" }, + "options": { "$ref": "#/components/schemas/OneofOptions" }, + "optionsOrBuilder": { + "$ref": "#/components/schemas/OneofOptionsOrBuilder" + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "OneofOptions": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "allFieldsRaw": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/OneofOptions" + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "parserForType": { + "$ref": "#/components/schemas/ParserOneofOptions" + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "OneofOptionsOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "Option": { + "type": "object", + "properties": { + "label": { "type": "string" }, + "value": { "type": "string" } + } + }, + "Parser": { "type": "object" }, + "ParserAny": { "type": "object" }, + "ParserDeclaration": { "type": "object" }, + "ParserDescriptorProto": { "type": "object" }, + "ParserEditionDefault": { "type": "object" }, + "ParserEnumDescriptorProto": { "type": "object" }, + "ParserEnumOptions": { "type": "object" }, + "ParserEnumReservedRange": { "type": "object" }, + "ParserEnumValueDescriptorProto": { "type": "object" }, + "ParserEnumValueOptions": { "type": "object" }, + "ParserExtensionRange": { "type": "object" }, + "ParserExtensionRangeOptions": { "type": "object" }, + "ParserFeatureSet": { "type": "object" }, + "ParserFieldDescriptorProto": { "type": "object" }, + "ParserFieldOptions": { "type": "object" }, + "ParserFileDescriptorProto": { "type": "object" }, + "ParserFileOptions": { "type": "object" }, + "ParserLocation": { "type": "object" }, + "ParserMessage": { "type": "object" }, + "ParserMessageLite": { "type": "object" }, + "ParserMessageOptions": { "type": "object" }, + "ParserMethodDescriptorProto": { "type": "object" }, + "ParserMethodOptions": { "type": "object" }, + "ParserNamePart": { "type": "object" }, + "ParserOneofDescriptorProto": { "type": "object" }, + "ParserOneofOptions": { "type": "object" }, + "ParserReservedRange": { "type": "object" }, + "ParserServiceDescriptorProto": { "type": "object" }, + "ParserServiceOptions": { "type": "object" }, + "ParserSourceCodeInfo": { "type": "object" }, + "ParserUninterpretedOption": { "type": "object" }, + "Permission": { + "type": "object", + "properties": { "name": { "type": "string" } } + }, + "PollData": { + "type": "object", + "properties": { + "domain": { "type": "string" }, + "lastPollTime": { "type": "integer", "format": "int64" }, + "queueName": { "type": "string" }, + "workerId": { "type": "string" } + } + }, + "PromptTemplateTestRequest": { + "type": "object", + "properties": { + "llmProvider": { "type": "string" }, + "model": { "type": "string" }, + "prompt": { "type": "string" }, + "promptVariables": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "stopWords": { "type": "array", "items": { "type": "string" } }, + "temperature": { "type": "number", "format": "double" }, + "topP": { "type": "number", "format": "double" } + } + }, + "RateLimitConfig": { + "type": "object", + "properties": { + "concurrentExecLimit": { "type": "integer", "format": "int32" }, + "rateLimitKey": { "type": "string" } + } + }, + "RerunWorkflowRequest": { + "type": "object", + "properties": { + "correlationId": { "type": "string" }, + "reRunFromTaskId": { "type": "string" }, + "reRunFromWorkflowId": { "type": "string" }, + "taskInput": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "workflowInput": { + "type": "object", + "additionalProperties": { "type": "object" } + } + } + }, + "ReservedRange": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/ReservedRange" + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "end": { "type": "integer", "format": "int32" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "parserForType": { + "$ref": "#/components/schemas/ParserReservedRange" + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "start": { "type": "integer", "format": "int32" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "ReservedRangeOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "end": { "type": "integer", "format": "int32" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "start": { "type": "integer", "format": "int32" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "Response": { "type": "object" }, + "Role": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "permissions": { + "uniqueItems": true, + "type": "array", + "items": { "$ref": "#/components/schemas/Permission" } + } + } + }, + "SaveScheduleRequest": { + "required": ["cronExpression", "name", "startWorkflowRequest"], + "type": "object", + "properties": { + "createdBy": { "type": "string" }, + "cronExpression": { "type": "string" }, + "description": { "type": "string" }, + "name": { "pattern": "^\\w*$", "type": "string" }, + "paused": { "type": "boolean" }, + "runCatchupScheduleInstances": { "type": "boolean" }, + "scheduleEndTime": { "type": "integer", "format": "int64" }, + "scheduleStartTime": { "type": "integer", "format": "int64" }, + "startWorkflowRequest": { + "$ref": "#/components/schemas/StartWorkflowRequest" + }, + "updatedBy": { "type": "string" }, + "zoneId": { "type": "string" } + } + }, + "SchemaDef": { + "required": ["name", "type", "version"], + "type": "object", + "properties": { + "createTime": { "type": "integer", "format": "int64" }, + "createdBy": { "type": "string" }, + "data": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "externalRef": { "type": "string" }, + "name": { "type": "string" }, + "ownerApp": { "type": "string" }, + "type": { "type": "string", "enum": ["JSON", "AVRO", "PROTOBUF"] }, + "updateTime": { "type": "integer", "format": "int64" }, + "updatedBy": { "type": "string" }, + "version": { "type": "integer", "format": "int32" } + } + }, + "ScrollableSearchResultWorkflowSummary": { + "type": "object", + "properties": { + "queryId": { "type": "string" }, + "results": { + "type": "array", + "items": { "$ref": "#/components/schemas/WorkflowSummary" } + }, + "totalHits": { "type": "integer", "format": "int64" } + } + }, + "SearchResultHandledEventResponse": { + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { "$ref": "#/components/schemas/HandledEventResponse" } + }, + "totalHits": { "type": "integer", "format": "int64" } + } + }, + "SearchResultTaskSummary": { + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { "$ref": "#/components/schemas/TaskSummary" } + }, + "totalHits": { "type": "integer", "format": "int64" } + } + }, + "SearchResultWorkflowScheduleExecutionModel": { + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WorkflowScheduleExecutionModel" + } + }, + "totalHits": { "type": "integer", "format": "int64" } + } + }, + "ServiceDescriptor": { + "type": "object", + "properties": { + "file": { "$ref": "#/components/schemas/FileDescriptor" }, + "fullName": { "type": "string" }, + "index": { "type": "integer", "format": "int32" }, + "methods": { + "type": "array", + "items": { "$ref": "#/components/schemas/MethodDescriptor" } + }, + "name": { "type": "string" }, + "options": { "$ref": "#/components/schemas/ServiceOptions" }, + "proto": { "$ref": "#/components/schemas/ServiceDescriptorProto" } + } + }, + "ServiceDescriptorProto": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/ServiceDescriptorProto" + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "methodCount": { "type": "integer", "format": "int32" }, + "methodList": { + "type": "array", + "items": { "$ref": "#/components/schemas/MethodDescriptorProto" } + }, + "methodOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MethodDescriptorProtoOrBuilder" + } + }, + "name": { "type": "string" }, + "nameBytes": { "$ref": "#/components/schemas/ByteString" }, + "options": { "$ref": "#/components/schemas/ServiceOptions" }, + "optionsOrBuilder": { + "$ref": "#/components/schemas/ServiceOptionsOrBuilder" + }, + "parserForType": { + "$ref": "#/components/schemas/ParserServiceDescriptorProto" + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "ServiceDescriptorProtoOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "methodCount": { "type": "integer", "format": "int32" }, + "methodList": { + "type": "array", + "items": { "$ref": "#/components/schemas/MethodDescriptorProto" } + }, + "methodOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MethodDescriptorProtoOrBuilder" + } + }, + "name": { "type": "string" }, + "nameBytes": { "$ref": "#/components/schemas/ByteString" }, + "options": { "$ref": "#/components/schemas/ServiceOptions" }, + "optionsOrBuilder": { + "$ref": "#/components/schemas/ServiceOptionsOrBuilder" + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "ServiceOptions": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "allFieldsRaw": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/ServiceOptions" + }, + "deprecated": { "type": "boolean" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "parserForType": { + "$ref": "#/components/schemas/ParserServiceOptions" + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "ServiceOptionsOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "deprecated": { "type": "boolean" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "features": { "$ref": "#/components/schemas/FeatureSet" }, + "featuresOrBuilder": { + "$ref": "#/components/schemas/FeatureSetOrBuilder" + }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "uninterpretedOptionCount": { "type": "integer", "format": "int32" }, + "uninterpretedOptionList": { + "type": "array", + "items": { "$ref": "#/components/schemas/UninterpretedOption" } + }, + "uninterpretedOptionOrBuilderList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UninterpretedOptionOrBuilder" + } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "SkipTaskRequest": { + "type": "object", + "properties": { + "taskInput": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "taskOutput": { + "type": "object", + "additionalProperties": { "type": "object" } + } + } + }, + "SourceCodeInfo": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/SourceCodeInfo" + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "locationCount": { "type": "integer", "format": "int32" }, + "locationList": { + "type": "array", + "items": { "$ref": "#/components/schemas/Location" } + }, + "locationOrBuilderList": { + "type": "array", + "items": { "$ref": "#/components/schemas/LocationOrBuilder" } + }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "parserForType": { + "$ref": "#/components/schemas/ParserSourceCodeInfo" + }, + "serializedSize": { "type": "integer", "format": "int32" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "SourceCodeInfoOrBuilder": { + "type": "object", + "properties": { + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "locationCount": { "type": "integer", "format": "int32" }, + "locationList": { + "type": "array", + "items": { "$ref": "#/components/schemas/Location" } + }, + "locationOrBuilderList": { + "type": "array", + "items": { "$ref": "#/components/schemas/LocationOrBuilder" } + }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "StartWorkflowRequest": { + "required": ["name"], + "type": "object", + "properties": { + "correlationId": { "type": "string" }, + "createdBy": { "type": "string" }, + "externalInputPayloadStoragePath": { "type": "string" }, + "idempotencyKey": { "type": "string" }, + "idempotencyStrategy": { + "type": "string", + "enum": ["FAIL", "RETURN_EXISTING", "FAIL_ON_RUNNING"] + }, + "input": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "name": { "type": "string" }, + "priority": { + "maximum": 99, + "minimum": 0, + "type": "integer", + "format": "int32" + }, + "taskToDomain": { + "type": "object", + "additionalProperties": { "type": "string" } + }, + "version": { "type": "integer", "format": "int32" }, + "workflowDef": { "$ref": "#/components/schemas/WorkflowDef" } + } + }, + "StateChangeEvent": { + "required": ["type"], + "type": "object", + "properties": { + "payload": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "type": { "type": "string" } + } + }, + "SubWorkflowParams": { + "type": "object", + "properties": { + "idempotencyKey": { "type": "string" }, + "idempotencyStrategy": { + "type": "string", + "enum": ["FAIL", "RETURN_EXISTING", "FAIL_ON_RUNNING"] + }, + "name": { "type": "string" }, + "priority": { "type": "object" }, + "taskToDomain": { + "type": "object", + "additionalProperties": { "type": "string" } + }, + "version": { "type": "integer", "format": "int32" }, + "workflowDefinition": { "type": "object" } + } + }, + "SubjectRef": { + "required": ["id"], + "type": "object", + "properties": { + "id": { "type": "string" }, + "type": { + "pattern": "user|role|group", + "type": "string", + "description": "User, role or group", + "enum": ["USER", "ROLE", "GROUP"] + } + }, + "description": "User, group or role which is granted/removed access" + }, + "Tag": { + "type": "object", + "properties": { + "key": { "type": "string" }, + "type": { "type": "string", "deprecated": true }, + "value": { "type": "string" } + } + }, + "TargetRef": { + "required": ["id", "type"], + "type": "object", + "properties": { + "id": { + "type": "string", + "enum": [ + "Identifier of the target e.g. `name` in case it's a WORKFLOW_DEF" + ] + }, + "type": { + "type": "string", + "enum": [ + "WORKFLOW", + "WORKFLOW_DEF", + "WORKFLOW_SCHEDULE", + "EVENT_HANDLER", + "TASK_DEF", + "TASK_REF_NAME", + "TASK_ID", + "APPLICATION", + "USER", + "SECRET_NAME", + "ENV_VARIABLE", + "TAG", + "DOMAIN", + "INTEGRATION_PROVIDER", + "INTEGRATION", + "PROMPT", + "USER_FORM_TEMPLATE", + "SCHEMA", + "CLUSTER_CONFIG", + "WEBHOOK" + ] + } + }, + "description": "The object over which access is being granted or removed" + }, + "Task": { + "type": "object", + "properties": { + "callbackAfterSeconds": { "type": "integer", "format": "int64" }, + "callbackFromWorker": { "type": "boolean" }, + "correlationId": { "type": "string" }, + "domain": { "type": "string" }, + "endTime": { "type": "integer", "format": "int64" }, + "executed": { "type": "boolean" }, + "executionNameSpace": { "type": "string" }, + "externalInputPayloadStoragePath": { "type": "string" }, + "externalOutputPayloadStoragePath": { "type": "string" }, + "firstStartTime": { "type": "integer", "format": "int64" }, + "inputData": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "isolationGroupId": { "type": "string" }, + "iteration": { "type": "integer", "format": "int32" }, + "loopOverTask": { "type": "boolean" }, + "outputData": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "parentTaskId": { "type": "string" }, + "pollCount": { "type": "integer", "format": "int32" }, + "queueWaitTime": { "type": "integer", "format": "int64" }, + "rateLimitFrequencyInSeconds": { + "type": "integer", + "format": "int32" + }, + "rateLimitPerFrequency": { "type": "integer", "format": "int32" }, + "reasonForIncompletion": { "type": "string" }, + "referenceTaskName": { "type": "string" }, + "responseTimeoutSeconds": { "type": "integer", "format": "int64" }, + "retried": { "type": "boolean" }, + "retriedTaskId": { "type": "string" }, + "retryCount": { "type": "integer", "format": "int32" }, + "scheduledTime": { "type": "integer", "format": "int64" }, + "seq": { "type": "integer", "format": "int32" }, + "startDelayInSeconds": { "type": "integer", "format": "int32" }, + "startTime": { "type": "integer", "format": "int64" }, + "status": { + "type": "string", + "enum": [ + "IN_PROGRESS", + "CANCELED", + "FAILED", + "FAILED_WITH_TERMINAL_ERROR", + "COMPLETED", + "COMPLETED_WITH_ERRORS", + "SCHEDULED", + "TIMED_OUT", + "SKIPPED" + ] + }, + "subWorkflowId": { "type": "string" }, + "subworkflowChanged": { "type": "boolean" }, + "taskDefName": { "type": "string" }, + "taskDefinition": { "$ref": "#/components/schemas/TaskDef" }, + "taskId": { "type": "string" }, + "taskType": { "type": "string" }, + "updateTime": { "type": "integer", "format": "int64" }, + "workerId": { "type": "string" }, + "workflowInstanceId": { "type": "string" }, + "workflowPriority": { "type": "integer", "format": "int32" }, + "workflowTask": { "$ref": "#/components/schemas/WorkflowTask" }, + "workflowType": { "type": "string" } + } + }, + "TaskDef": { + "required": ["name", "timeoutSeconds", "totalTimeoutSeconds"], + "type": "object", + "properties": { + "backoffScaleFactor": { + "minimum": 1, + "type": "integer", + "format": "int32" + }, + "baseType": { "type": "string" }, + "concurrentExecLimit": { "type": "integer", "format": "int32" }, + "createTime": { "type": "integer", "format": "int64" }, + "createdBy": { "type": "string" }, + "description": { "type": "string" }, + "enforceSchema": { "type": "boolean" }, + "executionNameSpace": { "type": "string" }, + "inputKeys": { "type": "array", "items": { "type": "string" } }, + "inputSchema": { "$ref": "#/components/schemas/SchemaDef" }, + "inputTemplate": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "isolationGroupId": { "type": "string" }, + "name": { "type": "string" }, + "outputKeys": { "type": "array", "items": { "type": "string" } }, + "outputSchema": { "$ref": "#/components/schemas/SchemaDef" }, + "ownerApp": { "type": "string" }, + "ownerEmail": { "type": "string" }, + "pollTimeoutSeconds": { + "minimum": 0, + "type": "integer", + "format": "int32" + }, + "rateLimitFrequencyInSeconds": { + "type": "integer", + "format": "int32" + }, + "rateLimitPerFrequency": { "type": "integer", "format": "int32" }, + "responseTimeoutSeconds": { + "minimum": 1, + "type": "integer", + "format": "int64" + }, + "retryCount": { "minimum": 0, "type": "integer", "format": "int32" }, + "retryDelaySeconds": { "type": "integer", "format": "int32" }, + "retryLogic": { + "type": "string", + "enum": ["FIXED", "EXPONENTIAL_BACKOFF", "LINEAR_BACKOFF"] + }, + "timeoutPolicy": { + "type": "string", + "enum": ["RETRY", "TIME_OUT_WF", "ALERT_ONLY"] + }, + "timeoutSeconds": { "type": "integer", "format": "int64" }, + "totalTimeoutSeconds": { "type": "integer", "format": "int64" }, + "updateTime": { "type": "integer", "format": "int64" }, + "updatedBy": { "type": "string" } + } + }, + "TaskDetails": { + "type": "object", + "properties": { + "output": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "outputMessage": { "$ref": "#/components/schemas/Any" }, + "taskId": { "type": "string" }, + "taskRefName": { "type": "string" }, + "workflowId": { "type": "string" } + } + }, + "TaskExecLog": { + "type": "object", + "properties": { + "createdTime": { "type": "integer", "format": "int64" }, + "log": { "type": "string" }, + "taskId": { "type": "string" } + } + }, + "TaskListSearchResultSummary": { + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { "$ref": "#/components/schemas/Task" } + }, + "summary": { + "type": "object", + "additionalProperties": { "type": "integer", "format": "int64" } + }, + "totalHits": { "type": "integer", "format": "int64" } + } + }, + "TaskMock": { + "type": "object", + "properties": { + "executionTime": { "type": "integer", "format": "int64" }, + "output": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "queueWaitTime": { "type": "integer", "format": "int64" }, + "status": { + "type": "string", + "enum": [ + "IN_PROGRESS", + "FAILED", + "FAILED_WITH_TERMINAL_ERROR", + "COMPLETED" + ] + } + } + }, + "TaskResult": { + "required": ["taskId", "workflowInstanceId"], + "type": "object", + "properties": { + "callbackAfterSeconds": { "type": "integer", "format": "int64" }, + "extendLease": { "type": "boolean" }, + "externalOutputPayloadStoragePath": { "type": "string" }, + "logs": { + "type": "array", + "items": { "$ref": "#/components/schemas/TaskExecLog" } + }, + "outputData": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "reasonForIncompletion": { "type": "string" }, + "status": { + "type": "string", + "enum": [ + "IN_PROGRESS", + "FAILED", + "FAILED_WITH_TERMINAL_ERROR", + "COMPLETED" + ] + }, + "subWorkflowId": { "type": "string" }, + "taskId": { "type": "string" }, + "workerId": { "type": "string" }, + "workflowInstanceId": { "type": "string" } + } + }, + "TaskSummary": { + "type": "object", + "properties": { + "correlationId": { "type": "string" }, + "endTime": { "type": "string" }, + "executionTime": { "type": "integer", "format": "int64" }, + "externalInputPayloadStoragePath": { "type": "string" }, + "externalOutputPayloadStoragePath": { "type": "string" }, + "input": { "type": "string" }, + "output": { "type": "string" }, + "queueWaitTime": { "type": "integer", "format": "int64" }, + "reasonForIncompletion": { "type": "string" }, + "scheduledTime": { "type": "string" }, + "startTime": { "type": "string" }, + "status": { + "type": "string", + "enum": [ + "IN_PROGRESS", + "CANCELED", + "FAILED", + "FAILED_WITH_TERMINAL_ERROR", + "COMPLETED", + "COMPLETED_WITH_ERRORS", + "SCHEDULED", + "TIMED_OUT", + "SKIPPED" + ] + }, + "taskDefName": { "type": "string" }, + "taskId": { "type": "string" }, + "taskReferenceName": { "type": "string" }, + "taskType": { "type": "string" }, + "updateTime": { "type": "string" }, + "workflowId": { "type": "string" }, + "workflowPriority": { "type": "integer", "format": "int32" }, + "workflowType": { "type": "string" } + } + }, + "TerminateWorkflow": { + "type": "object", + "properties": { + "terminationReason": { "type": "string" }, + "workflowId": { "type": "string" } + } + }, + "UninterpretedOption": { + "type": "object", + "properties": { + "aggregateValue": { "type": "string" }, + "aggregateValueBytes": { "$ref": "#/components/schemas/ByteString" }, + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { + "$ref": "#/components/schemas/UninterpretedOption" + }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "doubleValue": { "type": "number", "format": "double" }, + "identifierValue": { "type": "string" }, + "identifierValueBytes": { "$ref": "#/components/schemas/ByteString" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "memoizedSerializedSize": { + "type": "integer", + "format": "int32", + "writeOnly": true + }, + "nameCount": { "type": "integer", "format": "int32" }, + "nameList": { + "type": "array", + "items": { "$ref": "#/components/schemas/NamePart" } + }, + "nameOrBuilderList": { + "type": "array", + "items": { "$ref": "#/components/schemas/NamePartOrBuilder" } + }, + "negativeIntValue": { "type": "integer", "format": "int64" }, + "parserForType": { + "$ref": "#/components/schemas/ParserUninterpretedOption" + }, + "positiveIntValue": { "type": "integer", "format": "int64" }, + "serializedSize": { "type": "integer", "format": "int32" }, + "stringValue": { "$ref": "#/components/schemas/ByteString" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "UninterpretedOptionOrBuilder": { + "type": "object", + "properties": { + "aggregateValue": { "type": "string" }, + "aggregateValueBytes": { "$ref": "#/components/schemas/ByteString" }, + "allFields": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "defaultInstanceForType": { "$ref": "#/components/schemas/Message" }, + "descriptorForType": { "$ref": "#/components/schemas/Descriptor" }, + "doubleValue": { "type": "number", "format": "double" }, + "identifierValue": { "type": "string" }, + "identifierValueBytes": { "$ref": "#/components/schemas/ByteString" }, + "initializationErrorString": { "type": "string" }, + "initialized": { "type": "boolean" }, + "nameCount": { "type": "integer", "format": "int32" }, + "nameList": { + "type": "array", + "items": { "$ref": "#/components/schemas/NamePart" } + }, + "nameOrBuilderList": { + "type": "array", + "items": { "$ref": "#/components/schemas/NamePartOrBuilder" } + }, + "negativeIntValue": { "type": "integer", "format": "int64" }, + "positiveIntValue": { "type": "integer", "format": "int64" }, + "stringValue": { "$ref": "#/components/schemas/ByteString" }, + "unknownFields": { "$ref": "#/components/schemas/UnknownFieldSet" } + } + }, + "UnknownFieldSet": { + "type": "object", + "properties": { + "defaultInstanceForType": { + "$ref": "#/components/schemas/UnknownFieldSet" + }, + "initialized": { "type": "boolean" }, + "parserForType": { "$ref": "#/components/schemas/Parser" }, + "serializedSize": { "type": "integer", "format": "int32" }, + "serializedSizeAsMessageSet": { "type": "integer", "format": "int32" } + } + }, + "UpdateWorkflowVariables": { + "type": "object", + "properties": { + "appendArray": { "type": "boolean" }, + "variables": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "workflowId": { "type": "string" } + } + }, + "UpgradeWorkflowRequest": { + "required": ["name"], + "type": "object", + "properties": { + "name": { "type": "string" }, + "taskOutput": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "version": { "type": "integer", "format": "int32" }, + "workflowInput": { + "type": "object", + "additionalProperties": { "type": "object" } + } + } + }, + "UpsertGroupRequest": { + "required": ["description"], + "type": "object", + "properties": { + "defaultAccess": { + "type": "object", + "additionalProperties": { + "uniqueItems": true, + "type": "array", + "description": "a default Map to share permissions, allowed target types: WORKFLOW_DEF, TASK_DEF, WORKFLOW_SCHEDULE", + "items": { + "type": "string", + "description": "a default Map to share permissions, allowed target types: WORKFLOW_DEF, TASK_DEF, WORKFLOW_SCHEDULE", + "enum": ["CREATE", "READ", "EXECUTE", "UPDATE", "DELETE"] + } + }, + "description": "a default Map to share permissions, allowed target types: WORKFLOW_DEF, TASK_DEF, WORKFLOW_SCHEDULE" + }, + "description": { + "type": "string", + "description": "A general description of the group" + }, + "roles": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "ADMIN", + "USER", + "WORKER", + "METADATA_MANAGER", + "WORKFLOW_MANAGER" + ] + }, + "enum": [ + "ADMIN", + "USER", + "WORKER", + "METADATA_MANAGER", + "WORKFLOW_MANAGER" + ] + } + } + }, + "UpsertUserRequest": { + "required": ["name"], + "type": "object", + "properties": { + "groups": { + "uniqueItems": true, + "type": "array", + "description": "Ids of the groups this user belongs to", + "items": { + "type": "string", + "description": "Ids of the groups this user belongs to" + } + }, + "name": { "type": "string", "description": "User's full name" }, + "roles": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "ADMIN", + "USER", + "WORKER", + "METADATA_MANAGER", + "WORKFLOW_MANAGER" + ] + }, + "enum": [ + "ADMIN", + "USER", + "WORKER", + "METADATA_MANAGER", + "WORKFLOW_MANAGER" + ] + } + } + }, + "WebhookConfig": { + "type": "object", + "properties": { + "createdBy": { "type": "string" }, + "headerKey": { "type": "string" }, + "headers": { + "type": "object", + "additionalProperties": { "type": "string" } + }, + "id": { "type": "string" }, + "name": { "type": "string" }, + "receiverWorkflowNamesToVersions": { + "type": "object", + "additionalProperties": { "type": "integer", "format": "int32" } + }, + "secretKey": { "type": "string" }, + "secretValue": { "type": "string" }, + "sourcePlatform": { "type": "string" }, + "tags": { + "type": "array", + "items": { "$ref": "#/components/schemas/Tag" } + }, + "urlVerified": { "type": "boolean" }, + "verifier": { + "type": "string", + "enum": [ + "SLACK_BASED", + "SIGNATURE_BASED", + "HEADER_BASED", + "STRIPE", + "TWITTER", + "HMAC_BASED", + "SENDGRID" + ] + }, + "webhookExecutionHistory": { + "type": "array", + "items": { "$ref": "#/components/schemas/WebhookExecutionHistory" } + }, + "workflowsToStart": { + "type": "object", + "additionalProperties": { "type": "object" } + } + } + }, + "WebhookExecutionHistory": { + "type": "object", + "properties": { + "eventId": { "type": "string" }, + "matched": { "type": "boolean" }, + "payload": { "type": "string" }, + "timeStamp": { "type": "integer", "format": "int64" }, + "workflowIds": { + "uniqueItems": true, + "type": "array", + "items": { "type": "string" } + } + } + }, + "Workflow": { + "type": "object", + "properties": { + "correlationId": { "type": "string" }, + "createTime": { "type": "integer", "format": "int64" }, + "createdBy": { "type": "string" }, + "endTime": { "type": "integer", "format": "int64" }, + "event": { "type": "string" }, + "externalInputPayloadStoragePath": { "type": "string" }, + "externalOutputPayloadStoragePath": { "type": "string" }, + "failedReferenceTaskNames": { + "uniqueItems": true, + "type": "array", + "items": { "type": "string" } + }, + "failedTaskNames": { + "uniqueItems": true, + "type": "array", + "items": { "type": "string" } + }, + "history": { + "type": "array", + "items": { "$ref": "#/components/schemas/Workflow" } + }, + "idempotencyKey": { "type": "string" }, + "input": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "lastRetriedTime": { "type": "integer", "format": "int64" }, + "output": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "ownerApp": { "type": "string" }, + "parentWorkflowId": { "type": "string" }, + "parentWorkflowTaskId": { "type": "string" }, + "priority": { + "maximum": 99, + "minimum": 0, + "type": "integer", + "format": "int32" + }, + "rateLimitKey": { "type": "string" }, + "rateLimited": { "type": "boolean" }, + "reRunFromWorkflowId": { "type": "string" }, + "reasonForIncompletion": { "type": "string" }, + "startTime": { "type": "integer", "format": "int64" }, + "status": { + "type": "string", + "enum": [ + "RUNNING", + "COMPLETED", + "FAILED", + "TIMED_OUT", + "TERMINATED", + "PAUSED" + ] + }, + "taskToDomain": { + "type": "object", + "additionalProperties": { "type": "string" } + }, + "tasks": { + "type": "array", + "items": { "$ref": "#/components/schemas/Task" } + }, + "updateTime": { "type": "integer", "format": "int64" }, + "updatedBy": { "type": "string" }, + "variables": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "workflowDefinition": { "$ref": "#/components/schemas/WorkflowDef" }, + "workflowId": { "type": "string" }, + "workflowName": { "type": "string" }, + "workflowVersion": { "type": "integer", "format": "int32" } + } + }, + "WorkflowDef": { + "required": ["name", "tasks", "timeoutSeconds"], + "type": "object", + "properties": { + "createTime": { "type": "integer", "format": "int64" }, + "createdBy": { "type": "string" }, + "description": { "type": "string" }, + "enforceSchema": { "type": "boolean" }, + "failureWorkflow": { "type": "string" }, + "inputParameters": { "type": "array", "items": { "type": "string" } }, + "inputSchema": { "$ref": "#/components/schemas/SchemaDef" }, + "inputTemplate": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "name": { "type": "string" }, + "outputParameters": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "outputSchema": { "$ref": "#/components/schemas/SchemaDef" }, + "ownerApp": { "type": "string" }, + "ownerEmail": { "type": "string" }, + "rateLimitConfig": { "$ref": "#/components/schemas/RateLimitConfig" }, + "restartable": { "type": "boolean" }, + "schemaVersion": { + "maximum": 2, + "minimum": 2, + "type": "integer", + "format": "int32" + }, + "tasks": { + "type": "array", + "items": { "$ref": "#/components/schemas/WorkflowTask" } + }, + "timeoutPolicy": { + "type": "string", + "enum": ["TIME_OUT_WF", "ALERT_ONLY"] + }, + "timeoutSeconds": { "type": "integer", "format": "int64" }, + "updateTime": { "type": "integer", "format": "int64" }, + "updatedBy": { "type": "string" }, + "variables": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "version": { "type": "integer", "format": "int32" }, + "workflowStatusListenerEnabled": { "type": "boolean" }, + "workflowStatusListenerSink": { "type": "string" } + } + }, + "WorkflowRun": { + "type": "object", + "properties": { + "correlationId": { "type": "string" }, + "createTime": { "type": "integer", "format": "int64" }, + "createdBy": { "type": "string" }, + "input": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "output": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "priority": { "type": "integer", "format": "int32" }, + "requestId": { "type": "string" }, + "status": { + "type": "string", + "enum": [ + "RUNNING", + "COMPLETED", + "FAILED", + "TIMED_OUT", + "TERMINATED", + "PAUSED" + ] + }, + "tasks": { + "type": "array", + "items": { "$ref": "#/components/schemas/Task" } + }, + "updateTime": { "type": "integer", "format": "int64" }, + "variables": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "workflowId": { "type": "string" } + } + }, + "WorkflowSchedule": { + "type": "object", + "properties": { + "createTime": { "type": "integer", "format": "int64" }, + "createdBy": { "type": "string" }, + "cronExpression": { "type": "string" }, + "description": { "type": "string" }, + "name": { "type": "string" }, + "paused": { "type": "boolean" }, + "pausedReason": { "type": "string" }, + "runCatchupScheduleInstances": { "type": "boolean" }, + "scheduleEndTime": { "type": "integer", "format": "int64" }, + "scheduleStartTime": { "type": "integer", "format": "int64" }, + "startWorkflowRequest": { + "$ref": "#/components/schemas/StartWorkflowRequest" + }, + "tags": { + "type": "array", + "items": { "$ref": "#/components/schemas/Tag" } + }, + "updatedBy": { "type": "string" }, + "updatedTime": { "type": "integer", "format": "int64" }, + "zoneId": { "type": "string" } + } + }, + "WorkflowScheduleExecutionModel": { + "type": "object", + "properties": { + "executionId": { "type": "string" }, + "executionTime": { "type": "integer", "format": "int64" }, + "orgId": { "type": "string" }, + "queueMsgId": { "type": "string" }, + "reason": { "type": "string" }, + "scheduleName": { "type": "string" }, + "scheduledTime": { "type": "integer", "format": "int64" }, + "stackTrace": { "type": "string" }, + "startWorkflowRequest": { + "$ref": "#/components/schemas/StartWorkflowRequest" + }, + "state": { + "type": "string", + "enum": ["POLLED", "FAILED", "EXECUTED"] + }, + "workflowId": { "type": "string" }, + "workflowName": { "type": "string" }, + "zoneId": { "type": "string" } + } + }, + "WorkflowScheduleModel": { + "type": "object", + "properties": { + "createTime": { "type": "integer", "format": "int64" }, + "createdBy": { "type": "string" }, + "cronExpression": { "type": "string" }, + "description": { "type": "string" }, + "name": { "type": "string" }, + "orgId": { "type": "string" }, + "paused": { "type": "boolean" }, + "pausedReason": { "type": "string" }, + "queueMsgId": { "type": "string" }, + "runCatchupScheduleInstances": { "type": "boolean" }, + "scheduleEndTime": { "type": "integer", "format": "int64" }, + "scheduleStartTime": { "type": "integer", "format": "int64" }, + "startWorkflowRequest": { + "$ref": "#/components/schemas/StartWorkflowRequest" + }, + "tags": { + "type": "array", + "items": { "$ref": "#/components/schemas/Tag" } + }, + "updatedBy": { "type": "string" }, + "updatedTime": { "type": "integer", "format": "int64" }, + "zoneId": { "type": "string" } + } + }, + "WorkflowStateUpdate": { + "type": "object", + "properties": { + "taskReferenceName": { "type": "string" }, + "taskResult": { "$ref": "#/components/schemas/TaskResult" }, + "variables": { + "type": "object", + "additionalProperties": { "type": "object" } + } + } + }, + "WorkflowStatus": { + "type": "object", + "properties": { + "correlationId": { "type": "string" }, + "output": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "status": { + "type": "string", + "enum": [ + "RUNNING", + "COMPLETED", + "FAILED", + "TIMED_OUT", + "TERMINATED", + "PAUSED" + ] + }, + "variables": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "workflowId": { "type": "string" } + } + }, + "WorkflowSummary": { + "type": "object", + "properties": { + "correlationId": { "type": "string" }, + "createdBy": { "type": "string" }, + "endTime": { "type": "string" }, + "event": { "type": "string" }, + "executionTime": { "type": "integer", "format": "int64" }, + "externalInputPayloadStoragePath": { "type": "string" }, + "externalOutputPayloadStoragePath": { "type": "string" }, + "failedReferenceTaskNames": { "type": "string" }, + "failedTaskNames": { + "uniqueItems": true, + "type": "array", + "items": { "type": "string" } + }, + "input": { "type": "string" }, + "inputSize": { "type": "integer", "format": "int64" }, + "output": { "type": "string" }, + "outputSize": { "type": "integer", "format": "int64" }, + "priority": { "type": "integer", "format": "int32" }, + "reasonForIncompletion": { "type": "string" }, + "startTime": { "type": "string" }, + "status": { + "type": "string", + "enum": [ + "RUNNING", + "COMPLETED", + "FAILED", + "TIMED_OUT", + "TERMINATED", + "PAUSED" + ] + }, + "updateTime": { "type": "string" }, + "version": { "type": "integer", "format": "int32" }, + "workflowId": { "type": "string" }, + "workflowType": { "type": "string" } + } + }, + "WorkflowTask": { + "required": ["name", "taskReferenceName"], + "type": "object", + "properties": { + "asyncComplete": { "type": "boolean" }, + "cacheConfig": { "$ref": "#/components/schemas/CacheConfig" }, + "caseExpression": { "type": "string", "deprecated": true }, + "caseValueParam": { "type": "string", "deprecated": true }, + "decisionCases": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { "$ref": "#/components/schemas/WorkflowTask" } + } + }, + "defaultCase": { + "type": "array", + "items": { "$ref": "#/components/schemas/WorkflowTask" } + }, + "defaultExclusiveJoinTask": { + "type": "array", + "items": { "type": "string" } + }, + "description": { "type": "string" }, + "dynamicForkJoinTasksParam": { "type": "string", "deprecated": true }, + "dynamicForkTasksInputParamName": { "type": "string" }, + "dynamicForkTasksParam": { "type": "string" }, + "dynamicTaskNameParam": { "type": "string" }, + "evaluatorType": { "type": "string" }, + "expression": { "type": "string" }, + "forkTasks": { + "type": "array", + "items": { + "type": "array", + "items": { "$ref": "#/components/schemas/WorkflowTask" } + } + }, + "inputParameters": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "joinOn": { "type": "array", "items": { "type": "string" } }, + "joinStatus": { "type": "string" }, + "loopCondition": { "type": "string" }, + "loopOver": { + "type": "array", + "items": { "$ref": "#/components/schemas/WorkflowTask" } + }, + "name": { "type": "string" }, + "onStateChange": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { "$ref": "#/components/schemas/StateChangeEvent" } + } + }, + "optional": { "type": "boolean" }, + "permissive": { "type": "boolean" }, + "rateLimited": { "type": "boolean" }, + "retryCount": { "type": "integer", "format": "int32" }, + "scriptExpression": { "type": "string" }, + "sink": { "type": "string" }, + "startDelay": { "type": "integer", "format": "int32" }, + "subWorkflowParam": { + "$ref": "#/components/schemas/SubWorkflowParams" + }, + "taskDefinition": { "$ref": "#/components/schemas/TaskDef" }, + "taskReferenceName": { "type": "string" }, + "type": { "type": "string" }, + "workflowTaskType": { + "type": "string", + "writeOnly": true, + "enum": [ + "SIMPLE", + "DYNAMIC", + "FORK_JOIN", + "FORK_JOIN_DYNAMIC", + "DECISION", + "SWITCH", + "JOIN", + "DO_WHILE", + "SUB_WORKFLOW", + "START_WORKFLOW", + "EVENT", + "WAIT", + "HUMAN", + "USER_DEFINED", + "HTTP", + "LAMBDA", + "INLINE", + "EXCLUSIVE_JOIN", + "TERMINATE", + "KAFKA_PUBLISH", + "JSON_JQ_TRANSFORM", + "SET_VARIABLE", + "NOOP" + ] + } + } + }, + "WorkflowTestRequest": { + "required": ["name"], + "type": "object", + "properties": { + "correlationId": { "type": "string" }, + "createdBy": { "type": "string" }, + "externalInputPayloadStoragePath": { "type": "string" }, + "idempotencyKey": { "type": "string" }, + "idempotencyStrategy": { + "type": "string", + "enum": ["FAIL", "RETURN_EXISTING", "FAIL_ON_RUNNING"] + }, + "input": { + "type": "object", + "additionalProperties": { "type": "object" } + }, + "name": { "type": "string" }, + "priority": { + "maximum": 99, + "minimum": 0, + "type": "integer", + "format": "int32" + }, + "subWorkflowTestRequest": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/WorkflowTestRequest" + } + }, + "taskRefToMockOutput": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { "$ref": "#/components/schemas/TaskMock" } + } + }, + "taskToDomain": { + "type": "object", + "additionalProperties": { "type": "string" } + }, + "version": { "type": "integer", "format": "int32" }, + "workflowDef": { "$ref": "#/components/schemas/WorkflowDef" } + } + } + }, + "securitySchemes": { + "api_key": { + "description": "Api Key access", + "in": "header", + "name": "X-Authorization", + "type": "apiKey" + } + } + } +} diff --git a/tests/unit/orkes/test_async_application_resource_api.py b/tests/unit/orkes/test_async_application_resource_api.py new file mode 100644 index 000000000..4c66ed113 --- /dev/null +++ b/tests/unit/orkes/test_async_application_resource_api.py @@ -0,0 +1,401 @@ +import asyncio +import logging + +import pytest + +from conductor.client.adapters.models import ( + CreateOrUpdateApplicationRequestAdapter, + ExtendedConductorApplicationAdapter, +) +from conductor.client.my_aiohttp_client import Configuration +from conductor.client.my_aiohttp_client.models.tag import Tag +from conductor.client.orkes.async_orkes_base_client import AsyncOrkesBaseClient + +APP_ID = "5d860b70-a429-4b20-8d28-6b5198155882" +APP_NAME = "ut_application_name" +ACCESS_KEY_ID = "9c32f5b2-128d-42bd-988f-083857f4c541" +KEY_ID = "test-key-id" +ROLE = "USER" +TAG_NAME = "test-tag" +TAG_VALUE = "test-value" + + +@pytest.fixture(scope="module") +def configuration(): + return Configuration("http://localhost:8080/api") + + +@pytest.fixture(scope="module") +def async_client(configuration): + return AsyncOrkesBaseClient(configuration) + + +@pytest.fixture(scope="module") +def create_application_request(): + return CreateOrUpdateApplicationRequestAdapter(name=APP_NAME) + + +@pytest.fixture(scope="module") +def extended_conductor_application(): + return ExtendedConductorApplicationAdapter( + id=APP_ID, + name=APP_NAME, + create_time=1699236095031, + created_by="test-user", + update_time=1699236095031, + updated_by="test-user", + tags=[], + ) + + +@pytest.fixture(scope="module") +def tag(): + return Tag(key=TAG_NAME, value=TAG_VALUE) + + +@pytest.fixture(autouse=True) +def disable_logging(): + logging.getLogger().setLevel(logging.ERROR) + + +def test_init(async_client): + assert async_client is not None + assert hasattr(async_client, "application_resource_api") + assert async_client.application_resource_api is not None + + +@pytest.mark.asyncio +async def test_create_application( + async_client, create_application_request, extended_conductor_application, mocker +): + mock_create = mocker.patch.object( + async_client.application_resource_api, + "create_application", + autospec=True, + ) + mock_create.return_value = extended_conductor_application + + result = await async_client.application_resource_api.create_application( + create_application_request + ) + + mock_create.assert_called_once_with(create_application_request) + + assert result == extended_conductor_application + assert result.id == APP_ID + assert result.name == APP_NAME + + +@pytest.mark.asyncio +async def test_get_application(async_client, extended_conductor_application, mocker): + mock_get = mocker.patch.object( + async_client.application_resource_api, + "get_application", + autospec=True, + ) + mock_get.return_value = extended_conductor_application + + result = await async_client.application_resource_api.get_application(APP_ID) + + mock_get.assert_called_once_with(APP_ID) + assert result == extended_conductor_application + assert result.id == APP_ID + assert result.name == APP_NAME + + +@pytest.mark.asyncio +async def test_list_applications(async_client, extended_conductor_application, mocker): + mock_list = mocker.patch.object( + async_client.application_resource_api, + "list_applications", + autospec=True, + ) + mock_list.return_value = [extended_conductor_application] + + result = await async_client.application_resource_api.list_applications() + + mock_list.assert_called_once() + + assert isinstance(result, list) + assert len(result) == 1 + assert result[0] == extended_conductor_application + assert result[0].id == APP_ID + + +@pytest.mark.asyncio +async def test_update_application( + async_client, create_application_request, extended_conductor_application, mocker +): + mock_update = mocker.patch.object( + async_client.application_resource_api, + "update_application", + autospec=True, + ) + mock_update.return_value = extended_conductor_application + + result = await async_client.application_resource_api.update_application( + APP_ID, create_application_request + ) + + mock_update.assert_called_once_with(APP_ID, create_application_request) + + assert result == extended_conductor_application + + +@pytest.mark.asyncio +async def test_delete_application(async_client, mocker): + mock_delete = mocker.patch.object( + async_client.application_resource_api, + "delete_application", + autospec=True, + ) + mock_delete.return_value = {"status": "deleted"} + + result = await async_client.application_resource_api.delete_application(APP_ID) + + mock_delete.assert_called_once_with(APP_ID) + + assert result == {"status": "deleted"} + + +@pytest.mark.asyncio +async def test_create_access_key(async_client, mocker): + mock_create_key = mocker.patch.object( + async_client.application_resource_api, + "create_access_key", + autospec=True, + ) + mock_create_key.return_value = {"id": ACCESS_KEY_ID, "secret": "test-secret"} + + result = await async_client.application_resource_api.create_access_key(APP_ID) + + mock_create_key.assert_called_once_with(APP_ID) + + assert result == {"id": ACCESS_KEY_ID, "secret": "test-secret"} + + +@pytest.mark.asyncio +async def test_get_access_keys(async_client, mocker): + mock_get_keys = mocker.patch.object( + async_client.application_resource_api, + "get_access_keys", + autospec=True, + ) + mock_get_keys.return_value = [{"id": ACCESS_KEY_ID, "status": "ACTIVE"}] + + result = await async_client.application_resource_api.get_access_keys(APP_ID) + + mock_get_keys.assert_called_once_with(APP_ID) + + assert isinstance(result, list) + assert len(result) == 1 + assert result[0]["id"] == ACCESS_KEY_ID + + +@pytest.mark.asyncio +async def test_delete_access_key(async_client, mocker): + mock_delete_key = mocker.patch.object( + async_client.application_resource_api, + "delete_access_key", + autospec=True, + ) + mock_delete_key.return_value = {"status": "deleted"} + + result = await async_client.application_resource_api.delete_access_key( + APP_ID, KEY_ID + ) + + mock_delete_key.assert_called_once_with(APP_ID, KEY_ID) + + assert result == {"status": "deleted"} + + +@pytest.mark.asyncio +async def test_toggle_access_key_status(async_client, mocker): + mock_toggle = mocker.patch.object( + async_client.application_resource_api, + "toggle_access_key_status", + autospec=True, + ) + mock_toggle.return_value = {"id": KEY_ID, "status": "INACTIVE"} + + result = await async_client.application_resource_api.toggle_access_key_status( + APP_ID, KEY_ID + ) + + mock_toggle.assert_called_once_with(APP_ID, KEY_ID) + + assert result == {"id": KEY_ID, "status": "INACTIVE"} + + +@pytest.mark.asyncio +async def test_add_role_to_application_user(async_client, mocker): + mock_add_role = mocker.patch.object( + async_client.application_resource_api, + "add_role_to_application_user", + autospec=True, + ) + mock_add_role.return_value = {"status": "role_added"} + + result = await async_client.application_resource_api.add_role_to_application_user( + APP_ID, ROLE + ) + + mock_add_role.assert_called_once_with(APP_ID, ROLE) + + assert result == {"status": "role_added"} + + +@pytest.mark.asyncio +async def test_remove_role_from_application_user(async_client, mocker): + mock_remove_role = mocker.patch.object( + async_client.application_resource_api, + "remove_role_from_application_user", + autospec=True, + ) + mock_remove_role.return_value = {"status": "role_removed"} + + result = ( + await async_client.application_resource_api.remove_role_from_application_user( + APP_ID, ROLE + ) + ) + + mock_remove_role.assert_called_once_with(APP_ID, ROLE) + + assert result == {"status": "role_removed"} + + +@pytest.mark.asyncio +async def test_get_tags_for_application(async_client, tag, mocker): + mock_get_tags = mocker.patch.object( + async_client.application_resource_api, + "get_tags_for_application", + autospec=True, + ) + mock_get_tags.return_value = [tag] + + result = await async_client.application_resource_api.get_tags_for_application( + APP_ID + ) + + mock_get_tags.assert_called_once_with(APP_ID) + + assert isinstance(result, list) + assert len(result) == 1 + assert result[0] == tag + assert result[0].key == TAG_NAME + + +@pytest.mark.asyncio +async def test_put_tag_for_application(async_client, tag, mocker): + mock_put_tags = mocker.patch.object( + async_client.application_resource_api, + "put_tag_for_application", + autospec=True, + ) + mock_put_tags.return_value = None + + result = await async_client.application_resource_api.put_tag_for_application( + APP_ID, [tag] + ) + + mock_put_tags.assert_called_once_with(APP_ID, [tag]) + + assert result is None + + +@pytest.mark.asyncio +async def test_delete_tag_for_application(async_client, tag, mocker): + mock_delete_tags = mocker.patch.object( + async_client.application_resource_api, + "delete_tag_for_application", + autospec=True, + ) + mock_delete_tags.return_value = None + + result = await async_client.application_resource_api.delete_tag_for_application( + APP_ID, [tag] + ) + + mock_delete_tags.assert_called_once_with(APP_ID, [tag]) + + assert result is None + + +@pytest.mark.asyncio +async def test_get_app_by_access_key_id( + async_client, extended_conductor_application, mocker +): + mock_get_app = mocker.patch.object( + async_client.application_resource_api, + "get_app_by_access_key_id", + autospec=True, + ) + mock_get_app.return_value = extended_conductor_application + + result = await async_client.application_resource_api.get_app_by_access_key_id( + ACCESS_KEY_ID + ) + + mock_get_app.assert_called_once_with(ACCESS_KEY_ID) + + assert result == extended_conductor_application + assert result.id == APP_ID + + +@pytest.mark.asyncio +async def test_error_handling(async_client, mocker): + mock_get = mocker.patch.object( + async_client.application_resource_api, + "get_application", + autospec=True, + ) + mock_get.side_effect = Exception("API Error") + + with pytest.raises(Exception, match="API Error"): + await async_client.application_resource_api.get_application(APP_ID) + + mock_get.assert_called_once_with(APP_ID) + + +@pytest.mark.asyncio +async def test_multiple_concurrent_requests( + async_client, extended_conductor_application, mocker +): + mock_get = mocker.patch.object( + async_client.application_resource_api, + "get_application", + autospec=True, + ) + mock_get.return_value = extended_conductor_application + + tasks = [ + async_client.application_resource_api.get_application(f"{APP_ID}-{i}") + for i in range(3) + ] + + results = await asyncio.gather(*tasks) + + assert mock_get.call_count == 3 + assert len(results) == 3 + assert all(result == extended_conductor_application for result in results) + + +@pytest.mark.asyncio +async def test_request_timeout(async_client, mocker): + mock_get = mocker.patch.object( + async_client.application_resource_api, + "get_application", + autospec=True, + ) + mock_get.side_effect = Exception("Timeout") + + with pytest.raises(Exception, match="Timeout"): + await async_client.application_resource_api.get_application( + APP_ID, _request_timeout=5.0 + ) + + mock_get.assert_called_once() + call_args = mock_get.call_args + assert call_args[1]["_request_timeout"] == 5.0