diff --git a/.fern/metadata.json b/.fern/metadata.json index 4ebccd92..0a957713 100644 --- a/.fern/metadata.json +++ b/.fern/metadata.json @@ -15,7 +15,7 @@ "standardwebhooks": ">=1.0.1,<2" } }, - "originGitCommit": "55b208b8f227a5947de9c2bf849ddf06375d5e7d", + "originGitCommit": "b80eac0615e24d2cdfc26297d0bbd053c8e5cf35", "originGitCommitIsDirty": false, "invokedBy": "ci", "requestedVersion": "1.0.14", diff --git a/.fern/replay.lock b/.fern/replay.lock index eef6cc70..78d5b701 100644 --- a/.fern/replay.lock +++ b/.fern/replay.lock @@ -48,5 +48,11 @@ generations: cli_version: unknown generator_versions: fernapi/fern-python-sdk: 5.28.0 -current_generation: e55f1c8ef8e0f0104f4a7df7acb9105b403b9423 + - commit_sha: 615e77c5e680abbf32599eb1dbd5d1f7c2cccbb1 + tree_hash: 25a67efbcf419cb73323e16bd90b15f6842da69b + timestamp: 2026-08-28T17:13:32.093Z + cli_version: unknown + generator_versions: + fernapi/fern-python-sdk: 5.28.0 +current_generation: 615e77c5e680abbf32599eb1dbd5d1f7c2cccbb1 patches: [] diff --git a/poetry.lock b/poetry.lock index ccaa22a2..fb45b2c7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -936,19 +936,19 @@ files = [ [[package]] name = "pydantic" -version = "2.13.4" +version = "2.13.5" description = "Data validation using Python type hints" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "pydantic-2.13.4-py3-none-any.whl", hash = "sha256:45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba"}, - {file = "pydantic-2.13.4.tar.gz", hash = "sha256:c40756b57adaa8b1efeeced5c196f3f3b7c435f90e84ea7f443901bec8099ef6"}, + {file = "pydantic-2.13.5-py3-none-any.whl", hash = "sha256:346a034f080da3755d8e9cb5e00e8b07de1d39e4f6e2c87d8ab7cafa0b269a73"}, + {file = "pydantic-2.13.5.tar.gz", hash = "sha256:51a9c5f7b2f8e636f04c6cada605d9b6a3bf1348fdf945a3d8869b19bba0ee08"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.46.4" +pydantic-core = "2.46.5" typing-extensions = ">=4.14.1" typing-inspection = ">=0.4.2" @@ -958,132 +958,132 @@ timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows [[package]] name = "pydantic-core" -version = "2.46.4" +version = "2.46.5" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.9" groups = ["main"] files = [ - {file = "pydantic_core-2.46.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a396dcc17e5a0b164dbe026896245a4fa9ff402edca1dff0be3d53a517f74de4"}, - {file = "pydantic_core-2.46.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:da4b951fe36dc7c3a1ccb4e3cd1747c3542b8c9ceede8fc86cae054e764485f5"}, - {file = "pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb63e0198ca18aad131c089b9204c23079c3afa95487e561f4c522d519e55aba"}, - {file = "pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f47286a97f0bc9b8859519809077b91b2cefe4ae47fcbf5e466a009c1c5d742b"}, - {file = "pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:905a0ed8ea6f2d61c1738835f99b699348d7857379083e5fc497fa0c967a407c"}, - {file = "pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea793e075b70290d89d8142074262885d3f7da19634845135751bd6344f73b50"}, - {file = "pydantic_core-2.46.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:395aebd9183f9d112f569aeb5b2214d1a10a33bec8456447f7fbdfa51d38d4cd"}, - {file = "pydantic_core-2.46.4-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:b078afbc25f3a1436c7a1d2cd3e322497ee99615ba97c563566fdf46aff1ee01"}, - {file = "pydantic_core-2.46.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f747929cf940cddb5b3668a390056ddd5ba2e5010615ea2dcf4f9c4f3ab8791d"}, - {file = "pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:daa27d92c36f24388fe3ad306b174781c747627f134452e4f128ea00ce1fe8c4"}, - {file = "pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:19e51f073cd3df251856a8a4189fbdf1de4012c3ebacfb1884f94f1eb406079f"}, - {file = "pydantic_core-2.46.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1747f85cee84c26985853c6f3d9bd3e75da5212912443fa111c113b9c246f39"}, - {file = "pydantic_core-2.46.4-cp310-cp310-win32.whl", hash = "sha256:2f84c03c8607173d16b5a854ec68a2f9079ae03237a54fb506d13af47e1d018d"}, - {file = "pydantic_core-2.46.4-cp310-cp310-win_amd64.whl", hash = "sha256:8358a950c8909158e3df31538a7e4edc2d7265a7c54b47f0864d9e5bae9dcebf"}, - {file = "pydantic_core-2.46.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0e96592440881c74a213e5ad528e2b24d3d4f940de2766bed9010ab1d9e51594"}, - {file = "pydantic_core-2.46.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0d65b8c354be7fb5f720c3caa8bc940bc2d20ce749c8e06135f07f8ed95dd7c"}, - {file = "pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bfb192b3f4b9e8a89b6277b6ce787564f62cfd272055f6e685726b111dc7826"}, - {file = "pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9037063db01f09b09e237c282b6792bd4da634b5402c4e7f0c61effed7701a04"}, - {file = "pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc010ab034c8c7452522748bf937df58020d256ccae0874463d1f4d01758af8e"}, - {file = "pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c5dac79fa1614d1e06ca695109c6105923bd9c7d1d6c918d4e637b7e6b32fd3"}, - {file = "pydantic_core-2.46.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9fa868638bf362d3d138ea55829cefb3d5f4b0d7f142234382a15e2485dbec4"}, - {file = "pydantic_core-2.46.4-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:17299feefe090f2caa5b8e37222bb5f663e4935a8bfa6931d4102e5df1a9f398"}, - {file = "pydantic_core-2.46.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4c63ebc82684aa89d9a3bcbd13d515b3be44250dc68dd3bd81526c1cb31286c3"}, - {file = "pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:aaa2a54443eff1950ba5ddc6b6ccda0d9c84a364276a62f969bdf2a390650848"}, - {file = "pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:18e5ceec2ab67e6d5f1a9085e5a24c9c4e2ac4545730bfe668680bca05e555f3"}, - {file = "pydantic_core-2.46.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a0f62d0a58f4e7da165457e995725421e0064f2255d8eccebc49f41bbc23b109"}, - {file = "pydantic_core-2.46.4-cp311-cp311-win32.whl", hash = "sha256:041bde0a48fd37cf71cab1c9d56d3e8625a3793fef1f7dd232b3ff37e978ecda"}, - {file = "pydantic_core-2.46.4-cp311-cp311-win_amd64.whl", hash = "sha256:6f2eeda33a839975441c86a4119e1383c50b47faf0cbb5176985565c6bb02c33"}, - {file = "pydantic_core-2.46.4-cp311-cp311-win_arm64.whl", hash = "sha256:14f4c5d6db102bd796a627bbb3a17b4cf4574b9ae861d8b7c9a9661c6dd3362d"}, - {file = "pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3245406455a5d98187ec35530fd772b1d799b26667980872c8d4614991e2c4a2"}, - {file = "pydantic_core-2.46.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:962ccbab7b642487b1d8b7df90ef677e03134cf1fd8880bf698649b22a69371f"}, - {file = "pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8233f2947cf85404441fd7e0085f53b10c93e0ee78611099b5c7237e36aacbf7"}, - {file = "pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3a233125ac121aa3ffba9a2b59edfc4a985a76092dc8279586ab4b71390875e7"}, - {file = "pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b712b53160b79a5850310b912a5ef8e57e56947c8ad690c227f5c9d7e561712"}, - {file = "pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9401557acd873c3a7f3eb9383edef8ac4968f9510e340f4808d427e75667e7b4"}, - {file = "pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:926c9541b14b12b1681dca8a0b75feb510b06c6341b70a8e500c2fdcff837cce"}, - {file = "pydantic_core-2.46.4-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:56cb4851bcaf3d117eddcef4fe66afd750a50274b0da8e22be256d10e5611987"}, - {file = "pydantic_core-2.46.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c68fcd102d71ea85c5b2dfac3f4f8476eff42a9e078fd5faefff6d145063536b"}, - {file = "pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b2f69dec1725e79a012d920df1707de5caf7ed5e08f3be4435e25803efc47458"}, - {file = "pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8d0820e8192167f80d88d64038e609c31452eeca865b4e1d9950a27a4609b00b"}, - {file = "pydantic_core-2.46.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fbdb89b3e1c94a30cc5edfce477c6e6a5dc4d8f84665b455c27582f211a1c72c"}, - {file = "pydantic_core-2.46.4-cp312-cp312-win32.whl", hash = "sha256:9aa768456404a8bf48a4406685ac2bec8e72b62c69313734fa3b73cf33b3a894"}, - {file = "pydantic_core-2.46.4-cp312-cp312-win_amd64.whl", hash = "sha256:e9c26f834c65f5752f3f06cb08cb86a913ceb7274d0db6e267808a708b46bc89"}, - {file = "pydantic_core-2.46.4-cp312-cp312-win_arm64.whl", hash = "sha256:4fc73cb559bdb54b1134a706a2802a4cddd27a0633f5abb7e53056268751ac6a"}, - {file = "pydantic_core-2.46.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5d5902252db0d3cedf8d4a1bc68f70eeb430f7e4c7104c8c476753519b423008"}, - {file = "pydantic_core-2.46.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c94f0688e7b8d0a67abf40e57a7eaaecd17cc9586706a31b76c031f63df052b4"}, - {file = "pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f027324c56cd5406ca49c124b0db10e56c69064fec039acc571c29020cc87c76"}, - {file = "pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e739fee756ba1010f8bcccb534252e85a35fe45ae92c295a06059ce58b74ccd3"}, - {file = "pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d56801be94b86a9da183e5f3766e6310752b99ff647e38b09a9500d88e46e76"}, - {file = "pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2412e734dcb48da14d4e4006b82b46b74f2518b8a26ee7e58c6844a6cd6d03c4"}, - {file = "pydantic_core-2.46.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9551187363ffc0de2a00b2e47c25aeaeb1020b69b668762966df15fc5659dd5a"}, - {file = "pydantic_core-2.46.4-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:0186750b482eefa11d7f435892b09c5c606193ef3375bcf94aa00ae6bfb66262"}, - {file = "pydantic_core-2.46.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5855698a4856556d86e8e6cd8434bc3ac0314ee8e12089ae0e143f64c6256e4e"}, - {file = "pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:cbaf13819775b7f769bf4a1f066cb6df7a28d4480081a589828ef190226881cd"}, - {file = "pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:633147d34cf4550417f12e2b1a0383973bdf5cdfde212cb09e9a581cf10820be"}, - {file = "pydantic_core-2.46.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:82cf5301172168103724d49a1444d3378cb20cdee30b116a1bd6031236298a5d"}, - {file = "pydantic_core-2.46.4-cp313-cp313-win32.whl", hash = "sha256:9fa8ae11da9e2b3126c6426f147e0fba88d96d65921799bb30c6abd1cb2c97fb"}, - {file = "pydantic_core-2.46.4-cp313-cp313-win_amd64.whl", hash = "sha256:6b3ace8194b0e5204818c92802dcdca7fc6d88aabbb799d7c795540d9cd6d292"}, - {file = "pydantic_core-2.46.4-cp313-cp313-win_arm64.whl", hash = "sha256:184c081504d17f1c1066e430e117142b2c77d9448a97f7b65c6ac9fd9aee238d"}, - {file = "pydantic_core-2.46.4-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:428e04521a40150c85216fc8b85e8d39fece235a9cf5e383761238c7fa9b96fb"}, - {file = "pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:23ace664830ee0bfe014a0c7bc248b1f7f25ed7ad103852c317624a1083af462"}, - {file = "pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce5c1d2a8b27468f433ca974829c44060b8097eedc39933e3c206a90ee49c4a9"}, - {file = "pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7283d57845ecf5a163403eb0702dfc220cc4fbdd18919cb5ccea4f95ee1cdab4"}, - {file = "pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8daafc69c93ee8a0204506a3b6b30f586ef54028f52aeeeb5c4cfc5184fd5914"}, - {file = "pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2213145bcc2ba85884d0ac63d222fece9209678f77b9b4d76f054c561adb28"}, - {file = "pydantic_core-2.46.4-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a5f930472650a82629163023e630d160863fce524c616f4e5186e5de9d9a49b"}, - {file = "pydantic_core-2.46.4-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:c1b3f518abeca3aa13c712fd202306e145abf59a18b094a6bafb2d2bbf59192c"}, - {file = "pydantic_core-2.46.4-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a7dd0b3ee80d90150e3495a3a13ac34dbcbfd4f012996a6a1d8900e91b5c0fb"}, - {file = "pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:3fb702cd90b0446a3a1c5e470bfa0dd23c0233b676a9099ddcc964fa6ca13898"}, - {file = "pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b8458003118a712e66286df6a707db01c52c0f52f7db8e4a38f0da1d3b94fc4e"}, - {file = "pydantic_core-2.46.4-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:372429a130e469c9cd698925ce5fc50940b7a1336b0d82038e63d5bbc4edc519"}, - {file = "pydantic_core-2.46.4-cp314-cp314-win32.whl", hash = "sha256:85bb3611ff1802f3ee7fdd7dbff26b56f343fb432d57a4728fdd49b6ef35e2f4"}, - {file = "pydantic_core-2.46.4-cp314-cp314-win_amd64.whl", hash = "sha256:811ff8e9c313ab425368bcbb36e5c4ebd7108c2bbf4e4089cfbb0b01eff63fac"}, - {file = "pydantic_core-2.46.4-cp314-cp314-win_arm64.whl", hash = "sha256:bfec22eab3c8cc2ceec0248aec886624116dc079afa027ecc8ad4a7e62010f8a"}, - {file = "pydantic_core-2.46.4-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:af8244b2bef6aaad6d92cda81372de7f8c8d36c9f0c3ea36e827c60e7d9467a0"}, - {file = "pydantic_core-2.46.4-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a4330cdbc57162e4b3aa303f588ba752257694c9c9be3e7ebb11b4aca659b5d"}, - {file = "pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c61fc04a3d840155ff08e475a04809278972fe6aef51e2720554e96367e34b"}, - {file = "pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c50f2528cf200c5eed56faf3f4e22fcd5f38c157a8b78576e6ba3168ec35f000"}, - {file = "pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0cbe8b01f948de4286c74cdd6c667aceb38f5c1e26f0693b3983d9d74887c65e"}, - {file = "pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:617d7e2ca7dcb8c5cf6bcb8c59b8832c94b36196bbf1cbd1bfb56ed341905edd"}, - {file = "pydantic_core-2.46.4-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7027560ee92211647d0d34e3f7cd6f50da56399d26a9c8ad0da286d3869a53f3"}, - {file = "pydantic_core-2.46.4-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:f99626688942fb746e545232e7726926f3be91b5975f8b55327665fafda991c7"}, - {file = "pydantic_core-2.46.4-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc3e9034a63de20e15e8ade85358bc6efc614008cab72898b4b4952bea0509ff"}, - {file = "pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:97e7cf2be5c77b7d1a9713a05605d49460d02c6078d38d8bef3cbe323c548424"}, - {file = "pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:3bf92c5d0e00fefaab325a4d27828fe6b6e2a21848686b5b60d2d9eeb09d76c6"}, - {file = "pydantic_core-2.46.4-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:3ecbc122d18468d06ca279dc26a8c2e2d5acb10943bb35e36ae92096dc3b5565"}, - {file = "pydantic_core-2.46.4-cp314-cp314t-win32.whl", hash = "sha256:e846ae7835bf0703ae43f534ab79a867146dadd59dc9ca5c8b53d5c8f7c9ef02"}, - {file = "pydantic_core-2.46.4-cp314-cp314t-win_amd64.whl", hash = "sha256:2108ba5c1c1eca18030634489dc544844144ee36357f2f9f780b93e7ddbb44b5"}, - {file = "pydantic_core-2.46.4-cp314-cp314t-win_arm64.whl", hash = "sha256:4fcbe087dbc2068af7eda3aa87634eba216dbda64d1ae73c8684b621d33f6596"}, - {file = "pydantic_core-2.46.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:fd8b3d9fd264be37976686c7f65cd52a83f5e84f4bfd2adf9c1d469676bbb6ae"}, - {file = "pydantic_core-2.46.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9f444c499b3eefd3a92e348059471ea0c3a6e303d9c1cec09fa748fd9f895201"}, - {file = "pydantic_core-2.46.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3447661d99f75a3683a4cf5c87da72f2161964611864dbbeac7fbb118bb4bfc0"}, - {file = "pydantic_core-2.46.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b9bab013d1c7a79d3501ff86d0bc9c31bf587db4551677b96bec07df78c6b15"}, - {file = "pydantic_core-2.46.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d995260fdf4e1db774581b4900e0f832abe3c7c84996726bbc161b19c8f29e76"}, - {file = "pydantic_core-2.46.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f13a646d65d09fbf1bc6b3a9635d30095c8e7e5cc419ff35ecc563c5fd04cd49"}, - {file = "pydantic_core-2.46.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432c179df7874eeb73307aad2df0755e1ae0efa61ff0ea89b93e194411ae3928"}, - {file = "pydantic_core-2.46.4-cp39-cp39-manylinux_2_31_riscv64.whl", hash = "sha256:e68b7a074f65a2fd746c52a7ce6142ab7006074ac269ace0c25cd8ba171f8066"}, - {file = "pydantic_core-2.46.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4a05d69cba51d852c5c3e92758653245a50c0b646ced0cf05bd793ed592839d6"}, - {file = "pydantic_core-2.46.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:228ee9bae8bef5b1e97ec58302f80357c37199e0d0a99174e138d28e6957b9d9"}, - {file = "pydantic_core-2.46.4-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:10e17cbb10a330363733efc4d7c4d0dd827ac0909b8f6a6542298fed1ea62f29"}, - {file = "pydantic_core-2.46.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:91a06d2e259ecfbd8c901d70c3c507900458498142b3026a296b7de4d1322cc9"}, - {file = "pydantic_core-2.46.4-cp39-cp39-win32.whl", hash = "sha256:d80ee3d731373b24cebbc10d689ca4ee1875caf0d5703a245db18efd4dd37fc1"}, - {file = "pydantic_core-2.46.4-cp39-cp39-win_amd64.whl", hash = "sha256:3be77f45df024d789a672ae34f8b06fb346c4f9f46ea714956660ea4862e89ac"}, - {file = "pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:14d4edf427bdcf950a8a02d7cb44a08614388dd6e1bdcbf4f67504fa7887da9c"}, - {file = "pydantic_core-2.46.4-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:0ce40cd7b21210e99342afafbd4d0f76d784eb5b1d60f3bdc566be4983c6c73b"}, - {file = "pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90884113d8b48f760e9587002789ddd741e76ab9f89518cd1e43b1f1a52ec44b"}, - {file = "pydantic_core-2.46.4-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66ce7632c22d837c95301830e111ad0128a32b8207533b60896a96c4915192ea"}, - {file = "pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:1d8ba486450b14f3b1d63bc521d410ec7565e52f887b9fb671791886436a42f7"}, - {file = "pydantic_core-2.46.4-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:3009f12e4e90b7f88b4f9adb1b0c4a3d58fe7820f3238c190047209d148026df"}, - {file = "pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad785e92e6dc634c21555edc8bd6b64957ab844541bcb96a1366c202951ae526"}, - {file = "pydantic_core-2.46.4-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00c603d540afdd6b80eb39f078f33ebd46211f02f33e34a32d9f053bba711de0"}, - {file = "pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0c563b08bca408dc7f65f700633d8442fffb2421fc47b8101377e9fd65051ff0"}, - {file = "pydantic_core-2.46.4-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:db06ffe51636ffe9ca531fe9023dd64bdd794be8754cb5df57c5498ae5b518a7"}, - {file = "pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:133878133d271ade3d41d1bfb2a45ec38dbdbda40bc065921c6b04e4630127e2"}, - {file = "pydantic_core-2.46.4-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9bc519fbf2b7578398853d815009ae5e4d4603d12f4e3f91da8c06852d3da3e9"}, - {file = "pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c7a7bd4e39e8e4c12c39cd480356842b6a8a06e41b23a55a5e3e191718838ddf"}, - {file = "pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:d396ec2b979760aaf3218e76c24e65bd0aca24983298653b3a9d7a45f9e47b30"}, - {file = "pydantic_core-2.46.4-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:86e1a4418c6cd97d60c95c71164158eaf7324fae7b0923264016baa993eba6fc"}, - {file = "pydantic_core-2.46.4-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:d51026d73fcfd93610abc7b27789c26b313920fcfb20e27462d74a7f8b06e983"}, - {file = "pydantic_core-2.46.4.tar.gz", hash = "sha256:62f875393d7f270851f20523dd2e29f082bcc82292d66db2b64ea71f64b6e1c1"}, + {file = "pydantic_core-2.46.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:657b40d6240c0a7b6a64b30f22d1e3aa631c7e846c621b0c0f6d1d75e2e15ea6"}, + {file = "pydantic_core-2.46.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ecb42011e12ee19cafbc312887cbf3546959fe02fbad44f272d4be5baa997615"}, + {file = "pydantic_core-2.46.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dedce55295becb61921e386b99d4f2706045306e7fa52249a33004c837379fb"}, + {file = "pydantic_core-2.46.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f47b8a949e60f027f0aa0a6f6c7b7e9c55cbf4380d10b344e282fa4e7ab1e1b"}, + {file = "pydantic_core-2.46.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:200aa3dc9f8d54f0754f43247c0bad0999fdcfbfd2488384dd44f37279271fe6"}, + {file = "pydantic_core-2.46.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d30e1a4f138b8951063e9a394752a9179b51da288ffa507b1e659222f4c1793"}, + {file = "pydantic_core-2.46.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:850a08d167dde16db8702c274f320c7be9d7da6f6dff2b58b18f9e815bd94f5b"}, + {file = "pydantic_core-2.46.5-cp310-cp310-manylinux_2_31_riscv64.whl", hash = "sha256:c3471e5c4a949c26ec00a77f01df59096aa9495877de76fd60a980f8ee6be461"}, + {file = "pydantic_core-2.46.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3a3e26b6a8274211bddee2d0e4d0d42778f17a34510f49d2ec44b58abfc41736"}, + {file = "pydantic_core-2.46.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:fc5d783bd4a2387e97b8a2d5ec781cfb92b3d893bf82370548e99db5915935d3"}, + {file = "pydantic_core-2.46.5-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:356c8368cbc321050b169595683a2e1d63413b1e0e2868b330af9fc14c616d3f"}, + {file = "pydantic_core-2.46.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:eb7d8d0e5886a89a55d2eef490e272fa965a9d57c6b29a5b5088a7997ec2cad1"}, + {file = "pydantic_core-2.46.5-cp310-cp310-win32.whl", hash = "sha256:4d44cf99ddebf875f9b68cc267aa684c99b7b44fe63ee1cac4ec163807290069"}, + {file = "pydantic_core-2.46.5-cp310-cp310-win_amd64.whl", hash = "sha256:1e5aad1220a1192c42341c8fd4a8686657e73ab2a920c970bdc4de334fe3193d"}, + {file = "pydantic_core-2.46.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:a1dee1b804ff4d11c663636cf15d2ea47e9f79cd56c033fb1cbf08924842a48f"}, + {file = "pydantic_core-2.46.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d625a186a65201c23a9e3b8ed9c47e90a026e03256608cc91851c6709096844f"}, + {file = "pydantic_core-2.46.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f8507560a9284e1370bb048ed4282012fbef4e8d109875b95e884d228552061"}, + {file = "pydantic_core-2.46.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f93c5fe914d75fbec9a49209b00da5f08e9e467d69da2b1510c81940cfd10be"}, + {file = "pydantic_core-2.46.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aca6c767f552b21b10f774aeac128e828eafb796adfa1b666a18bf6321453c3a"}, + {file = "pydantic_core-2.46.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:701b2e04b560eeb4bddf7a25ab8ca476176e34fdbd9a0e18196f0d12d4685f0b"}, + {file = "pydantic_core-2.46.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49776eab08766a08dfff7012f8b422dcd7e25e43b316eedf0477c24fcfa84b7c"}, + {file = "pydantic_core-2.46.5-cp311-cp311-manylinux_2_31_riscv64.whl", hash = "sha256:a2468d93d181667a7abd66e1b64bb9f76f361b0fef8faddf687456453576f5ee"}, + {file = "pydantic_core-2.46.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:53feb344243bb9510a9dec7bf3cf1b64d88a98af5dc7872a5160465f8b198c8e"}, + {file = "pydantic_core-2.46.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cd5214352ae68f3b5e9af7768bdc5253695ee069675db3480518420b3be881f2"}, + {file = "pydantic_core-2.46.5-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:9432f3598db432cb51c5b37fdbf29a60fcccc79e30d37a05022776a6bc4ab689"}, + {file = "pydantic_core-2.46.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8feeac04b5794e513e710af2f9c87d49f31a6dc47967bb264a1fed61a8989bec"}, + {file = "pydantic_core-2.46.5-cp311-cp311-win32.whl", hash = "sha256:892a881d5f68c2b9ea304b7a6c2c60d9343df578a311b0f86b94bc8f1ffe8129"}, + {file = "pydantic_core-2.46.5-cp311-cp311-win_amd64.whl", hash = "sha256:40375c2d05acec10323e45dfe2077ac44bc74659008614af5069034e2cfc781c"}, + {file = "pydantic_core-2.46.5-cp311-cp311-win_arm64.whl", hash = "sha256:28a6a556cd3b6066bea827857f9d9cce027c96f776e512f544a581f9e42161f8"}, + {file = "pydantic_core-2.46.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b9fe6fb92520e3fd61f2e49000b6911b188824f089b75973ea06d6267f0b476d"}, + {file = "pydantic_core-2.46.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a39ac25a9a2fa4072efdb429833c4a4c8009a51ff9eea3eeae131713cd27991e"}, + {file = "pydantic_core-2.46.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4fdc8b93a41521988916eeaa271173fcca7fa0803d62f87675aac8dcec1c8e29"}, + {file = "pydantic_core-2.46.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b98134087d9de723658d17a42c7d0da8d6e2ef08015dee7dc93889047315f5e4"}, + {file = "pydantic_core-2.46.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e652ab17569c94bff5475520f907b7148b8c24036a8ebbe5cf7cf7493d28579a"}, + {file = "pydantic_core-2.46.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d925f3d9afd05a8c0fb3a1031463a8d59ebe5e2afad297e29c78be19e13b4e62"}, + {file = "pydantic_core-2.46.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fc5be0abd4a407e200d844b404e33639a554e7bd0d448e7b9ae181be4789ac2"}, + {file = "pydantic_core-2.46.5-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:816ff0a6550ffc06c098ccd2e0698600f9aa7da192a79eaa6f9af504a35db869"}, + {file = "pydantic_core-2.46.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c7ea57fc63aa7da93a1bd2d644e6577befae10c52c4e36377635eea1056a74f5"}, + {file = "pydantic_core-2.46.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:efd62a42486f1bda5d24cb4f63d15a3c7768375fe83d36f9417b4ad7a2fb20b3"}, + {file = "pydantic_core-2.46.5-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:2bc9419666990c06d7397831f2126a1ecc3594aaa3ff7de5bf2d066802f4e07b"}, + {file = "pydantic_core-2.46.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:18a09e1e1011b462f2e32774f25859ef1223d5c2b0546a633cf56654710721e0"}, + {file = "pydantic_core-2.46.5-cp312-cp312-win32.whl", hash = "sha256:5cb482e9e84c851f4e623fe4acc1ced89168cf1fe18f7089db4548c8f5bbb65b"}, + {file = "pydantic_core-2.46.5-cp312-cp312-win_amd64.whl", hash = "sha256:5e81740c09e310f5aa5cbd3e434a01c154d4bef93241c7877b39f211d2b78ba8"}, + {file = "pydantic_core-2.46.5-cp312-cp312-win_arm64.whl", hash = "sha256:f7b0ec93a2893de856652154d73b7ba622f26fa97726487dcac373de5f4c6084"}, + {file = "pydantic_core-2.46.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:b7ca9034437b6022f941f4857459562ee00a560b97e7cce8a0ec5a74fc6766e0"}, + {file = "pydantic_core-2.46.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f332f0e72a5a0400141f830744e141bf9f97917878dbe968669e8a7fefea78ff"}, + {file = "pydantic_core-2.46.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:193375f3548919d3f0b60936ca113ada3e38f264f91b9b8e0508efaad57be931"}, + {file = "pydantic_core-2.46.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:79bdfa52f843137045b2d081cc05c120ba6665d29b7559c2c47690906f39279f"}, + {file = "pydantic_core-2.46.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:24922243639cbdac66c75fcb6fd6495a9cb52b213d62f9a0d16f0310b1ff8038"}, + {file = "pydantic_core-2.46.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c76fe65e607be28c7fd4d56fc3c42b1583aa058ce3408b7ad0fd540171d31f9f"}, + {file = "pydantic_core-2.46.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f7b393a8b3da82f5c1fc0751e6d01ac6c55b93c18226a60bdfba4a724efafd1"}, + {file = "pydantic_core-2.46.5-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:7ac031912d54f3d83ef3b3eb98dfabc1608802e2202263d25957eeed40b94761"}, + {file = "pydantic_core-2.46.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:837b396ca3d7b74091ca623f6cbd8351bd42d670a79c2683e79fb089f06a2de5"}, + {file = "pydantic_core-2.46.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:5ee239d575f80b08eca11f6e20f90c4c695de7825c67eefe6091fbf20dda648e"}, + {file = "pydantic_core-2.46.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:e80675d75ae2cd14372cb65cad5400d9347a3d3f6c13000183f22dfd027283ed"}, + {file = "pydantic_core-2.46.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:9c4b71f10dd532fb7a5cbc8f58707779e64f03a258c2bf8bfbaecfcd9970b519"}, + {file = "pydantic_core-2.46.5-cp313-cp313-win32.whl", hash = "sha256:97bf8de4d541598c94a59344eeb988a94c08ff76b5723c41f6567ec18c7892ea"}, + {file = "pydantic_core-2.46.5-cp313-cp313-win_amd64.whl", hash = "sha256:15f4a94963c95accac15b7b657bb177d3ad82bb90b0d0526d9a9b85079925db5"}, + {file = "pydantic_core-2.46.5-cp313-cp313-win_arm64.whl", hash = "sha256:d22a945598fb91236b4dd793a6e42e4f3dd7740bb5aace5ebd7d4c08d13bb575"}, + {file = "pydantic_core-2.46.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:c1c43ad4339643d70ebb8124e1305a7dab423001eff58bb41a0f731adbc98355"}, + {file = "pydantic_core-2.46.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1a353f84de772f423b5ffb11d7ae352fbbef0f446f3c0b0af0f8236d7233606e"}, + {file = "pydantic_core-2.46.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5086029a57366b8cf81b130a43908738095c270c21a8d7f0e8bdfdb89718e2f3"}, + {file = "pydantic_core-2.46.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:46c25dda9d092a06c08db76ffe0a197107904d0dfac653f7d5306bbcd6d6119c"}, + {file = "pydantic_core-2.46.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:37ea7b83c935e5b0d68c9449b82651accf78a10828b2c02b2f2d9e9496446c21"}, + {file = "pydantic_core-2.46.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e64e88d5585bea9ce95861079de72006c7fa6d3df4e3a3b65ba31eb979c15c9f"}, + {file = "pydantic_core-2.46.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54d510bac3ee52247af28ed4bb18a1e799f040ac60fd2bf5ccd4c92f1fbe786f"}, + {file = "pydantic_core-2.46.5-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:a2a5e1d0ff29adddc9f6d6821a66302e4493f8ca898b715b6b1182c2c201ea0a"}, + {file = "pydantic_core-2.46.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:03b9666e41e35d8909852ba191a0607520f81b74eaf12ccf8737005dbb313821"}, + {file = "pydantic_core-2.46.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:a91c17edf6eea2402cb5457b4c89e99bc5ed1004aa34c4adf1d4258c1a5c22c2"}, + {file = "pydantic_core-2.46.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:b49924c73a235e969511bf2aabdff3beebf9820931f646c80274d5d780010c47"}, + {file = "pydantic_core-2.46.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:2cbd9a5eff05e51c447c34dfa4632145b26b09120cf04bd0c871e44c1a5e1c9a"}, + {file = "pydantic_core-2.46.5-cp314-cp314-win32.whl", hash = "sha256:2d5d76654becf5efd62c9e51c3756c67b49498b0c9a40884934c40807adbd074"}, + {file = "pydantic_core-2.46.5-cp314-cp314-win_amd64.whl", hash = "sha256:fa10ef4112775900e7a0661068635eb67b2ab824fbde764de6e0e21982a93db0"}, + {file = "pydantic_core-2.46.5-cp314-cp314-win_arm64.whl", hash = "sha256:045ab3b6d308439e32b81cc173bba5b9018bc6ed896afd0c65b3b009b1699af5"}, + {file = "pydantic_core-2.46.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8816f3d218beb4b787de5c9759c259b8fa61f9dec42dc7811f320a33771778b7"}, + {file = "pydantic_core-2.46.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:bce57638e08ac148e5778cce7feb968307a727d66f8e2274a543d0cf0c9ad6a3"}, + {file = "pydantic_core-2.46.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:976e1128455aa595ea04c79ccfedff1aaeab96ee013fcc916bed120c4f0ad94f"}, + {file = "pydantic_core-2.46.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e7b891faeedeafba41b2983e5001a81b6a915b69544c7e7570d1989ce1c36ac7"}, + {file = "pydantic_core-2.46.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f194189415698233dd1114a093a9b56e61e2c57e11b469be3b0506f46f0771c"}, + {file = "pydantic_core-2.46.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:82a36973cf8a2ef5406f4fe2edbf8ed0c99629535d959e0b100c76a32535a111"}, + {file = "pydantic_core-2.46.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdbb78909f52b981d3b2d56b97328d71eb0b974c36bd77c920123a7ebb192829"}, + {file = "pydantic_core-2.46.5-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:52e24eacdb536cade636aa90fb851835222becff8484b7001fdc78cb0290f2aa"}, + {file = "pydantic_core-2.46.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:37ae34309d7bd8c0d61ab839668058f2a7962ea1fc51d105d2db228fe0618034"}, + {file = "pydantic_core-2.46.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:0cdbada856a1c69a7624a64d3d9aefe79300bd6ef827b43a4f265010b9b55184"}, + {file = "pydantic_core-2.46.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:545f26c504b27c3758439a5e6d9349931f0a04f855668d5fe323c89e82300a38"}, + {file = "pydantic_core-2.46.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:ff218293c9c806138dca139765e3b067621be52bcd93cdc14c7711be7ddc90a9"}, + {file = "pydantic_core-2.46.5-cp314-cp314t-win32.whl", hash = "sha256:97cf3eb53a8cccacf9d46686a0926186c9bfb5574f2ed66d3639d5fe117cd3a9"}, + {file = "pydantic_core-2.46.5-cp314-cp314t-win_amd64.whl", hash = "sha256:d2f9fc07a8042a8f95925b35c4f04f469707c981fc33245b6ca187cf5d2dd290"}, + {file = "pydantic_core-2.46.5-cp314-cp314t-win_arm64.whl", hash = "sha256:acf8a67ba51f4ca9ddbd0e6b3000a65ac51ab734661778b3e7ba64d99a710f2f"}, + {file = "pydantic_core-2.46.5-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c583b927a8838dab890706a6fa7573fbb8b70e24000ef9f7238e2d6f6435a5ed"}, + {file = "pydantic_core-2.46.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cdc8b74ecc48c0cb1e9607a05ec4e9e88db60a19ffcc9a1d5f9088ede40c8dc0"}, + {file = "pydantic_core-2.46.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b10e3e8fd7ddc2bd915848a2768e44c15b22936f1cc54c462ad1164deb02655"}, + {file = "pydantic_core-2.46.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f077d0b97ab11fa7dcc633fca53515f290bca8a8a633e966d5b6d1879d9ed01a"}, + {file = "pydantic_core-2.46.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7b0fc826b16c55e561e5d2a0c5c77b051ba1d92808118c4e4b5390f5e0cf191d"}, + {file = "pydantic_core-2.46.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef3fbbf161dc9351a2fe0422e51b129f9e97e42385bd0320b309c15f7d287dd8"}, + {file = "pydantic_core-2.46.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:978e7b97d4824b5be09c69fb70507cbde3b0323fc147332ca40a94d9a6a0ebbf"}, + {file = "pydantic_core-2.46.5-cp39-cp39-manylinux_2_31_riscv64.whl", hash = "sha256:9b68938dd5b0c783d88ff8e2dcc69451b5eb936fe212d516b21b9d5567f6d464"}, + {file = "pydantic_core-2.46.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:771cf63ae0b1b50dd22e5f3e3549fab5f3f4ff1635d352a9e1a97fe01c7b2e64"}, + {file = "pydantic_core-2.46.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7c6be839a5a8312626b32029a415644a0846b420bc8b52b95b28cd92da162168"}, + {file = "pydantic_core-2.46.5-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:895395f8918627b04efb1ad2a4cf605387143300ba03304cd1dfa6d03f5e095e"}, + {file = "pydantic_core-2.46.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fc8515076c11f3cfdf4fb142dcca0fe384b1230a3b5415458ac84f3e0903ec13"}, + {file = "pydantic_core-2.46.5-cp39-cp39-win32.whl", hash = "sha256:3d2652072b2d774947ba5cf78a9e59644ac62ee572daf6dd2e1dfe905e15b2b7"}, + {file = "pydantic_core-2.46.5-cp39-cp39-win_amd64.whl", hash = "sha256:3aa166e99c4f2985407fb8714aebede877ecb5455cf321b606adca926d30d5a0"}, + {file = "pydantic_core-2.46.5-graalpy311-graalpy242_311_native-macosx_10_12_x86_64.whl", hash = "sha256:c14ad3bdc85ee7f318742c457ca3968a92126d144b15721c759033bfb06296c2"}, + {file = "pydantic_core-2.46.5-graalpy311-graalpy242_311_native-macosx_11_0_arm64.whl", hash = "sha256:0bddb4020d8f04175865ccd17eff3040874fc11fb593f424edb452653b4b947c"}, + {file = "pydantic_core-2.46.5-graalpy311-graalpy242_311_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2471fd51c61c610e1dcf7de44d7299283661654d11264ab4802b303368d69c47"}, + {file = "pydantic_core-2.46.5-graalpy311-graalpy242_311_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b10ec717381bdbfafef34607824db4c91de69ff085e4fca3b2af91b4fa17e68a"}, + {file = "pydantic_core-2.46.5-graalpy312-graalpy250_312_native-macosx_10_12_x86_64.whl", hash = "sha256:013d6f3483d81e02e7c328831808f336c8596ee33b4bd4026b9ffb1e960b8942"}, + {file = "pydantic_core-2.46.5-graalpy312-graalpy250_312_native-macosx_11_0_arm64.whl", hash = "sha256:e9c134bb666dd54b778b9fc0d2b50cbb7f979b9e3716f26a88c9ab3b6fc1dd0f"}, + {file = "pydantic_core-2.46.5-graalpy312-graalpy250_312_native-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:347ec774390c87326a2e4929d58d3f7e8763a104d5d35f4cd595a4c952366433"}, + {file = "pydantic_core-2.46.5-graalpy312-graalpy250_312_native-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e24d8f05fa2d28513d94e877e9c75ad66175376209b3977f916e240e623193c"}, + {file = "pydantic_core-2.46.5-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ab4b66edffb32d9e951efb3814bd104b8367a7501b81b955cacb5726d897389f"}, + {file = "pydantic_core-2.46.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:337639ba62a11acde6ef3aeb08c8ea755f8ef1fe5e513356c0f36a2b0d7568b0"}, + {file = "pydantic_core-2.46.5-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:413a717a410d0c817ef5b786a059415550b3794e1d0c2abffd9efb93a3d9f7b4"}, + {file = "pydantic_core-2.46.5-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1e449def1945a462c464331254e5a44fca7c3b4f9aedf59ec2f50f8066dd8e25"}, + {file = "pydantic_core-2.46.5-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:a445486499897b88a7d6c310c88ed64dd37b1b59bfd7ae9107490bbb362f47d6"}, + {file = "pydantic_core-2.46.5-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2d330aaba8621b1edcec8ae2c4050f63b84ccf6d98723a8f212e9684713abf0e"}, + {file = "pydantic_core-2.46.5-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b6acfb46a814762367fb7ba0828b0a17d441b92ce249a0e007474c9072662dda"}, + {file = "pydantic_core-2.46.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:d0a24b40877af2de4950252be9d21eaf7fb07660f3c2cae1f56c6b599ada5266"}, + {file = "pydantic_core-2.46.5.tar.gz", hash = "sha256:10416c15b8839ecc4ef4d0885da76da6fd0f67333a0eb8aff6d93c4b8f2910fc"}, ] [package.dependencies] diff --git a/reference.md b/reference.md index 440a0bc8..4085e653 100644 --- a/reference.md +++ b/reference.md @@ -1298,6 +1298,14 @@ client.accounts.transfer_ownership(
+**message:** `typing.Optional[str]` — A note from the partner, shown as a quote in the invite email and signed with their name. Requires `as_partner`; sending it on an ordinary transfer is a 400. Omit it and the email sends without a note. + +
+
+ +
+
+ **request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -4229,7 +4237,7 @@ client.ads.create()
-**url_parameters:** `typing.Optional[typing.Dict[str, typing.Any]]` — Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them (utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid). +**url_parameters:** `typing.Optional[typing.Dict[str, typing.Any]]` — Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them. Which keys are reserved depends on the ad's network — Meta: utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid; TikTok: waid, wasid, wacid, ad_id, adset_id, campaign_id, utm_source, utm_medium, utm_placement, utm_whop, tw_source, tw_adid.
@@ -4600,7 +4608,7 @@ client.ads.update(
-**url_parameters:** `typing.Optional[typing.Dict[str, typing.Any]]` — Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them (utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid). +**url_parameters:** `typing.Optional[typing.Dict[str, typing.Any]]` — Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them. Which keys are reserved depends on the ad's network — Meta: utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid; TikTok: waid, wasid, wacid, ad_id, adset_id, campaign_id, utm_source, utm_medium, utm_placement, utm_whop, tw_source, tw_adid.
@@ -17186,7 +17194,7 @@ client.events.list()
-**source:** `typing.Optional[str]` — Canonical source path, exact or with a trailing :* prefix (whop::*, ext:meta:*, referrer:, direct). Restricts the list to conversion targets attributed to that source — the debuggability twin of a metric cell's source parameter. +**source:** `typing.Optional[str]` — Canonical source path, exact or with a trailing :* prefix (whop::*, ext:meta:*, referrer:, direct). Restricts the list to conversion targets attributed to that source — the debuggability twin of a metric cell's source parameter. A whop:... source combined with non-conversion event names (event=pixel.page) instead lists the events whose ad click resolved to that entity — the page views an ad drove.
@@ -19222,7 +19230,7 @@ client.files.list(
-Creates a file and returns a presigned destination to upload its bytes to. PUT the bytes to `upload_url` (single-part), or to each of `multipart_upload_urls` and then call Complete File Multipart Upload. Once the bytes land the file becomes `ready`, and its ID can be attached wherever a file is accepted — account legal documents, dispute evidence documents. +Creates a file and returns a presigned destination to upload its bytes to. PUT the bytes to `upload_url` (single-part), or to each of `multipart_upload_urls` and then call Complete File Multipart Upload. Once the bytes land the file becomes `ready`, and its ID can be attached wherever a file is accepted — account legal documents, dispute evidence documents. For a step-by-step walkthrough of single-part and multipart uploads, see the [direct file uploads guide](/developer/guides/direct-file-uploads).
@@ -19392,7 +19400,7 @@ client.files.retrieve(
-Assembles the parts of a multipart upload after every part has been PUT to its presigned URL. Pass the `multipart_upload_id` from Create File and each part's `ETag` response header. +Assembles the parts of a multipart upload after every part has been PUT to its presigned URL. Pass the `multipart_upload_id` from Create File and each part's `ETag` response header. For a step-by-step walkthrough of multipart uploads, see the [direct file uploads guide](/developer/guides/direct-file-uploads).
@@ -19577,6 +19585,14 @@ client.financial_activity.list()
+**resource_id:** `typing.Optional[str]` — Optional prefixed resource ID. Returns activity associated with that resource. + +
+
+ +
+
+ **currency:** `typing.Optional[str]` — Optional currency code filter, for example `usd`.
@@ -36920,7 +36936,7 @@ client.transfers.list_recipients(
-**query:** `typing.Optional[str]` — Search anyone on Whop by name or username, plus your own accounts by name or ID. Omit it to get the team around the balance, the people you follow, and your own accounts. The list is the same whether the balance belongs to a company or to you. Searching from a `biz_` origin additionally requires the member:basic:read scope. A credential scoped to a single company is the exception to the search itself: it only ever sees that company's own people. Complete email addresses return no matches. +**query:** `typing.Optional[str]` — Search anyone on Whop by name or username, plus your own accounts by name or ID. An exact business ID (`biz_`) returns that business first. Omit it to get the team around the balance, the people you follow, and your own accounts. The list is the same whether the balance belongs to a company or to you. Searching from a `biz_` origin additionally requires the member:basic:read scope. A credential scoped to a single company is the exception to the search itself: it only ever sees that company's own people. Complete email addresses return no matches.
@@ -40057,6 +40073,125 @@ client.bounties.submissions.retrieve(
+ +
+ + +## FinancialReports Breakdown +
client.financial_reports.breakdown.retrieve(...) -> RetrieveBreakdownResponse +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Returns the top entities behind one high-level financial report bucket and an aggregate remainder. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```python +from whop_sdk import Whop +from whop_sdk.environment import WhopEnvironment + +client = Whop( + token="", + environment=WhopEnvironment.DEFAULT, +) + +client.financial_reports.breakdown.retrieve( + account_id="account_id", + bucket="transfers", + direction="money_in", + currency="currency", + from_date="from_date", + to_date="to_date", +) + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**account_id:** `str` — The owning account ID (a biz_ identifier). + +
+
+ +
+
+ +**bucket:** `RetrieveBreakdownRequestBucket` — The high-level report bucket to explain. + +
+
+ +
+
+ +**direction:** `RetrieveBreakdownRequestDirection` — Whether to explain money received or money sent. + +
+
+ +
+
+ +**currency:** `str` — The report currency to explain. + +
+
+ +
+
+ +**from_date:** `str` — Start of the report window as an ISO 8601 timestamp. + +
+
+ +
+
+ +**to_date:** `str` — Exclusive end of the report window as an ISO 8601 timestamp. + +
+
+ +
+
+ +**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. + +
+
+
+
+ +
diff --git a/src/whop_sdk/accounts/client.py b/src/whop_sdk/accounts/client.py index a1b6da90..cfd1d054 100644 --- a/src/whop_sdk/accounts/client.py +++ b/src/whop_sdk/accounts/client.py @@ -693,6 +693,7 @@ def transfer_ownership( *, identifier: str, as_partner: typing.Optional[bool] = OMIT, + message: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> TransferOwnershipAccountsResponse: """ @@ -709,6 +710,9 @@ def transfer_ownership( as_partner : typing.Optional[bool] If true, the current owner is credited as the account's Whop partner, earning partner commission on its sales. Requires the current owner to already be an enrolled Whop partner. Skipped if the account already has an active partner. + message : typing.Optional[str] + A note from the partner, shown as a quote in the invite email and signed with their name. Requires `as_partner`; sending it on an ordinary transfer is a 400. Omit it and the email sends without a note. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -732,7 +736,7 @@ def transfer_ownership( ) """ _response = self._raw_client.transfer_ownership( - id, identifier=identifier, as_partner=as_partner, request_options=request_options + id, identifier=identifier, as_partner=as_partner, message=message, request_options=request_options ) return _response.data @@ -1448,6 +1452,7 @@ async def transfer_ownership( *, identifier: str, as_partner: typing.Optional[bool] = OMIT, + message: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> TransferOwnershipAccountsResponse: """ @@ -1464,6 +1469,9 @@ async def transfer_ownership( as_partner : typing.Optional[bool] If true, the current owner is credited as the account's Whop partner, earning partner commission on its sales. Requires the current owner to already be an enrolled Whop partner. Skipped if the account already has an active partner. + message : typing.Optional[str] + A note from the partner, shown as a quote in the invite email and signed with their name. Requires `as_partner`; sending it on an ordinary transfer is a 400. Omit it and the email sends without a note. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -1495,7 +1503,7 @@ async def main() -> None: asyncio.run(main()) """ _response = await self._raw_client.transfer_ownership( - id, identifier=identifier, as_partner=as_partner, request_options=request_options + id, identifier=identifier, as_partner=as_partner, message=message, request_options=request_options ) return _response.data diff --git a/src/whop_sdk/accounts/raw_client.py b/src/whop_sdk/accounts/raw_client.py index 1926a7e7..3f5b25be 100644 --- a/src/whop_sdk/accounts/raw_client.py +++ b/src/whop_sdk/accounts/raw_client.py @@ -979,6 +979,7 @@ def transfer_ownership( *, identifier: str, as_partner: typing.Optional[bool] = OMIT, + message: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[TransferOwnershipAccountsResponse]: """ @@ -995,6 +996,9 @@ def transfer_ownership( as_partner : typing.Optional[bool] If true, the current owner is credited as the account's Whop partner, earning partner commission on its sales. Requires the current owner to already be an enrolled Whop partner. Skipped if the account already has an active partner. + message : typing.Optional[str] + A note from the partner, shown as a quote in the invite email and signed with their name. Requires `as_partner`; sending it on an ordinary transfer is a 400. Omit it and the email sends without a note. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -1009,6 +1013,7 @@ def transfer_ownership( json={ "as_partner": as_partner, "identifier": identifier, + "message": message, }, headers={ "content-type": "application/json", @@ -1986,6 +1991,7 @@ async def transfer_ownership( *, identifier: str, as_partner: typing.Optional[bool] = OMIT, + message: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[TransferOwnershipAccountsResponse]: """ @@ -2002,6 +2008,9 @@ async def transfer_ownership( as_partner : typing.Optional[bool] If true, the current owner is credited as the account's Whop partner, earning partner commission on its sales. Requires the current owner to already be an enrolled Whop partner. Skipped if the account already has an active partner. + message : typing.Optional[str] + A note from the partner, shown as a quote in the invite email and signed with their name. Requires `as_partner`; sending it on an ordinary transfer is a 400. Omit it and the email sends without a note. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -2016,6 +2025,7 @@ async def transfer_ownership( json={ "as_partner": as_partner, "identifier": identifier, + "message": message, }, headers={ "content-type": "application/json", diff --git a/src/whop_sdk/ads/client.py b/src/whop_sdk/ads/client.py index b297ad85..03932f55 100644 --- a/src/whop_sdk/ads/client.py +++ b/src/whop_sdk/ads/client.py @@ -259,7 +259,7 @@ def create( The URL the ad links to. Query parameters are merged into url_parameters, so the stored URL is always bare. url_parameters : typing.Optional[typing.Dict[str, typing.Any]] - Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them (utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid). + Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them. Which keys are reserved depends on the ad's network — Meta: utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid; TikTok: waid, wasid, wacid, ad_id, adset_id, campaign_id, utm_source, utm_medium, utm_placement, utm_whop, tw_source, tw_adid. request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -468,7 +468,7 @@ def update( The URL the ad links to. Query parameters are merged into url_parameters, so the stored URL is always bare. url_parameters : typing.Optional[typing.Dict[str, typing.Any]] - Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them (utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid). + Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them. Which keys are reserved depends on the ad's network — Meta: utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid; TikTok: waid, wasid, wacid, ad_id, adset_id, campaign_id, utm_source, utm_medium, utm_placement, utm_whop, tw_source, tw_adid. request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -871,7 +871,7 @@ async def create( The URL the ad links to. Query parameters are merged into url_parameters, so the stored URL is always bare. url_parameters : typing.Optional[typing.Dict[str, typing.Any]] - Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them (utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid). + Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them. Which keys are reserved depends on the ad's network — Meta: utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid; TikTok: waid, wasid, wacid, ad_id, adset_id, campaign_id, utm_source, utm_medium, utm_placement, utm_whop, tw_source, tw_adid. request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -1104,7 +1104,7 @@ async def update( The URL the ad links to. Query parameters are merged into url_parameters, so the stored URL is always bare. url_parameters : typing.Optional[typing.Dict[str, typing.Any]] - Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them (utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid). + Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them. Which keys are reserved depends on the ad's network — Meta: utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid; TikTok: waid, wasid, wacid, ad_id, adset_id, campaign_id, utm_source, utm_medium, utm_placement, utm_whop, tw_source, tw_adid. request_options : typing.Optional[RequestOptions] Request-specific configuration. diff --git a/src/whop_sdk/ads/raw_client.py b/src/whop_sdk/ads/raw_client.py index b0fae2d2..12dcf2be 100644 --- a/src/whop_sdk/ads/raw_client.py +++ b/src/whop_sdk/ads/raw_client.py @@ -313,7 +313,7 @@ def create( The URL the ad links to. Query parameters are merged into url_parameters, so the stored URL is always bare. url_parameters : typing.Optional[typing.Dict[str, typing.Any]] - Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them (utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid). + Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them. Which keys are reserved depends on the ad's network — Meta: utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid; TikTok: waid, wasid, wacid, ad_id, adset_id, campaign_id, utm_source, utm_medium, utm_placement, utm_whop, tw_source, tw_adid. request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -618,7 +618,7 @@ def update( The URL the ad links to. Query parameters are merged into url_parameters, so the stored URL is always bare. url_parameters : typing.Optional[typing.Dict[str, typing.Any]] - Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them (utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid). + Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them. Which keys are reserved depends on the ad's network — Meta: utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid; TikTok: waid, wasid, wacid, ad_id, adset_id, campaign_id, utm_source, utm_medium, utm_placement, utm_whop, tw_source, tw_adid. request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -1160,7 +1160,7 @@ async def create( The URL the ad links to. Query parameters are merged into url_parameters, so the stored URL is always bare. url_parameters : typing.Optional[typing.Dict[str, typing.Any]] - Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them (utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid). + Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them. Which keys are reserved depends on the ad's network — Meta: utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid; TikTok: waid, wasid, wacid, ad_id, adset_id, campaign_id, utm_source, utm_medium, utm_placement, utm_whop, tw_source, tw_adid. request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -1465,7 +1465,7 @@ async def update( The URL the ad links to. Query parameters are merged into url_parameters, so the stored URL is always bare. url_parameters : typing.Optional[typing.Dict[str, typing.Any]] - Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them (utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid). + Query parameters to append to the destination URL, keyed by parameter name. Merged with any query string on `url`. Whop adds its own click-attribution parameters; those are reserved and rejected if you set them. Which keys are reserved depends on the ad's network — Meta: utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid; TikTok: waid, wasid, wacid, ad_id, adset_id, campaign_id, utm_source, utm_medium, utm_placement, utm_whop, tw_source, tw_adid. request_options : typing.Optional[RequestOptions] Request-specific configuration. diff --git a/src/whop_sdk/events/client.py b/src/whop_sdk/events/client.py index da31a579..7ff819b0 100644 --- a/src/whop_sdk/events/client.py +++ b/src/whop_sdk/events/client.py @@ -96,7 +96,7 @@ def list( Full event names to filter by, comma-separated (payment.completed, pixel.lead, pixel.page, pixel.custom:) — the same vocabulary the events / people metrics use. source : typing.Optional[str] - Canonical source path, exact or with a trailing :* prefix (whop::*, ext:meta:*, referrer:, direct). Restricts the list to conversion targets attributed to that source — the debuggability twin of a metric cell's source parameter. + Canonical source path, exact or with a trailing :* prefix (whop::*, ext:meta:*, referrer:, direct). Restricts the list to conversion targets attributed to that source — the debuggability twin of a metric cell's source parameter. A whop:... source combined with non-conversion event names (event=pixel.page) instead lists the events whose ad click resolved to that entity — the page views an ad drove. attribution_model : typing.Optional[ListEventsRequestAttributionModel] Attribution model for the source filter (defaults to last_touch). @@ -478,7 +478,7 @@ async def list( Full event names to filter by, comma-separated (payment.completed, pixel.lead, pixel.page, pixel.custom:) — the same vocabulary the events / people metrics use. source : typing.Optional[str] - Canonical source path, exact or with a trailing :* prefix (whop::*, ext:meta:*, referrer:, direct). Restricts the list to conversion targets attributed to that source — the debuggability twin of a metric cell's source parameter. + Canonical source path, exact or with a trailing :* prefix (whop::*, ext:meta:*, referrer:, direct). Restricts the list to conversion targets attributed to that source — the debuggability twin of a metric cell's source parameter. A whop:... source combined with non-conversion event names (event=pixel.page) instead lists the events whose ad click resolved to that entity — the page views an ad drove. attribution_model : typing.Optional[ListEventsRequestAttributionModel] Attribution model for the source filter (defaults to last_touch). diff --git a/src/whop_sdk/events/raw_client.py b/src/whop_sdk/events/raw_client.py index e72ddf10..0517950a 100644 --- a/src/whop_sdk/events/raw_client.py +++ b/src/whop_sdk/events/raw_client.py @@ -98,7 +98,7 @@ def list( Full event names to filter by, comma-separated (payment.completed, pixel.lead, pixel.page, pixel.custom:) — the same vocabulary the events / people metrics use. source : typing.Optional[str] - Canonical source path, exact or with a trailing :* prefix (whop::*, ext:meta:*, referrer:, direct). Restricts the list to conversion targets attributed to that source — the debuggability twin of a metric cell's source parameter. + Canonical source path, exact or with a trailing :* prefix (whop::*, ext:meta:*, referrer:, direct). Restricts the list to conversion targets attributed to that source — the debuggability twin of a metric cell's source parameter. A whop:... source combined with non-conversion event names (event=pixel.page) instead lists the events whose ad click resolved to that entity — the page views an ad drove. attribution_model : typing.Optional[ListEventsRequestAttributionModel] Attribution model for the source filter (defaults to last_touch). @@ -647,7 +647,7 @@ async def list( Full event names to filter by, comma-separated (payment.completed, pixel.lead, pixel.page, pixel.custom:) — the same vocabulary the events / people metrics use. source : typing.Optional[str] - Canonical source path, exact or with a trailing :* prefix (whop::*, ext:meta:*, referrer:, direct). Restricts the list to conversion targets attributed to that source — the debuggability twin of a metric cell's source parameter. + Canonical source path, exact or with a trailing :* prefix (whop::*, ext:meta:*, referrer:, direct). Restricts the list to conversion targets attributed to that source — the debuggability twin of a metric cell's source parameter. A whop:... source combined with non-conversion event names (event=pixel.page) instead lists the events whose ad click resolved to that entity — the page views an ad drove. attribution_model : typing.Optional[ListEventsRequestAttributionModel] Attribution model for the source filter (defaults to last_touch). diff --git a/src/whop_sdk/files/client.py b/src/whop_sdk/files/client.py index 3323b19e..db6694e3 100644 --- a/src/whop_sdk/files/client.py +++ b/src/whop_sdk/files/client.py @@ -117,7 +117,7 @@ def create( request_options: typing.Optional[RequestOptions] = None, ) -> File: """ - Creates a file and returns a presigned destination to upload its bytes to. PUT the bytes to `upload_url` (single-part), or to each of `multipart_upload_urls` and then call Complete File Multipart Upload. Once the bytes land the file becomes `ready`, and its ID can be attached wherever a file is accepted — account legal documents, dispute evidence documents. + Creates a file and returns a presigned destination to upload its bytes to. PUT the bytes to `upload_url` (single-part), or to each of `multipart_upload_urls` and then call Complete File Multipart Upload. Once the bytes land the file becomes `ready`, and its ID can be attached wherever a file is accepted — account legal documents, dispute evidence documents. For a step-by-step walkthrough of single-part and multipart uploads, see the [direct file uploads guide](/developer/guides/direct-file-uploads). Parameters ---------- @@ -205,7 +205,7 @@ def complete( request_options: typing.Optional[RequestOptions] = None, ) -> File: """ - Assembles the parts of a multipart upload after every part has been PUT to its presigned URL. Pass the `multipart_upload_id` from Create File and each part's `ETag` response header. + Assembles the parts of a multipart upload after every part has been PUT to its presigned URL. Pass the `multipart_upload_id` from Create File and each part's `ETag` response header. For a step-by-step walkthrough of multipart uploads, see the [direct file uploads guide](/developer/guides/direct-file-uploads). Parameters ---------- @@ -365,7 +365,7 @@ async def create( request_options: typing.Optional[RequestOptions] = None, ) -> File: """ - Creates a file and returns a presigned destination to upload its bytes to. PUT the bytes to `upload_url` (single-part), or to each of `multipart_upload_urls` and then call Complete File Multipart Upload. Once the bytes land the file becomes `ready`, and its ID can be attached wherever a file is accepted — account legal documents, dispute evidence documents. + Creates a file and returns a presigned destination to upload its bytes to. PUT the bytes to `upload_url` (single-part), or to each of `multipart_upload_urls` and then call Complete File Multipart Upload. Once the bytes land the file becomes `ready`, and its ID can be attached wherever a file is accepted — account legal documents, dispute evidence documents. For a step-by-step walkthrough of single-part and multipart uploads, see the [direct file uploads guide](/developer/guides/direct-file-uploads). Parameters ---------- @@ -469,7 +469,7 @@ async def complete( request_options: typing.Optional[RequestOptions] = None, ) -> File: """ - Assembles the parts of a multipart upload after every part has been PUT to its presigned URL. Pass the `multipart_upload_id` from Create File and each part's `ETag` response header. + Assembles the parts of a multipart upload after every part has been PUT to its presigned URL. Pass the `multipart_upload_id` from Create File and each part's `ETag` response header. For a step-by-step walkthrough of multipart uploads, see the [direct file uploads guide](/developer/guides/direct-file-uploads). Parameters ---------- diff --git a/src/whop_sdk/files/raw_client.py b/src/whop_sdk/files/raw_client.py index 83142513..ccfe362a 100644 --- a/src/whop_sdk/files/raw_client.py +++ b/src/whop_sdk/files/raw_client.py @@ -160,7 +160,7 @@ def create( request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[File]: """ - Creates a file and returns a presigned destination to upload its bytes to. PUT the bytes to `upload_url` (single-part), or to each of `multipart_upload_urls` and then call Complete File Multipart Upload. Once the bytes land the file becomes `ready`, and its ID can be attached wherever a file is accepted — account legal documents, dispute evidence documents. + Creates a file and returns a presigned destination to upload its bytes to. PUT the bytes to `upload_url` (single-part), or to each of `multipart_upload_urls` and then call Complete File Multipart Upload. Once the bytes land the file becomes `ready`, and its ID can be attached wherever a file is accepted — account legal documents, dispute evidence documents. For a step-by-step walkthrough of single-part and multipart uploads, see the [direct file uploads guide](/developer/guides/direct-file-uploads). Parameters ---------- @@ -323,7 +323,7 @@ def complete( request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[File]: """ - Assembles the parts of a multipart upload after every part has been PUT to its presigned URL. Pass the `multipart_upload_id` from Create File and each part's `ETag` response header. + Assembles the parts of a multipart upload after every part has been PUT to its presigned URL. Pass the `multipart_upload_id` from Create File and each part's `ETag` response header. For a step-by-step walkthrough of multipart uploads, see the [direct file uploads guide](/developer/guides/direct-file-uploads). Parameters ---------- @@ -559,7 +559,7 @@ async def create( request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[File]: """ - Creates a file and returns a presigned destination to upload its bytes to. PUT the bytes to `upload_url` (single-part), or to each of `multipart_upload_urls` and then call Complete File Multipart Upload. Once the bytes land the file becomes `ready`, and its ID can be attached wherever a file is accepted — account legal documents, dispute evidence documents. + Creates a file and returns a presigned destination to upload its bytes to. PUT the bytes to `upload_url` (single-part), or to each of `multipart_upload_urls` and then call Complete File Multipart Upload. Once the bytes land the file becomes `ready`, and its ID can be attached wherever a file is accepted — account legal documents, dispute evidence documents. For a step-by-step walkthrough of single-part and multipart uploads, see the [direct file uploads guide](/developer/guides/direct-file-uploads). Parameters ---------- @@ -724,7 +724,7 @@ async def complete( request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[File]: """ - Assembles the parts of a multipart upload after every part has been PUT to its presigned URL. Pass the `multipart_upload_id` from Create File and each part's `ETag` response header. + Assembles the parts of a multipart upload after every part has been PUT to its presigned URL. Pass the `multipart_upload_id` from Create File and each part's `ETag` response header. For a step-by-step walkthrough of multipart uploads, see the [direct file uploads guide](/developer/guides/direct-file-uploads). Parameters ---------- diff --git a/src/whop_sdk/financial_activity/client.py b/src/whop_sdk/financial_activity/client.py index 6ec37463..c8ee66d8 100644 --- a/src/whop_sdk/financial_activity/client.py +++ b/src/whop_sdk/financial_activity/client.py @@ -39,6 +39,7 @@ def list( ] ] = None, direction: typing.Optional[ListFinancialActivityRequestDirection] = None, + resource_id: typing.Optional[str] = None, currency: typing.Optional[str] = None, posted_after: typing.Optional[dt.datetime] = None, posted_before: typing.Optional[dt.datetime] = None, @@ -71,6 +72,9 @@ def list( direction : typing.Optional[ListFinancialActivityRequestDirection] Optional direction filter. `money_in` returns positive activity and `money_out` returns negative activity. + resource_id : typing.Optional[str] + Optional prefixed resource ID. Returns activity associated with that resource. + currency : typing.Optional[str] Optional currency code filter, for example `usd`. @@ -118,6 +122,7 @@ def list( include_resource=include_resource, line_types=line_types, direction=direction, + resource_id=resource_id, currency=currency, posted_after=posted_after, posted_before=posted_before, @@ -158,6 +163,7 @@ async def list( ] ] = None, direction: typing.Optional[ListFinancialActivityRequestDirection] = None, + resource_id: typing.Optional[str] = None, currency: typing.Optional[str] = None, posted_after: typing.Optional[dt.datetime] = None, posted_before: typing.Optional[dt.datetime] = None, @@ -190,6 +196,9 @@ async def list( direction : typing.Optional[ListFinancialActivityRequestDirection] Optional direction filter. `money_in` returns positive activity and `money_out` returns negative activity. + resource_id : typing.Optional[str] + Optional prefixed resource ID. Returns activity associated with that resource. + currency : typing.Optional[str] Optional currency code filter, for example `usd`. @@ -245,6 +254,7 @@ async def main() -> None: include_resource=include_resource, line_types=line_types, direction=direction, + resource_id=resource_id, currency=currency, posted_after=posted_after, posted_before=posted_before, diff --git a/src/whop_sdk/financial_activity/raw_client.py b/src/whop_sdk/financial_activity/raw_client.py index 697ad0ee..c5bf5710 100644 --- a/src/whop_sdk/financial_activity/raw_client.py +++ b/src/whop_sdk/financial_activity/raw_client.py @@ -38,6 +38,7 @@ def list( ] ] = None, direction: typing.Optional[ListFinancialActivityRequestDirection] = None, + resource_id: typing.Optional[str] = None, currency: typing.Optional[str] = None, posted_after: typing.Optional[dt.datetime] = None, posted_before: typing.Optional[dt.datetime] = None, @@ -70,6 +71,9 @@ def list( direction : typing.Optional[ListFinancialActivityRequestDirection] Optional direction filter. `money_in` returns positive activity and `money_out` returns negative activity. + resource_id : typing.Optional[str] + Optional prefixed resource ID. Returns activity associated with that resource. + currency : typing.Optional[str] Optional currency code filter, for example `usd`. @@ -109,6 +113,7 @@ def list( "include_resource": include_resource, "line_types": line_types, "direction": direction, + "resource_id": resource_id, "currency": currency, "posted_after": serialize_datetime(posted_after) if posted_after is not None else None, "posted_before": serialize_datetime(posted_before) if posted_before is not None else None, @@ -200,6 +205,7 @@ async def list( ] ] = None, direction: typing.Optional[ListFinancialActivityRequestDirection] = None, + resource_id: typing.Optional[str] = None, currency: typing.Optional[str] = None, posted_after: typing.Optional[dt.datetime] = None, posted_before: typing.Optional[dt.datetime] = None, @@ -232,6 +238,9 @@ async def list( direction : typing.Optional[ListFinancialActivityRequestDirection] Optional direction filter. `money_in` returns positive activity and `money_out` returns negative activity. + resource_id : typing.Optional[str] + Optional prefixed resource ID. Returns activity associated with that resource. + currency : typing.Optional[str] Optional currency code filter, for example `usd`. @@ -271,6 +280,7 @@ async def list( "include_resource": include_resource, "line_types": line_types, "direction": direction, + "resource_id": resource_id, "currency": currency, "posted_after": serialize_datetime(posted_after) if posted_after is not None else None, "posted_before": serialize_datetime(posted_before) if posted_before is not None else None, diff --git a/src/whop_sdk/financial_reports/__init__.py b/src/whop_sdk/financial_reports/__init__.py index cfc11a3b..aaf95aa4 100644 --- a/src/whop_sdk/financial_reports/__init__.py +++ b/src/whop_sdk/financial_reports/__init__.py @@ -20,7 +20,28 @@ RetrieveFinancialReportsResponseRowsItemLineCategory, RetrieveFinancialReportsResponseRowsItemProfitAndLossSection, ) + from . import breakdown + from .breakdown import ( + RetrieveBreakdownRequestBucket, + RetrieveBreakdownRequestDirection, + RetrieveBreakdownResponse, + RetrieveBreakdownResponseActivityFilters, + RetrieveBreakdownResponseActivityFiltersDirection, + RetrieveBreakdownResponseBucket, + RetrieveBreakdownResponseDirection, + RetrieveBreakdownResponseItemsItem, + RetrieveBreakdownResponseItemsItemObject, + ) _dynamic_imports: typing.Dict[str, str] = { + "RetrieveBreakdownRequestBucket": ".breakdown", + "RetrieveBreakdownRequestDirection": ".breakdown", + "RetrieveBreakdownResponse": ".breakdown", + "RetrieveBreakdownResponseActivityFilters": ".breakdown", + "RetrieveBreakdownResponseActivityFiltersDirection": ".breakdown", + "RetrieveBreakdownResponseBucket": ".breakdown", + "RetrieveBreakdownResponseDirection": ".breakdown", + "RetrieveBreakdownResponseItemsItem": ".breakdown", + "RetrieveBreakdownResponseItemsItemObject": ".breakdown", "RetrieveFinancialReportsRequestDirection": ".types", "RetrieveFinancialReportsRequestGroupBy": ".types", "RetrieveFinancialReportsRequestLineTypesItem": ".types", @@ -33,6 +54,7 @@ "RetrieveFinancialReportsResponseRowsItemGrouping": ".types", "RetrieveFinancialReportsResponseRowsItemLineCategory": ".types", "RetrieveFinancialReportsResponseRowsItemProfitAndLossSection": ".types", + "breakdown": ".breakdown", } @@ -58,6 +80,15 @@ def __dir__(): __all__ = [ + "RetrieveBreakdownRequestBucket", + "RetrieveBreakdownRequestDirection", + "RetrieveBreakdownResponse", + "RetrieveBreakdownResponseActivityFilters", + "RetrieveBreakdownResponseActivityFiltersDirection", + "RetrieveBreakdownResponseBucket", + "RetrieveBreakdownResponseDirection", + "RetrieveBreakdownResponseItemsItem", + "RetrieveBreakdownResponseItemsItemObject", "RetrieveFinancialReportsRequestDirection", "RetrieveFinancialReportsRequestGroupBy", "RetrieveFinancialReportsRequestLineTypesItem", @@ -70,4 +101,5 @@ def __dir__(): "RetrieveFinancialReportsResponseRowsItemGrouping", "RetrieveFinancialReportsResponseRowsItemLineCategory", "RetrieveFinancialReportsResponseRowsItemProfitAndLossSection", + "breakdown", ] diff --git a/src/whop_sdk/financial_reports/breakdown/__init__.py b/src/whop_sdk/financial_reports/breakdown/__init__.py new file mode 100644 index 00000000..363136d3 --- /dev/null +++ b/src/whop_sdk/financial_reports/breakdown/__init__.py @@ -0,0 +1,64 @@ +# This file was auto-generated by Fern from our API Definition. + +# isort: skip_file + +import typing +from importlib import import_module + +if typing.TYPE_CHECKING: + from .types import ( + RetrieveBreakdownRequestBucket, + RetrieveBreakdownRequestDirection, + RetrieveBreakdownResponse, + RetrieveBreakdownResponseActivityFilters, + RetrieveBreakdownResponseActivityFiltersDirection, + RetrieveBreakdownResponseBucket, + RetrieveBreakdownResponseDirection, + RetrieveBreakdownResponseItemsItem, + RetrieveBreakdownResponseItemsItemObject, + ) +_dynamic_imports: typing.Dict[str, str] = { + "RetrieveBreakdownRequestBucket": ".types", + "RetrieveBreakdownRequestDirection": ".types", + "RetrieveBreakdownResponse": ".types", + "RetrieveBreakdownResponseActivityFilters": ".types", + "RetrieveBreakdownResponseActivityFiltersDirection": ".types", + "RetrieveBreakdownResponseBucket": ".types", + "RetrieveBreakdownResponseDirection": ".types", + "RetrieveBreakdownResponseItemsItem": ".types", + "RetrieveBreakdownResponseItemsItemObject": ".types", +} + + +def __getattr__(attr_name: str) -> typing.Any: + module_name = _dynamic_imports.get(attr_name) + if module_name is None: + raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}") + try: + module = import_module(module_name, __package__) + if module_name == f".{attr_name}": + return module + else: + return getattr(module, attr_name) + except ImportError as e: + raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e + except AttributeError as e: + raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e + + +def __dir__(): + lazy_attrs = list(_dynamic_imports.keys()) + return sorted(lazy_attrs) + + +__all__ = [ + "RetrieveBreakdownRequestBucket", + "RetrieveBreakdownRequestDirection", + "RetrieveBreakdownResponse", + "RetrieveBreakdownResponseActivityFilters", + "RetrieveBreakdownResponseActivityFiltersDirection", + "RetrieveBreakdownResponseBucket", + "RetrieveBreakdownResponseDirection", + "RetrieveBreakdownResponseItemsItem", + "RetrieveBreakdownResponseItemsItemObject", +] diff --git a/src/whop_sdk/financial_reports/breakdown/client.py b/src/whop_sdk/financial_reports/breakdown/client.py new file mode 100644 index 00000000..7a0f1535 --- /dev/null +++ b/src/whop_sdk/financial_reports/breakdown/client.py @@ -0,0 +1,192 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from ...core.request_options import RequestOptions +from .raw_client import AsyncRawBreakdownClient, RawBreakdownClient +from .types.retrieve_breakdown_request_bucket import RetrieveBreakdownRequestBucket +from .types.retrieve_breakdown_request_direction import RetrieveBreakdownRequestDirection +from .types.retrieve_breakdown_response import RetrieveBreakdownResponse + + +class BreakdownClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._raw_client = RawBreakdownClient(client_wrapper=client_wrapper) + + @property + def with_raw_response(self) -> RawBreakdownClient: + """ + Retrieves a raw implementation of this client that returns raw responses. + + Returns + ------- + RawBreakdownClient + """ + return self._raw_client + + def retrieve( + self, + *, + account_id: str, + bucket: RetrieveBreakdownRequestBucket, + direction: RetrieveBreakdownRequestDirection, + currency: str, + from_date: str, + to_date: str, + request_options: typing.Optional[RequestOptions] = None, + ) -> RetrieveBreakdownResponse: + """ + Returns the top entities behind one high-level financial report bucket and an aggregate remainder. + + Parameters + ---------- + account_id : str + The owning account ID (a biz_ identifier). + + bucket : RetrieveBreakdownRequestBucket + The high-level report bucket to explain. + + direction : RetrieveBreakdownRequestDirection + Whether to explain money received or money sent. + + currency : str + The report currency to explain. + + from_date : str + Start of the report window as an ISO 8601 timestamp. + + to_date : str + Exclusive end of the report window as an ISO 8601 timestamp. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + RetrieveBreakdownResponse + breakdown returned + + Examples + -------- + from whop_sdk import Whop + + client = Whop( + "2026-08-25-2", + idempotency_key="YOUR_IDEMPOTENCY_KEY", + token="YOUR_TOKEN", + ) + client.financial_reports.breakdown.retrieve( + account_id="account_id", + bucket="transfers", + direction="money_in", + currency="currency", + from_date="from_date", + to_date="to_date", + ) + """ + _response = self._raw_client.retrieve( + account_id=account_id, + bucket=bucket, + direction=direction, + currency=currency, + from_date=from_date, + to_date=to_date, + request_options=request_options, + ) + return _response.data + + +class AsyncBreakdownClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._raw_client = AsyncRawBreakdownClient(client_wrapper=client_wrapper) + + @property + def with_raw_response(self) -> AsyncRawBreakdownClient: + """ + Retrieves a raw implementation of this client that returns raw responses. + + Returns + ------- + AsyncRawBreakdownClient + """ + return self._raw_client + + async def retrieve( + self, + *, + account_id: str, + bucket: RetrieveBreakdownRequestBucket, + direction: RetrieveBreakdownRequestDirection, + currency: str, + from_date: str, + to_date: str, + request_options: typing.Optional[RequestOptions] = None, + ) -> RetrieveBreakdownResponse: + """ + Returns the top entities behind one high-level financial report bucket and an aggregate remainder. + + Parameters + ---------- + account_id : str + The owning account ID (a biz_ identifier). + + bucket : RetrieveBreakdownRequestBucket + The high-level report bucket to explain. + + direction : RetrieveBreakdownRequestDirection + Whether to explain money received or money sent. + + currency : str + The report currency to explain. + + from_date : str + Start of the report window as an ISO 8601 timestamp. + + to_date : str + Exclusive end of the report window as an ISO 8601 timestamp. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + RetrieveBreakdownResponse + breakdown returned + + Examples + -------- + import asyncio + + from whop_sdk import AsyncWhop + + client = AsyncWhop( + "2026-08-25-2", + idempotency_key="YOUR_IDEMPOTENCY_KEY", + token="YOUR_TOKEN", + ) + + + async def main() -> None: + await client.financial_reports.breakdown.retrieve( + account_id="account_id", + bucket="transfers", + direction="money_in", + currency="currency", + from_date="from_date", + to_date="to_date", + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.retrieve( + account_id=account_id, + bucket=bucket, + direction=direction, + currency=currency, + from_date=from_date, + to_date=to_date, + request_options=request_options, + ) + return _response.data diff --git a/src/whop_sdk/financial_reports/breakdown/raw_client.py b/src/whop_sdk/financial_reports/breakdown/raw_client.py new file mode 100644 index 00000000..940d60ff --- /dev/null +++ b/src/whop_sdk/financial_reports/breakdown/raw_client.py @@ -0,0 +1,242 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing +from json.decoder import JSONDecodeError + +from ...core.api_error import ApiError +from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper +from ...core.http_response import AsyncHttpResponse, HttpResponse +from ...core.parse_error import ParsingError +from ...core.pydantic_utilities import parse_obj_as +from ...core.request_options import RequestOptions +from ...errors.bad_request_error import BadRequestError +from ...errors.forbidden_error import ForbiddenError +from ...errors.unauthorized_error import UnauthorizedError +from .types.retrieve_breakdown_request_bucket import RetrieveBreakdownRequestBucket +from .types.retrieve_breakdown_request_direction import RetrieveBreakdownRequestDirection +from .types.retrieve_breakdown_response import RetrieveBreakdownResponse +from pydantic import ValidationError + + +class RawBreakdownClient: + def __init__(self, *, client_wrapper: SyncClientWrapper): + self._client_wrapper = client_wrapper + + def retrieve( + self, + *, + account_id: str, + bucket: RetrieveBreakdownRequestBucket, + direction: RetrieveBreakdownRequestDirection, + currency: str, + from_date: str, + to_date: str, + request_options: typing.Optional[RequestOptions] = None, + ) -> HttpResponse[RetrieveBreakdownResponse]: + """ + Returns the top entities behind one high-level financial report bucket and an aggregate remainder. + + Parameters + ---------- + account_id : str + The owning account ID (a biz_ identifier). + + bucket : RetrieveBreakdownRequestBucket + The high-level report bucket to explain. + + direction : RetrieveBreakdownRequestDirection + Whether to explain money received or money sent. + + currency : str + The report currency to explain. + + from_date : str + Start of the report window as an ISO 8601 timestamp. + + to_date : str + Exclusive end of the report window as an ISO 8601 timestamp. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[RetrieveBreakdownResponse] + breakdown returned + """ + _response = self._client_wrapper.httpx_client.request( + "financial_reports/breakdown", + method="GET", + params={ + "account_id": account_id, + "bucket": bucket, + "direction": direction, + "currency": currency, + "from_date": from_date, + "to_date": to_date, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + RetrieveBreakdownResponse, + parse_obj_as( + type_=RetrieveBreakdownResponse, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + if _response.status_code == 400: + raise BadRequestError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 401: + raise UnauthorizedError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) + + +class AsyncRawBreakdownClient: + def __init__(self, *, client_wrapper: AsyncClientWrapper): + self._client_wrapper = client_wrapper + + async def retrieve( + self, + *, + account_id: str, + bucket: RetrieveBreakdownRequestBucket, + direction: RetrieveBreakdownRequestDirection, + currency: str, + from_date: str, + to_date: str, + request_options: typing.Optional[RequestOptions] = None, + ) -> AsyncHttpResponse[RetrieveBreakdownResponse]: + """ + Returns the top entities behind one high-level financial report bucket and an aggregate remainder. + + Parameters + ---------- + account_id : str + The owning account ID (a biz_ identifier). + + bucket : RetrieveBreakdownRequestBucket + The high-level report bucket to explain. + + direction : RetrieveBreakdownRequestDirection + Whether to explain money received or money sent. + + currency : str + The report currency to explain. + + from_date : str + Start of the report window as an ISO 8601 timestamp. + + to_date : str + Exclusive end of the report window as an ISO 8601 timestamp. + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[RetrieveBreakdownResponse] + breakdown returned + """ + _response = await self._client_wrapper.httpx_client.request( + "financial_reports/breakdown", + method="GET", + params={ + "account_id": account_id, + "bucket": bucket, + "direction": direction, + "currency": currency, + "from_date": from_date, + "to_date": to_date, + }, + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + RetrieveBreakdownResponse, + parse_obj_as( + type_=RetrieveBreakdownResponse, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + if _response.status_code == 400: + raise BadRequestError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 401: + raise UnauthorizedError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + if _response.status_code == 403: + raise ForbiddenError( + headers=dict(_response.headers), + body=typing.cast( + typing.Any, + parse_obj_as( + type_=typing.Any, # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) + except ValidationError as e: + raise ParsingError( + status_code=_response.status_code, headers=dict(_response.headers), body=_response.json(), cause=e + ) + raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) diff --git a/src/whop_sdk/financial_reports/breakdown/types/__init__.py b/src/whop_sdk/financial_reports/breakdown/types/__init__.py new file mode 100644 index 00000000..2c36ed09 --- /dev/null +++ b/src/whop_sdk/financial_reports/breakdown/types/__init__.py @@ -0,0 +1,64 @@ +# This file was auto-generated by Fern from our API Definition. + +# isort: skip_file + +import typing +from importlib import import_module + +if typing.TYPE_CHECKING: + from .retrieve_breakdown_request_bucket import RetrieveBreakdownRequestBucket + from .retrieve_breakdown_request_direction import RetrieveBreakdownRequestDirection + from .retrieve_breakdown_response import RetrieveBreakdownResponse + from .retrieve_breakdown_response_activity_filters import RetrieveBreakdownResponseActivityFilters + from .retrieve_breakdown_response_activity_filters_direction import ( + RetrieveBreakdownResponseActivityFiltersDirection, + ) + from .retrieve_breakdown_response_bucket import RetrieveBreakdownResponseBucket + from .retrieve_breakdown_response_direction import RetrieveBreakdownResponseDirection + from .retrieve_breakdown_response_items_item import RetrieveBreakdownResponseItemsItem + from .retrieve_breakdown_response_items_item_object import RetrieveBreakdownResponseItemsItemObject +_dynamic_imports: typing.Dict[str, str] = { + "RetrieveBreakdownRequestBucket": ".retrieve_breakdown_request_bucket", + "RetrieveBreakdownRequestDirection": ".retrieve_breakdown_request_direction", + "RetrieveBreakdownResponse": ".retrieve_breakdown_response", + "RetrieveBreakdownResponseActivityFilters": ".retrieve_breakdown_response_activity_filters", + "RetrieveBreakdownResponseActivityFiltersDirection": ".retrieve_breakdown_response_activity_filters_direction", + "RetrieveBreakdownResponseBucket": ".retrieve_breakdown_response_bucket", + "RetrieveBreakdownResponseDirection": ".retrieve_breakdown_response_direction", + "RetrieveBreakdownResponseItemsItem": ".retrieve_breakdown_response_items_item", + "RetrieveBreakdownResponseItemsItemObject": ".retrieve_breakdown_response_items_item_object", +} + + +def __getattr__(attr_name: str) -> typing.Any: + module_name = _dynamic_imports.get(attr_name) + if module_name is None: + raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}") + try: + module = import_module(module_name, __package__) + if module_name == f".{attr_name}": + return module + else: + return getattr(module, attr_name) + except ImportError as e: + raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e + except AttributeError as e: + raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e + + +def __dir__(): + lazy_attrs = list(_dynamic_imports.keys()) + return sorted(lazy_attrs) + + +__all__ = [ + "RetrieveBreakdownRequestBucket", + "RetrieveBreakdownRequestDirection", + "RetrieveBreakdownResponse", + "RetrieveBreakdownResponseActivityFilters", + "RetrieveBreakdownResponseActivityFiltersDirection", + "RetrieveBreakdownResponseBucket", + "RetrieveBreakdownResponseDirection", + "RetrieveBreakdownResponseItemsItem", + "RetrieveBreakdownResponseItemsItemObject", +] diff --git a/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_request_bucket.py b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_request_bucket.py new file mode 100644 index 00000000..d3378213 --- /dev/null +++ b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_request_bucket.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +RetrieveBreakdownRequestBucket = typing.Union[ + typing.Literal["transfers", "payments", "card_spend", "withdrawals", "swaps"], typing.Any +] diff --git a/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_request_direction.py b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_request_direction.py new file mode 100644 index 00000000..cfa60d4e --- /dev/null +++ b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_request_direction.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +RetrieveBreakdownRequestDirection = typing.Union[typing.Literal["money_in", "money_out"], typing.Any] diff --git a/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response.py b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response.py new file mode 100644 index 00000000..dc6b9472 --- /dev/null +++ b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response.py @@ -0,0 +1,29 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ....types.money import Money +from .retrieve_breakdown_response_activity_filters import RetrieveBreakdownResponseActivityFilters +from .retrieve_breakdown_response_bucket import RetrieveBreakdownResponseBucket +from .retrieve_breakdown_response_direction import RetrieveBreakdownResponseDirection +from .retrieve_breakdown_response_items_item import RetrieveBreakdownResponseItemsItem + + +class RetrieveBreakdownResponse(UniversalBaseModel): + activity_filters: RetrieveBreakdownResponseActivityFilters + bucket: RetrieveBreakdownResponseBucket + currency: str + direction: RetrieveBreakdownResponseDirection + items: typing.List[RetrieveBreakdownResponseItemsItem] + other_amount: typing.Optional[Money] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_activity_filters.py b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_activity_filters.py new file mode 100644 index 00000000..b722acc4 --- /dev/null +++ b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_activity_filters.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .retrieve_breakdown_response_activity_filters_direction import RetrieveBreakdownResponseActivityFiltersDirection + + +class RetrieveBreakdownResponseActivityFilters(UniversalBaseModel): + direction: RetrieveBreakdownResponseActivityFiltersDirection + line_types: typing.List[str] + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_activity_filters_direction.py b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_activity_filters_direction.py new file mode 100644 index 00000000..de65208d --- /dev/null +++ b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_activity_filters_direction.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +RetrieveBreakdownResponseActivityFiltersDirection = typing.Union[typing.Literal["money_in", "money_out"], typing.Any] diff --git a/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_bucket.py b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_bucket.py new file mode 100644 index 00000000..d7962e1c --- /dev/null +++ b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_bucket.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +RetrieveBreakdownResponseBucket = typing.Union[ + typing.Literal["transfers", "payments", "card_spend", "withdrawals", "swaps"], typing.Any +] diff --git a/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_direction.py b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_direction.py new file mode 100644 index 00000000..8a0edb1a --- /dev/null +++ b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_direction.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +RetrieveBreakdownResponseDirection = typing.Union[typing.Literal["money_in", "money_out"], typing.Any] diff --git a/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_items_item.py b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_items_item.py new file mode 100644 index 00000000..1a9b7489 --- /dev/null +++ b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_items_item.py @@ -0,0 +1,33 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from ....types.money import Money +from .retrieve_breakdown_response_items_item_object import RetrieveBreakdownResponseItemsItemObject + + +class RetrieveBreakdownResponseItemsItem(UniversalBaseModel): + amount: Money + image_url: typing.Optional[str] = None + key: str = pydantic.Field() + """ + An opaque identifier for this grouping within the breakdown. + """ + + name: str + object: RetrieveBreakdownResponseItemsItemObject + resource_id: typing.Optional[str] = pydantic.Field(default=None) + """ + The prefixed identifier of the represented Whop resource, when one exists. + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_items_item_object.py b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_items_item_object.py new file mode 100644 index 00000000..68d7923a --- /dev/null +++ b/src/whop_sdk/financial_reports/breakdown/types/retrieve_breakdown_response_items_item_object.py @@ -0,0 +1,7 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +RetrieveBreakdownResponseItemsItemObject = typing.Union[ + typing.Literal["user", "account", "merchant", "payout_destination", "balance"], typing.Any +] diff --git a/src/whop_sdk/financial_reports/client.py b/src/whop_sdk/financial_reports/client.py index 3b14715b..9c30c92b 100644 --- a/src/whop_sdk/financial_reports/client.py +++ b/src/whop_sdk/financial_reports/client.py @@ -1,5 +1,7 @@ # This file was auto-generated by Fern from our API Definition. +from __future__ import annotations + import typing from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper @@ -11,10 +13,15 @@ from .types.retrieve_financial_reports_request_report_type import RetrieveFinancialReportsRequestReportType from .types.retrieve_financial_reports_response import RetrieveFinancialReportsResponse +if typing.TYPE_CHECKING: + from .breakdown.client import AsyncBreakdownClient, BreakdownClient + class FinancialReportsClient: def __init__(self, *, client_wrapper: SyncClientWrapper): self._raw_client = RawFinancialReportsClient(client_wrapper=client_wrapper) + self._client_wrapper = client_wrapper + self._breakdown: typing.Optional[BreakdownClient] = None @property def with_raw_response(self) -> RawFinancialReportsClient: @@ -134,10 +141,20 @@ def retrieve( ) return _response.data + @property + def breakdown(self): + if self._breakdown is None: + from .breakdown.client import BreakdownClient # noqa: E402 + + self._breakdown = BreakdownClient(client_wrapper=self._client_wrapper) + return self._breakdown + class AsyncFinancialReportsClient: def __init__(self, *, client_wrapper: AsyncClientWrapper): self._raw_client = AsyncRawFinancialReportsClient(client_wrapper=client_wrapper) + self._client_wrapper = client_wrapper + self._breakdown: typing.Optional[AsyncBreakdownClient] = None @property def with_raw_response(self) -> AsyncRawFinancialReportsClient: @@ -264,3 +281,11 @@ async def main() -> None: request_options=request_options, ) return _response.data + + @property + def breakdown(self): + if self._breakdown is None: + from .breakdown.client import AsyncBreakdownClient # noqa: E402 + + self._breakdown = AsyncBreakdownClient(client_wrapper=self._client_wrapper) + return self._breakdown diff --git a/src/whop_sdk/partners/__init__.py b/src/whop_sdk/partners/__init__.py index 16a07b45..73c1d7ff 100644 --- a/src/whop_sdk/partners/__init__.py +++ b/src/whop_sdk/partners/__init__.py @@ -31,6 +31,8 @@ ListBusinessesResponse, ListBusinessesResponseDataItem, ListBusinessesResponseDataItemAccount, + ListBusinessesResponseDataItemBlueprintPartner, + ListBusinessesResponseDataItemBlueprintPartnerProfilePicture, ListBusinessesResponseDataItemEarningsUsd, ListBusinessesResponseDataItemFirstTierPartner, ListBusinessesResponseDataItemFirstTierPartnerProfilePicture, @@ -46,6 +48,8 @@ ListBusinessesResponsePageInfo, RetrieveBusinessesResponse, RetrieveBusinessesResponseAccount, + RetrieveBusinessesResponseBlueprintPartner, + RetrieveBusinessesResponseBlueprintPartnerProfilePicture, RetrieveBusinessesResponseEarningsUsd, RetrieveBusinessesResponseFirstTierPartner, RetrieveBusinessesResponseFirstTierPartnerProfilePicture, @@ -76,6 +80,8 @@ "ListBusinessesResponse": ".businesses", "ListBusinessesResponseDataItem": ".businesses", "ListBusinessesResponseDataItemAccount": ".businesses", + "ListBusinessesResponseDataItemBlueprintPartner": ".businesses", + "ListBusinessesResponseDataItemBlueprintPartnerProfilePicture": ".businesses", "ListBusinessesResponseDataItemEarningsUsd": ".businesses", "ListBusinessesResponseDataItemFirstTierPartner": ".businesses", "ListBusinessesResponseDataItemFirstTierPartnerProfilePicture": ".businesses", @@ -96,6 +102,8 @@ "ReferredUsersPartnersResponsePageInfo": ".types", "RetrieveBusinessesResponse": ".businesses", "RetrieveBusinessesResponseAccount": ".businesses", + "RetrieveBusinessesResponseBlueprintPartner": ".businesses", + "RetrieveBusinessesResponseBlueprintPartnerProfilePicture": ".businesses", "RetrieveBusinessesResponseEarningsUsd": ".businesses", "RetrieveBusinessesResponseFirstTierPartner": ".businesses", "RetrieveBusinessesResponseFirstTierPartnerProfilePicture": ".businesses", @@ -150,6 +158,8 @@ def __dir__(): "ListBusinessesResponse", "ListBusinessesResponseDataItem", "ListBusinessesResponseDataItemAccount", + "ListBusinessesResponseDataItemBlueprintPartner", + "ListBusinessesResponseDataItemBlueprintPartnerProfilePicture", "ListBusinessesResponseDataItemEarningsUsd", "ListBusinessesResponseDataItemFirstTierPartner", "ListBusinessesResponseDataItemFirstTierPartnerProfilePicture", @@ -170,6 +180,8 @@ def __dir__(): "ReferredUsersPartnersResponsePageInfo", "RetrieveBusinessesResponse", "RetrieveBusinessesResponseAccount", + "RetrieveBusinessesResponseBlueprintPartner", + "RetrieveBusinessesResponseBlueprintPartnerProfilePicture", "RetrieveBusinessesResponseEarningsUsd", "RetrieveBusinessesResponseFirstTierPartner", "RetrieveBusinessesResponseFirstTierPartnerProfilePicture", diff --git a/src/whop_sdk/partners/businesses/__init__.py b/src/whop_sdk/partners/businesses/__init__.py index 49977190..050cc8d4 100644 --- a/src/whop_sdk/partners/businesses/__init__.py +++ b/src/whop_sdk/partners/businesses/__init__.py @@ -14,6 +14,8 @@ ListBusinessesResponse, ListBusinessesResponseDataItem, ListBusinessesResponseDataItemAccount, + ListBusinessesResponseDataItemBlueprintPartner, + ListBusinessesResponseDataItemBlueprintPartnerProfilePicture, ListBusinessesResponseDataItemEarningsUsd, ListBusinessesResponseDataItemFirstTierPartner, ListBusinessesResponseDataItemFirstTierPartnerProfilePicture, @@ -29,6 +31,8 @@ ListBusinessesResponsePageInfo, RetrieveBusinessesResponse, RetrieveBusinessesResponseAccount, + RetrieveBusinessesResponseBlueprintPartner, + RetrieveBusinessesResponseBlueprintPartnerProfilePicture, RetrieveBusinessesResponseEarningsUsd, RetrieveBusinessesResponseFirstTierPartner, RetrieveBusinessesResponseFirstTierPartnerProfilePicture, @@ -75,6 +79,8 @@ "ListBusinessesResponse": ".types", "ListBusinessesResponseDataItem": ".types", "ListBusinessesResponseDataItemAccount": ".types", + "ListBusinessesResponseDataItemBlueprintPartner": ".types", + "ListBusinessesResponseDataItemBlueprintPartnerProfilePicture": ".types", "ListBusinessesResponseDataItemEarningsUsd": ".types", "ListBusinessesResponseDataItemFirstTierPartner": ".types", "ListBusinessesResponseDataItemFirstTierPartnerProfilePicture": ".types", @@ -112,6 +118,8 @@ "ListEarningsResponsePageInfo": ".earnings", "RetrieveBusinessesResponse": ".types", "RetrieveBusinessesResponseAccount": ".types", + "RetrieveBusinessesResponseBlueprintPartner": ".types", + "RetrieveBusinessesResponseBlueprintPartnerProfilePicture": ".types", "RetrieveBusinessesResponseEarningsUsd": ".types", "RetrieveBusinessesResponseFirstTierPartner": ".types", "RetrieveBusinessesResponseFirstTierPartnerProfilePicture": ".types", @@ -157,6 +165,8 @@ def __dir__(): "ListBusinessesResponse", "ListBusinessesResponseDataItem", "ListBusinessesResponseDataItemAccount", + "ListBusinessesResponseDataItemBlueprintPartner", + "ListBusinessesResponseDataItemBlueprintPartnerProfilePicture", "ListBusinessesResponseDataItemEarningsUsd", "ListBusinessesResponseDataItemFirstTierPartner", "ListBusinessesResponseDataItemFirstTierPartnerProfilePicture", @@ -194,6 +204,8 @@ def __dir__(): "ListEarningsResponsePageInfo", "RetrieveBusinessesResponse", "RetrieveBusinessesResponseAccount", + "RetrieveBusinessesResponseBlueprintPartner", + "RetrieveBusinessesResponseBlueprintPartnerProfilePicture", "RetrieveBusinessesResponseEarningsUsd", "RetrieveBusinessesResponseFirstTierPartner", "RetrieveBusinessesResponseFirstTierPartnerProfilePicture", diff --git a/src/whop_sdk/partners/businesses/types/__init__.py b/src/whop_sdk/partners/businesses/types/__init__.py index 8a333253..6246e07f 100644 --- a/src/whop_sdk/partners/businesses/types/__init__.py +++ b/src/whop_sdk/partners/businesses/types/__init__.py @@ -13,6 +13,10 @@ from .list_businesses_response import ListBusinessesResponse from .list_businesses_response_data_item import ListBusinessesResponseDataItem from .list_businesses_response_data_item_account import ListBusinessesResponseDataItemAccount + from .list_businesses_response_data_item_blueprint_partner import ListBusinessesResponseDataItemBlueprintPartner + from .list_businesses_response_data_item_blueprint_partner_profile_picture import ( + ListBusinessesResponseDataItemBlueprintPartnerProfilePicture, + ) from .list_businesses_response_data_item_earnings_usd import ListBusinessesResponseDataItemEarningsUsd from .list_businesses_response_data_item_first_tier_partner import ListBusinessesResponseDataItemFirstTierPartner from .list_businesses_response_data_item_first_tier_partner_profile_picture import ( @@ -34,6 +38,10 @@ from .list_businesses_response_page_info import ListBusinessesResponsePageInfo from .retrieve_businesses_response import RetrieveBusinessesResponse from .retrieve_businesses_response_account import RetrieveBusinessesResponseAccount + from .retrieve_businesses_response_blueprint_partner import RetrieveBusinessesResponseBlueprintPartner + from .retrieve_businesses_response_blueprint_partner_profile_picture import ( + RetrieveBusinessesResponseBlueprintPartnerProfilePicture, + ) from .retrieve_businesses_response_earnings_usd import RetrieveBusinessesResponseEarningsUsd from .retrieve_businesses_response_first_tier_partner import RetrieveBusinessesResponseFirstTierPartner from .retrieve_businesses_response_first_tier_partner_profile_picture import ( @@ -58,6 +66,8 @@ "ListBusinessesResponse": ".list_businesses_response", "ListBusinessesResponseDataItem": ".list_businesses_response_data_item", "ListBusinessesResponseDataItemAccount": ".list_businesses_response_data_item_account", + "ListBusinessesResponseDataItemBlueprintPartner": ".list_businesses_response_data_item_blueprint_partner", + "ListBusinessesResponseDataItemBlueprintPartnerProfilePicture": ".list_businesses_response_data_item_blueprint_partner_profile_picture", "ListBusinessesResponseDataItemEarningsUsd": ".list_businesses_response_data_item_earnings_usd", "ListBusinessesResponseDataItemFirstTierPartner": ".list_businesses_response_data_item_first_tier_partner", "ListBusinessesResponseDataItemFirstTierPartnerProfilePicture": ".list_businesses_response_data_item_first_tier_partner_profile_picture", @@ -73,6 +83,8 @@ "ListBusinessesResponsePageInfo": ".list_businesses_response_page_info", "RetrieveBusinessesResponse": ".retrieve_businesses_response", "RetrieveBusinessesResponseAccount": ".retrieve_businesses_response_account", + "RetrieveBusinessesResponseBlueprintPartner": ".retrieve_businesses_response_blueprint_partner", + "RetrieveBusinessesResponseBlueprintPartnerProfilePicture": ".retrieve_businesses_response_blueprint_partner_profile_picture", "RetrieveBusinessesResponseEarningsUsd": ".retrieve_businesses_response_earnings_usd", "RetrieveBusinessesResponseFirstTierPartner": ".retrieve_businesses_response_first_tier_partner", "RetrieveBusinessesResponseFirstTierPartnerProfilePicture": ".retrieve_businesses_response_first_tier_partner_profile_picture", @@ -117,6 +129,8 @@ def __dir__(): "ListBusinessesResponse", "ListBusinessesResponseDataItem", "ListBusinessesResponseDataItemAccount", + "ListBusinessesResponseDataItemBlueprintPartner", + "ListBusinessesResponseDataItemBlueprintPartnerProfilePicture", "ListBusinessesResponseDataItemEarningsUsd", "ListBusinessesResponseDataItemFirstTierPartner", "ListBusinessesResponseDataItemFirstTierPartnerProfilePicture", @@ -132,6 +146,8 @@ def __dir__(): "ListBusinessesResponsePageInfo", "RetrieveBusinessesResponse", "RetrieveBusinessesResponseAccount", + "RetrieveBusinessesResponseBlueprintPartner", + "RetrieveBusinessesResponseBlueprintPartnerProfilePicture", "RetrieveBusinessesResponseEarningsUsd", "RetrieveBusinessesResponseFirstTierPartner", "RetrieveBusinessesResponseFirstTierPartnerProfilePicture", diff --git a/src/whop_sdk/partners/businesses/types/list_businesses_response_data_item.py b/src/whop_sdk/partners/businesses/types/list_businesses_response_data_item.py index 0a0bc0c9..2e7f2e78 100644 --- a/src/whop_sdk/partners/businesses/types/list_businesses_response_data_item.py +++ b/src/whop_sdk/partners/businesses/types/list_businesses_response_data_item.py @@ -6,6 +6,7 @@ import pydantic from ....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel from .list_businesses_response_data_item_account import ListBusinessesResponseDataItemAccount +from .list_businesses_response_data_item_blueprint_partner import ListBusinessesResponseDataItemBlueprintPartner from .list_businesses_response_data_item_earnings_usd import ListBusinessesResponseDataItemEarningsUsd from .list_businesses_response_data_item_first_tier_partner import ListBusinessesResponseDataItemFirstTierPartner from .list_businesses_response_data_item_my_partner_tier import ListBusinessesResponseDataItemMyPartnerTier @@ -23,6 +24,11 @@ class ListBusinessesResponseDataItem(UniversalBaseModel): Referred account. """ + blueprint_partner: typing.Optional[ListBusinessesResponseDataItemBlueprintPartner] = pydantic.Field(default=None) + """ + The partner whose blueprint the business deployed. Null unless this is a blueprint referral. + """ + created_at: dt.datetime = pydantic.Field() """ When the partner business was created. diff --git a/src/whop_sdk/partners/businesses/types/list_businesses_response_data_item_blueprint_partner.py b/src/whop_sdk/partners/businesses/types/list_businesses_response_data_item_blueprint_partner.py new file mode 100644 index 00000000..f5fa5982 --- /dev/null +++ b/src/whop_sdk/partners/businesses/types/list_businesses_response_data_item_blueprint_partner.py @@ -0,0 +1,44 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .list_businesses_response_data_item_blueprint_partner_profile_picture import ( + ListBusinessesResponseDataItemBlueprintPartnerProfilePicture, +) + + +class ListBusinessesResponseDataItemBlueprintPartner(UniversalBaseModel): + """ + The partner whose blueprint the business deployed. Null unless this is a blueprint referral. + """ + + id: str = pydantic.Field() + """ + User ID, prefixed `user_`. + """ + + name: typing.Optional[str] = pydantic.Field(default=None) + """ + The user's display name. + """ + + profile_picture: ListBusinessesResponseDataItemBlueprintPartnerProfilePicture = pydantic.Field() + """ + The user's profile picture. + """ + + username: str = pydantic.Field() + """ + The user's unique username. + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/whop_sdk/partners/businesses/types/list_businesses_response_data_item_blueprint_partner_profile_picture.py b/src/whop_sdk/partners/businesses/types/list_businesses_response_data_item_blueprint_partner_profile_picture.py new file mode 100644 index 00000000..d58b5957 --- /dev/null +++ b/src/whop_sdk/partners/businesses/types/list_businesses_response_data_item_blueprint_partner_profile_picture.py @@ -0,0 +1,26 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class ListBusinessesResponseDataItemBlueprintPartnerProfilePicture(UniversalBaseModel): + """ + The user's profile picture. + """ + + url: str = pydantic.Field() + """ + The user's profile picture URL. + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/whop_sdk/partners/businesses/types/list_businesses_response_data_item_owner.py b/src/whop_sdk/partners/businesses/types/list_businesses_response_data_item_owner.py index 9693ebef..1d428c81 100644 --- a/src/whop_sdk/partners/businesses/types/list_businesses_response_data_item_owner.py +++ b/src/whop_sdk/partners/businesses/types/list_businesses_response_data_item_owner.py @@ -12,6 +12,11 @@ class ListBusinessesResponseDataItemOwner(UniversalBaseModel): The owner of the referred business. """ + email: typing.Optional[str] = pydantic.Field(default=None) + """ + The business owner's email address, so a partner can follow up on a referral they made. Requires the `partner:email:read` scope; `null` without it, or while the account has no reachable address of its own. + """ + id: str = pydantic.Field() """ User ID, prefixed `user_`. diff --git a/src/whop_sdk/partners/businesses/types/retrieve_businesses_response.py b/src/whop_sdk/partners/businesses/types/retrieve_businesses_response.py index 6f9a7088..039e2e97 100644 --- a/src/whop_sdk/partners/businesses/types/retrieve_businesses_response.py +++ b/src/whop_sdk/partners/businesses/types/retrieve_businesses_response.py @@ -6,6 +6,7 @@ import pydantic from ....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel from .retrieve_businesses_response_account import RetrieveBusinessesResponseAccount +from .retrieve_businesses_response_blueprint_partner import RetrieveBusinessesResponseBlueprintPartner from .retrieve_businesses_response_earnings_usd import RetrieveBusinessesResponseEarningsUsd from .retrieve_businesses_response_first_tier_partner import RetrieveBusinessesResponseFirstTierPartner from .retrieve_businesses_response_my_partner_tier import RetrieveBusinessesResponseMyPartnerTier @@ -23,6 +24,11 @@ class RetrieveBusinessesResponse(UniversalBaseModel): Referred account. """ + blueprint_partner: typing.Optional[RetrieveBusinessesResponseBlueprintPartner] = pydantic.Field(default=None) + """ + The partner whose blueprint the business deployed. Null unless this is a blueprint referral. + """ + created_at: dt.datetime = pydantic.Field() """ When the partner business was created. diff --git a/src/whop_sdk/partners/businesses/types/retrieve_businesses_response_blueprint_partner.py b/src/whop_sdk/partners/businesses/types/retrieve_businesses_response_blueprint_partner.py new file mode 100644 index 00000000..4a3b48d9 --- /dev/null +++ b/src/whop_sdk/partners/businesses/types/retrieve_businesses_response_blueprint_partner.py @@ -0,0 +1,44 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .retrieve_businesses_response_blueprint_partner_profile_picture import ( + RetrieveBusinessesResponseBlueprintPartnerProfilePicture, +) + + +class RetrieveBusinessesResponseBlueprintPartner(UniversalBaseModel): + """ + The partner whose blueprint the business deployed. Null unless this is a blueprint referral. + """ + + id: str = pydantic.Field() + """ + User ID, prefixed `user_`. + """ + + name: typing.Optional[str] = pydantic.Field(default=None) + """ + The user's display name. + """ + + profile_picture: RetrieveBusinessesResponseBlueprintPartnerProfilePicture = pydantic.Field() + """ + The user's profile picture. + """ + + username: str = pydantic.Field() + """ + The user's unique username. + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/whop_sdk/partners/businesses/types/retrieve_businesses_response_blueprint_partner_profile_picture.py b/src/whop_sdk/partners/businesses/types/retrieve_businesses_response_blueprint_partner_profile_picture.py new file mode 100644 index 00000000..f958fc0d --- /dev/null +++ b/src/whop_sdk/partners/businesses/types/retrieve_businesses_response_blueprint_partner_profile_picture.py @@ -0,0 +1,26 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ....core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class RetrieveBusinessesResponseBlueprintPartnerProfilePicture(UniversalBaseModel): + """ + The user's profile picture. + """ + + url: str = pydantic.Field() + """ + The user's profile picture URL. + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/whop_sdk/partners/businesses/types/retrieve_businesses_response_owner.py b/src/whop_sdk/partners/businesses/types/retrieve_businesses_response_owner.py index f796004e..8c2e87a6 100644 --- a/src/whop_sdk/partners/businesses/types/retrieve_businesses_response_owner.py +++ b/src/whop_sdk/partners/businesses/types/retrieve_businesses_response_owner.py @@ -12,6 +12,11 @@ class RetrieveBusinessesResponseOwner(UniversalBaseModel): The owner of the referred business. """ + email: typing.Optional[str] = pydantic.Field(default=None) + """ + The business owner's email address, so a partner can follow up on a referral they made. Requires the `partner:email:read` scope; `null` without it, or while the account has no reachable address of its own. + """ + id: str = pydantic.Field() """ User ID, prefixed `user_`. diff --git a/src/whop_sdk/partners/types/referred_users_partners_response_data_item_user.py b/src/whop_sdk/partners/types/referred_users_partners_response_data_item_user.py index 58317662..1a17829f 100644 --- a/src/whop_sdk/partners/types/referred_users_partners_response_data_item_user.py +++ b/src/whop_sdk/partners/types/referred_users_partners_response_data_item_user.py @@ -12,6 +12,11 @@ class ReferredUsersPartnersResponseDataItemUser(UniversalBaseModel): city: typing.Optional[str] = None country: typing.Optional[str] = None + email: typing.Optional[str] = pydantic.Field(default=None) + """ + The referred user's email address, so a partner can follow up with someone they brought onto Whop. Requires the `partner:email:read` scope; `null` without it, or while the account has no reachable address of its own. + """ + id: str name: typing.Optional[str] = None profile_picture: typing.Optional[ReferredUsersPartnersResponseDataItemUserProfilePicture] = None diff --git a/src/whop_sdk/transfers/client.py b/src/whop_sdk/transfers/client.py index 20d32eea..bfea2b4f 100644 --- a/src/whop_sdk/transfers/client.py +++ b/src/whop_sdk/transfers/client.py @@ -229,7 +229,7 @@ def list_recipients( The account sending the money: a company account ID (`biz_`), or a user ID (`user_`) for that user's own personal balance. query : typing.Optional[str] - Search anyone on Whop by name or username, plus your own accounts by name or ID. Omit it to get the team around the balance, the people you follow, and your own accounts. The list is the same whether the balance belongs to a company or to you. Searching from a `biz_` origin additionally requires the member:basic:read scope. A credential scoped to a single company is the exception to the search itself: it only ever sees that company's own people. Complete email addresses return no matches. + Search anyone on Whop by name or username, plus your own accounts by name or ID. An exact business ID (`biz_`) returns that business first. Omit it to get the team around the balance, the people you follow, and your own accounts. The list is the same whether the balance belongs to a company or to you. Searching from a `biz_` origin additionally requires the member:basic:read scope. A credential scoped to a single company is the exception to the search itself: it only ever sees that company's own people. Complete email addresses return no matches. first : typing.Optional[int] Number of recipients per page. Search queries preserve the dashboard's 20-result maximum. @@ -528,7 +528,7 @@ async def list_recipients( The account sending the money: a company account ID (`biz_`), or a user ID (`user_`) for that user's own personal balance. query : typing.Optional[str] - Search anyone on Whop by name or username, plus your own accounts by name or ID. Omit it to get the team around the balance, the people you follow, and your own accounts. The list is the same whether the balance belongs to a company or to you. Searching from a `biz_` origin additionally requires the member:basic:read scope. A credential scoped to a single company is the exception to the search itself: it only ever sees that company's own people. Complete email addresses return no matches. + Search anyone on Whop by name or username, plus your own accounts by name or ID. An exact business ID (`biz_`) returns that business first. Omit it to get the team around the balance, the people you follow, and your own accounts. The list is the same whether the balance belongs to a company or to you. Searching from a `biz_` origin additionally requires the member:basic:read scope. A credential scoped to a single company is the exception to the search itself: it only ever sees that company's own people. Complete email addresses return no matches. first : typing.Optional[int] Number of recipients per page. Search queries preserve the dashboard's 20-result maximum. diff --git a/src/whop_sdk/transfers/raw_client.py b/src/whop_sdk/transfers/raw_client.py index 01e479cd..a8f087e1 100644 --- a/src/whop_sdk/transfers/raw_client.py +++ b/src/whop_sdk/transfers/raw_client.py @@ -321,7 +321,7 @@ def list_recipients( The account sending the money: a company account ID (`biz_`), or a user ID (`user_`) for that user's own personal balance. query : typing.Optional[str] - Search anyone on Whop by name or username, plus your own accounts by name or ID. Omit it to get the team around the balance, the people you follow, and your own accounts. The list is the same whether the balance belongs to a company or to you. Searching from a `biz_` origin additionally requires the member:basic:read scope. A credential scoped to a single company is the exception to the search itself: it only ever sees that company's own people. Complete email addresses return no matches. + Search anyone on Whop by name or username, plus your own accounts by name or ID. An exact business ID (`biz_`) returns that business first. Omit it to get the team around the balance, the people you follow, and your own accounts. The list is the same whether the balance belongs to a company or to you. Searching from a `biz_` origin additionally requires the member:basic:read scope. A credential scoped to a single company is the exception to the search itself: it only ever sees that company's own people. Complete email addresses return no matches. first : typing.Optional[int] Number of recipients per page. Search queries preserve the dashboard's 20-result maximum. @@ -770,7 +770,7 @@ async def list_recipients( The account sending the money: a company account ID (`biz_`), or a user ID (`user_`) for that user's own personal balance. query : typing.Optional[str] - Search anyone on Whop by name or username, plus your own accounts by name or ID. Omit it to get the team around the balance, the people you follow, and your own accounts. The list is the same whether the balance belongs to a company or to you. Searching from a `biz_` origin additionally requires the member:basic:read scope. A credential scoped to a single company is the exception to the search itself: it only ever sees that company's own people. Complete email addresses return no matches. + Search anyone on Whop by name or username, plus your own accounts by name or ID. An exact business ID (`biz_`) returns that business first. Omit it to get the team around the balance, the people you follow, and your own accounts. The list is the same whether the balance belongs to a company or to you. Searching from a `biz_` origin additionally requires the member:basic:read scope. A credential scoped to a single company is the exception to the search itself: it only ever sees that company's own people. Complete email addresses return no matches. first : typing.Optional[int] Number of recipients per page. Search queries preserve the dashboard's 20-result maximum. diff --git a/src/whop_sdk/types/ad.py b/src/whop_sdk/types/ad.py index 9a33981b..ff91c5ac 100644 --- a/src/whop_sdk/types/ad.py +++ b/src/whop_sdk/types/ad.py @@ -330,7 +330,7 @@ class Ad(UniversalBaseModel): url_parameters: typing.Dict[str, typing.Any] = pydantic.Field() """ - Every query parameter appended to the URL, keyed by parameter name — including any you sent on `url` itself. Whop adds its own click-attribution parameters on top; those are reserved and rejected if you set them (utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid). + Every query parameter appended to the URL, keyed by parameter name — including any you sent on `url` itself. Whop adds its own click-attribution parameters on top; those are reserved and rejected if you set them. Which keys are reserved depends on the ad's network — Meta: utm_meta_ad_id, utm_meta_adset_id, utm_meta_campaign_id, utm_source, utm_placement, utm_medium, utm_content, utm_adset, utm_whop, wacid, wasid, waid, tw_source, tw_adid; TikTok: waid, wasid, wacid, ad_id, adset_id, campaign_id, utm_source, utm_medium, utm_placement, utm_whop, tw_source, tw_adid. """ viewed_content_value: float = pydantic.Field() diff --git a/src/whop_sdk/types/permission_action.py b/src/whop_sdk/types/permission_action.py index 48068877..2adcf3a6 100644 --- a/src/whop_sdk/types/permission_action.py +++ b/src/whop_sdk/types/permission_action.py @@ -178,6 +178,7 @@ "referral:basic:read", "referral:partner:create", "partner:basic:read", + "partner:email:read", "partner:invite:create", "partner:create", "stats:read",