diff --git a/.fern/metadata.json b/.fern/metadata.json
index 8e3e742..24e1159 100644
--- a/.fern/metadata.json
+++ b/.fern/metadata.json
@@ -1,7 +1,7 @@
{
"cliVersion": "5.50.0",
"generatorName": "fernapi/fern-python-sdk",
- "generatorVersion": "5.29.1",
+ "generatorVersion": "5.29.2",
"generatorConfig": {
"inline_request_params": true,
"client": {
@@ -23,10 +23,10 @@
}
]
},
- "originGitCommit": "008b7147a27272499bf4b17fa96d4357ca3b62e9",
+ "originGitCommit": "686551a0297d2f37075b3586b030ff32be5c94f7",
"originGitCommitIsDirty": false,
"invokedBy": "ci",
- "requestedVersion": "1.3.4",
+ "requestedVersion": "1.3.5",
"ciProvider": "github",
- "sdkVersion": "1.3.4"
+ "sdkVersion": "1.3.5"
}
\ No newline at end of file
diff --git a/.fern/replay.lock b/.fern/replay.lock
index 9cbd85c..84ce67f 100644
--- a/.fern/replay.lock
+++ b/.fern/replay.lock
@@ -42,5 +42,11 @@ generations:
cli_version: unknown
generator_versions:
fernapi/fern-python-sdk: 5.29.1
-current_generation: e85d697e829ba85f2c9b84f3613717390fcc3bc0
+ - commit_sha: 308f5addafebb8bdbc3829e694b5f3e051580ee4
+ tree_hash: 00a6fcd72632825431b7ccbfe321b504e1c19381
+ timestamp: 2026-08-31T10:02:58.030Z
+ cli_version: unknown
+ generator_versions:
+ fernapi/fern-python-sdk: 5.29.2
+current_generation: 308f5addafebb8bdbc3829e694b5f3e051580ee4
patches: []
diff --git a/poetry.lock b/poetry.lock
index bd32c51..95f01a6 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -923,19 +923,19 @@ markers = {main = "extra == \"aiohttp\""}
[[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"
@@ -945,132 +945,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/pyproject.toml b/pyproject.toml
index ab92619..3f45dab 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ dynamic = ["version"]
[tool.poetry]
name = "schematichq"
-version = "1.3.4"
+version = "1.3.5"
description = ""
readme = "README.md"
authors = []
diff --git a/reference.md b/reference.md
index 4f48ef7..797fb24 100644
--- a/reference.md
+++ b/reference.md
@@ -1479,6 +1479,14 @@ client.accounts.update_onboarding_state()
-
+**dismissed:** `typing.Optional[bool]`
+
+
+
+
+
+-
+
**path:** `typing.Optional[OnboardingPath]`
@@ -16260,6 +16268,14 @@ client.plans.retry_custom_plan_billing(
-
+**billing_cycle_anchor:** `typing.Optional[datetime.datetime]` — The date the subscription's billing period renews on. Only honored when the retry creates a subscription.
+
+
+
+
+
+-
+
**days_until_due:** `typing.Optional[int]`
@@ -16268,6 +16284,14 @@ client.plans.retry_custom_plan_billing(
-
+**prorate_first_period:** `typing.Optional[bool]` — When true, the partial period between the subscription starting and its renewal date is billed pro rata straight away. When false that period is free and no invoice is raised until the renewal date. Only applies alongside billing_cycle_anchor. Defaults to true.
+
+
+
+
+
+-
+
**send_invoice:** `typing.Optional[bool]` — Whether Stripe emails the invoice when it is finalized. Defaults to true.
@@ -17566,7 +17590,7 @@ client.plans.publish_plan_version(
excluded_company_ids=[
"excluded_company_ids"
],
- migration_strategy="immediate",
+ migration_strategy="end_of_billing_period",
)
```
@@ -17623,6 +17647,14 @@ client.plans.publish_plan_version(
-
+**billing_cycle_anchor:** `typing.Optional[datetime.datetime]` — The date the subscription's billing period renews on. Only honored on a first publish that starts a subscription.
+
+
+
+
+
+-
+
**coupon_external_id:** `typing.Optional[str]`
@@ -17663,6 +17695,14 @@ client.plans.publish_plan_version(
-
+**prorate_first_period:** `typing.Optional[bool]` — When true, the partial period between the subscription starting and its renewal date is billed pro rata straight away. When false that period is free and no invoice is raised until the renewal date. Only applies alongside billing_cycle_anchor. Defaults to true.
+
+
+
+
+
+-
+
**proration_behavior:** `typing.Optional[MigrationProrationBehavior]`
@@ -23022,7 +23062,7 @@ client = Schematic(
client.planmigrations.list_company_migrations(
migration_id="migration_id",
q="q",
- status="completed",
+ status="cancelled",
limit=1000000,
offset=1000000,
)
@@ -23176,7 +23216,7 @@ client = Schematic(
client.planmigrations.count_company_migrations(
migration_id="migration_id",
q="q",
- status="completed",
+ status="cancelled",
limit=1000000,
offset=1000000,
)
@@ -23270,7 +23310,7 @@ client = Schematic(
client.planmigrations.list_migrations(
plan_version_id="plan_version_id",
- status="completed",
+ status="cancelled",
limit=1000000,
offset=1000000,
)
@@ -23357,7 +23397,7 @@ client = Schematic(
client.planmigrations.create_migration(
plan_id="plan_id",
plan_version_id_to="plan_version_id_to",
- strategy="immediate",
+ strategy="end_of_billing_period",
target_plan_type="plan",
)
@@ -23506,6 +23546,132 @@ client.planmigrations.get_migration(
+
+
+
+
+client.planmigrations.cancel_migration(...) -> CancelMigrationResponse
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from schematic import Schematic
+from schematic.environment import SchematicEnvironment
+
+client = Schematic(
+ api_key="",
+ environment=SchematicEnvironment.DEFAULT,
+)
+
+client.planmigrations.cancel_migration(
+ plan_version_migration_id="plan_version_migration_id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**plan_version_migration_id:** `str` — plan_version_migration_id
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.planmigrations.complete_migration_now(...) -> CompleteMigrationNowResponse
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from schematic import Schematic
+from schematic.environment import SchematicEnvironment
+
+client = Schematic(
+ api_key="",
+ environment=SchematicEnvironment.DEFAULT,
+)
+
+client.planmigrations.complete_migration_now(
+ plan_version_migration_id="plan_version_migration_id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**plan_version_migration_id:** `str` — plan_version_migration_id
+
+
+
+
+
+-
+
+**proration_behavior:** `typing.Optional[MigrationProrationBehavior]`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
@@ -23603,7 +23769,7 @@ client = Schematic(
client.planmigrations.count_migrations(
plan_version_id="plan_version_id",
- status="completed",
+ status="cancelled",
limit=1000000,
offset=1000000,
)
diff --git a/src/schematic/__init__.py b/src/schematic/__init__.py
index ccc2e26..72c0d7a 100644
--- a/src/schematic/__init__.py
+++ b/src/schematic/__init__.py
@@ -306,11 +306,13 @@
OnboardingRequirement,
OnboardingRequirementStatus,
OnboardingRequirementView,
+ OnboardingStripeImport,
OnboardingTrack,
OrbIntegrationConfig,
OrderedPlansInGroup,
PaymentMethodRequestBody,
PaymentMethodResponseData,
+ PendingMigrationResponseData,
PlanBillingSource,
PlanBundleAction,
PlanBundleCreditGrantRequestBody,
@@ -826,6 +828,8 @@
from .planbundle import CreateCustomPlanBundleResponse, CreatePlanBundleResponse, UpdatePlanBundleResponse
from .plangroups import CreatePlanGroupResponse, GetPlanGroupParams, GetPlanGroupResponse, UpdatePlanGroupResponse
from .planmigrations import (
+ CancelMigrationResponse,
+ CompleteMigrationNowResponse,
CountCompanyMigrationsParams,
CountCompanyMigrationsResponse,
CountMigrationsParams,
@@ -961,6 +965,7 @@
"BillingSubscriptionView": ".types",
"BillingTiersMode": ".types",
"BindCatalogResponse": ".components",
+ "CancelMigrationResponse": ".planmigrations",
"CancelSubscriptionResponse": ".checkout",
"CaptureRawEvent": ".types",
"CaptureRawEventBatch": ".types",
@@ -1025,6 +1030,7 @@
"ComparableOperator": ".types",
"CompatiblePlans": ".types",
"CompatiblePlansResponseData": ".types",
+ "CompleteMigrationNowResponse": ".planmigrations",
"ComponentCapabilities": ".types",
"ComponentCheckoutSettings": ".types",
"ComponentDisplaySettings": ".types",
@@ -1511,11 +1517,13 @@
"OnboardingRequirement": ".types",
"OnboardingRequirementStatus": ".types",
"OnboardingRequirementView": ".types",
+ "OnboardingStripeImport": ".types",
"OnboardingTrack": ".types",
"OrbIntegrationConfig": ".types",
"OrderedPlansInGroup": ".types",
"PaymentMethodRequestBody": ".types",
"PaymentMethodResponseData": ".types",
+ "PendingMigrationResponseData": ".types",
"PlanBillingSource": ".types",
"PlanBundleAction": ".types",
"PlanBundleCreditGrantRequestBody": ".types",
@@ -1846,6 +1854,7 @@ def __dir__():
"BillingSubscriptionView",
"BillingTiersMode",
"BindCatalogResponse",
+ "CancelMigrationResponse",
"CancelSubscriptionResponse",
"CaptureRawEvent",
"CaptureRawEventBatch",
@@ -1910,6 +1919,7 @@ def __dir__():
"ComparableOperator",
"CompatiblePlans",
"CompatiblePlansResponseData",
+ "CompleteMigrationNowResponse",
"ComponentCapabilities",
"ComponentCheckoutSettings",
"ComponentDisplaySettings",
@@ -2396,11 +2406,13 @@ def __dir__():
"OnboardingRequirement",
"OnboardingRequirementStatus",
"OnboardingRequirementView",
+ "OnboardingStripeImport",
"OnboardingTrack",
"OrbIntegrationConfig",
"OrderedPlansInGroup",
"PaymentMethodRequestBody",
"PaymentMethodResponseData",
+ "PendingMigrationResponseData",
"PlanBillingSource",
"PlanBundleAction",
"PlanBundleCreditGrantRequestBody",
diff --git a/src/schematic/accounts/client.py b/src/schematic/accounts/client.py
index 760fd4c..19d394a 100644
--- a/src/schematic/accounts/client.py
+++ b/src/schematic/accounts/client.py
@@ -854,6 +854,7 @@ def get_onboarding_state(
def update_onboarding_state(
self,
*,
+ dismissed: typing.Optional[bool] = OMIT,
path: typing.Optional[OnboardingPath] = OMIT,
pricing_page_url: typing.Optional[str] = OMIT,
track: typing.Optional[OnboardingTrack] = OMIT,
@@ -863,6 +864,8 @@ def update_onboarding_state(
"""
Parameters
----------
+ dismissed : typing.Optional[bool]
+
path : typing.Optional[OnboardingPath]
pricing_page_url : typing.Optional[str]
@@ -889,6 +892,7 @@ def update_onboarding_state(
client.accounts.update_onboarding_state()
"""
_response = self._raw_client.update_onboarding_state(
+ dismissed=dismissed,
path=path,
pricing_page_url=pricing_page_url,
track=track,
@@ -1905,6 +1909,7 @@ async def main() -> None:
async def update_onboarding_state(
self,
*,
+ dismissed: typing.Optional[bool] = OMIT,
path: typing.Optional[OnboardingPath] = OMIT,
pricing_page_url: typing.Optional[str] = OMIT,
track: typing.Optional[OnboardingTrack] = OMIT,
@@ -1914,6 +1919,8 @@ async def update_onboarding_state(
"""
Parameters
----------
+ dismissed : typing.Optional[bool]
+
path : typing.Optional[OnboardingPath]
pricing_page_url : typing.Optional[str]
@@ -1948,6 +1955,7 @@ async def main() -> None:
asyncio.run(main())
"""
_response = await self._raw_client.update_onboarding_state(
+ dismissed=dismissed,
path=path,
pricing_page_url=pricing_page_url,
track=track,
diff --git a/src/schematic/accounts/raw_client.py b/src/schematic/accounts/raw_client.py
index d5c0121..3167ab0 100644
--- a/src/schematic/accounts/raw_client.py
+++ b/src/schematic/accounts/raw_client.py
@@ -2036,6 +2036,7 @@ def get_onboarding_state(
def update_onboarding_state(
self,
*,
+ dismissed: typing.Optional[bool] = OMIT,
path: typing.Optional[OnboardingPath] = OMIT,
pricing_page_url: typing.Optional[str] = OMIT,
track: typing.Optional[OnboardingTrack] = OMIT,
@@ -2045,6 +2046,8 @@ def update_onboarding_state(
"""
Parameters
----------
+ dismissed : typing.Optional[bool]
+
path : typing.Optional[OnboardingPath]
pricing_page_url : typing.Optional[str]
@@ -2065,6 +2068,7 @@ def update_onboarding_state(
"onboarding-state",
method="POST",
json={
+ "dismissed": dismissed,
"path": path,
"pricing_page_url": pricing_page_url,
"track": track,
@@ -4324,6 +4328,7 @@ async def get_onboarding_state(
async def update_onboarding_state(
self,
*,
+ dismissed: typing.Optional[bool] = OMIT,
path: typing.Optional[OnboardingPath] = OMIT,
pricing_page_url: typing.Optional[str] = OMIT,
track: typing.Optional[OnboardingTrack] = OMIT,
@@ -4333,6 +4338,8 @@ async def update_onboarding_state(
"""
Parameters
----------
+ dismissed : typing.Optional[bool]
+
path : typing.Optional[OnboardingPath]
pricing_page_url : typing.Optional[str]
@@ -4353,6 +4360,7 @@ async def update_onboarding_state(
"onboarding-state",
method="POST",
json={
+ "dismissed": dismissed,
"path": path,
"pricing_page_url": pricing_page_url,
"track": track,
diff --git a/src/schematic/core/client_wrapper.py b/src/schematic/core/client_wrapper.py
index c9f76dc..172198f 100644
--- a/src/schematic/core/client_wrapper.py
+++ b/src/schematic/core/client_wrapper.py
@@ -33,12 +33,12 @@ def get_headers(self) -> typing.Dict[str, str]:
import platform
headers: typing.Dict[str, str] = {
- "User-Agent": "schematichq/1.3.4",
+ "User-Agent": "schematichq/1.3.5",
"X-Fern-Language": "Python",
"X-Fern-Runtime": f"python/{platform.python_version()}",
"X-Fern-Platform": f"{platform.system().lower()}/{platform.release()}",
"X-Fern-SDK-Name": "schematichq",
- "X-Fern-SDK-Version": "1.3.4",
+ "X-Fern-SDK-Version": "1.3.5",
**(self.get_custom_headers() or {}),
}
headers["X-Schematic-Api-Key"] = self.api_key
diff --git a/src/schematic/planmigrations/__init__.py b/src/schematic/planmigrations/__init__.py
index 665d218..2ee9ce8 100644
--- a/src/schematic/planmigrations/__init__.py
+++ b/src/schematic/planmigrations/__init__.py
@@ -7,6 +7,8 @@
if typing.TYPE_CHECKING:
from .types import (
+ CancelMigrationResponse,
+ CompleteMigrationNowResponse,
CountCompanyMigrationsParams,
CountCompanyMigrationsResponse,
CountMigrationsParams,
@@ -22,6 +24,8 @@
RetryMigrationResponse,
)
_dynamic_imports: typing.Dict[str, str] = {
+ "CancelMigrationResponse": ".types",
+ "CompleteMigrationNowResponse": ".types",
"CountCompanyMigrationsParams": ".types",
"CountCompanyMigrationsResponse": ".types",
"CountMigrationsParams": ".types",
@@ -60,6 +64,8 @@ def __dir__():
__all__ = [
+ "CancelMigrationResponse",
+ "CompleteMigrationNowResponse",
"CountCompanyMigrationsParams",
"CountCompanyMigrationsResponse",
"CountMigrationsParams",
diff --git a/src/schematic/planmigrations/client.py b/src/schematic/planmigrations/client.py
index d20ef8b..b244b87 100644
--- a/src/schematic/planmigrations/client.py
+++ b/src/schematic/planmigrations/client.py
@@ -11,6 +11,8 @@
from ..types.plan_version_migration_status import PlanVersionMigrationStatus
from ..types.plan_version_migration_strategy import PlanVersionMigrationStrategy
from .raw_client import AsyncRawPlanmigrationsClient, RawPlanmigrationsClient
+from .types.cancel_migration_response import CancelMigrationResponse
+from .types.complete_migration_now_response import CompleteMigrationNowResponse
from .types.count_company_migrations_response import CountCompanyMigrationsResponse
from .types.count_migrations_response import CountMigrationsResponse
from .types.create_migration_response import CreateMigrationResponse
@@ -83,7 +85,7 @@ def list_company_migrations(
client.planmigrations.list_company_migrations(
migration_id="migration_id",
q="q",
- status="completed",
+ status="cancelled",
limit=1000000,
offset=1000000,
)
@@ -169,7 +171,7 @@ def count_company_migrations(
client.planmigrations.count_company_migrations(
migration_id="migration_id",
q="q",
- status="completed",
+ status="cancelled",
limit=1000000,
offset=1000000,
)
@@ -218,7 +220,7 @@ def list_migrations(
)
client.planmigrations.list_migrations(
plan_version_id="plan_version_id",
- status="completed",
+ status="cancelled",
limit=1000000,
offset=1000000,
)
@@ -278,7 +280,7 @@ def create_migration(
client.planmigrations.create_migration(
plan_id="plan_id",
plan_version_id_to="plan_version_id_to",
- strategy="immediate",
+ strategy="end_of_billing_period",
target_plan_type="plan",
)
"""
@@ -326,6 +328,76 @@ def get_migration(
_response = self._raw_client.get_migration(plan_version_migration_id, request_options=request_options)
return _response.data
+ def cancel_migration(
+ self, plan_version_migration_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> CancelMigrationResponse:
+ """
+ Parameters
+ ----------
+ plan_version_migration_id : str
+ plan_version_migration_id
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ CancelMigrationResponse
+ OK
+
+ Examples
+ --------
+ from schematic import Schematic
+
+ client = Schematic(
+ api_key="YOUR_API_KEY",
+ )
+ client.planmigrations.cancel_migration(
+ plan_version_migration_id="plan_version_migration_id",
+ )
+ """
+ _response = self._raw_client.cancel_migration(plan_version_migration_id, request_options=request_options)
+ return _response.data
+
+ def complete_migration_now(
+ self,
+ plan_version_migration_id: str,
+ *,
+ proration_behavior: typing.Optional[MigrationProrationBehavior] = OMIT,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> CompleteMigrationNowResponse:
+ """
+ Parameters
+ ----------
+ plan_version_migration_id : str
+ plan_version_migration_id
+
+ proration_behavior : typing.Optional[MigrationProrationBehavior]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ CompleteMigrationNowResponse
+ OK
+
+ Examples
+ --------
+ from schematic import Schematic
+
+ client = Schematic(
+ api_key="YOUR_API_KEY",
+ )
+ client.planmigrations.complete_migration_now(
+ plan_version_migration_id="plan_version_migration_id",
+ )
+ """
+ _response = self._raw_client.complete_migration_now(
+ plan_version_migration_id, proration_behavior=proration_behavior, request_options=request_options
+ )
+ return _response.data
+
def retry_migration(
self,
plan_version_migration_id: str,
@@ -405,7 +477,7 @@ def count_migrations(
)
client.planmigrations.count_migrations(
plan_version_id="plan_version_id",
- status="completed",
+ status="cancelled",
limit=1000000,
offset=1000000,
)
@@ -533,7 +605,7 @@ async def main() -> None:
await client.planmigrations.list_company_migrations(
migration_id="migration_id",
q="q",
- status="completed",
+ status="cancelled",
limit=1000000,
offset=1000000,
)
@@ -635,7 +707,7 @@ async def main() -> None:
await client.planmigrations.count_company_migrations(
migration_id="migration_id",
q="q",
- status="completed",
+ status="cancelled",
limit=1000000,
offset=1000000,
)
@@ -692,7 +764,7 @@ async def list_migrations(
async def main() -> None:
await client.planmigrations.list_migrations(
plan_version_id="plan_version_id",
- status="completed",
+ status="cancelled",
limit=1000000,
offset=1000000,
)
@@ -760,7 +832,7 @@ async def main() -> None:
await client.planmigrations.create_migration(
plan_id="plan_id",
plan_version_id_to="plan_version_id_to",
- strategy="immediate",
+ strategy="end_of_billing_period",
target_plan_type="plan",
)
@@ -819,6 +891,92 @@ async def main() -> None:
_response = await self._raw_client.get_migration(plan_version_migration_id, request_options=request_options)
return _response.data
+ async def cancel_migration(
+ self, plan_version_migration_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> CancelMigrationResponse:
+ """
+ Parameters
+ ----------
+ plan_version_migration_id : str
+ plan_version_migration_id
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ CancelMigrationResponse
+ OK
+
+ Examples
+ --------
+ import asyncio
+
+ from schematic import AsyncSchematic
+
+ client = AsyncSchematic(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.planmigrations.cancel_migration(
+ plan_version_migration_id="plan_version_migration_id",
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.cancel_migration(plan_version_migration_id, request_options=request_options)
+ return _response.data
+
+ async def complete_migration_now(
+ self,
+ plan_version_migration_id: str,
+ *,
+ proration_behavior: typing.Optional[MigrationProrationBehavior] = OMIT,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> CompleteMigrationNowResponse:
+ """
+ Parameters
+ ----------
+ plan_version_migration_id : str
+ plan_version_migration_id
+
+ proration_behavior : typing.Optional[MigrationProrationBehavior]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ CompleteMigrationNowResponse
+ OK
+
+ Examples
+ --------
+ import asyncio
+
+ from schematic import AsyncSchematic
+
+ client = AsyncSchematic(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.planmigrations.complete_migration_now(
+ plan_version_migration_id="plan_version_migration_id",
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.complete_migration_now(
+ plan_version_migration_id, proration_behavior=proration_behavior, request_options=request_options
+ )
+ return _response.data
+
async def retry_migration(
self,
plan_version_migration_id: str,
@@ -911,7 +1069,7 @@ async def count_migrations(
async def main() -> None:
await client.planmigrations.count_migrations(
plan_version_id="plan_version_id",
- status="completed",
+ status="cancelled",
limit=1000000,
offset=1000000,
)
diff --git a/src/schematic/planmigrations/raw_client.py b/src/schematic/planmigrations/raw_client.py
index e61e1e8..0765fe0 100644
--- a/src/schematic/planmigrations/raw_client.py
+++ b/src/schematic/planmigrations/raw_client.py
@@ -22,6 +22,8 @@
from ..types.plan_version_company_migration_status import PlanVersionCompanyMigrationStatus
from ..types.plan_version_migration_status import PlanVersionMigrationStatus
from ..types.plan_version_migration_strategy import PlanVersionMigrationStrategy
+from .types.cancel_migration_response import CancelMigrationResponse
+from .types.complete_migration_now_response import CompleteMigrationNowResponse
from .types.count_company_migrations_response import CountCompanyMigrationsResponse
from .types.count_migrations_response import CountMigrationsResponse
from .types.create_migration_response import CreateMigrationResponse
@@ -732,6 +734,219 @@ def get_migration(
status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
)
+ def cancel_migration(
+ self, plan_version_migration_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> HttpResponse[CancelMigrationResponse]:
+ """
+ Parameters
+ ----------
+ plan_version_migration_id : str
+ plan_version_migration_id
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[CancelMigrationResponse]
+ OK
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"plan-version-migrations/{encode_path_param(plan_version_migration_id)}/cancel",
+ method="POST",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ CancelMigrationResponse,
+ parse_obj_as(
+ type_=CancelMigrationResponse, # 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(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_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 core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ def complete_migration_now(
+ self,
+ plan_version_migration_id: str,
+ *,
+ proration_behavior: typing.Optional[MigrationProrationBehavior] = OMIT,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> HttpResponse[CompleteMigrationNowResponse]:
+ """
+ Parameters
+ ----------
+ plan_version_migration_id : str
+ plan_version_migration_id
+
+ proration_behavior : typing.Optional[MigrationProrationBehavior]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[CompleteMigrationNowResponse]
+ OK
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"plan-version-migrations/{encode_path_param(plan_version_migration_id)}/complete-now",
+ method="POST",
+ json={
+ "proration_behavior": proration_behavior,
+ },
+ headers={
+ "content-type": "application/json",
+ },
+ request_options=request_options,
+ omit=OMIT,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ CompleteMigrationNowResponse,
+ parse_obj_as(
+ type_=CompleteMigrationNowResponse, # 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(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_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 core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
def retry_migration(
self,
plan_version_migration_id: str,
@@ -1785,6 +2000,219 @@ async def get_migration(
status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
)
+ async def cancel_migration(
+ self, plan_version_migration_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[CancelMigrationResponse]:
+ """
+ Parameters
+ ----------
+ plan_version_migration_id : str
+ plan_version_migration_id
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[CancelMigrationResponse]
+ OK
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"plan-version-migrations/{encode_path_param(plan_version_migration_id)}/cancel",
+ method="POST",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ CancelMigrationResponse,
+ parse_obj_as(
+ type_=CancelMigrationResponse, # 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(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_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 core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
+ async def complete_migration_now(
+ self,
+ plan_version_migration_id: str,
+ *,
+ proration_behavior: typing.Optional[MigrationProrationBehavior] = OMIT,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> AsyncHttpResponse[CompleteMigrationNowResponse]:
+ """
+ Parameters
+ ----------
+ plan_version_migration_id : str
+ plan_version_migration_id
+
+ proration_behavior : typing.Optional[MigrationProrationBehavior]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[CompleteMigrationNowResponse]
+ OK
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"plan-version-migrations/{encode_path_param(plan_version_migration_id)}/complete-now",
+ method="POST",
+ json={
+ "proration_behavior": proration_behavior,
+ },
+ headers={
+ "content-type": "application/json",
+ },
+ request_options=request_options,
+ omit=OMIT,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ CompleteMigrationNowResponse,
+ parse_obj_as(
+ type_=CompleteMigrationNowResponse, # 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(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 401:
+ raise UnauthorizedError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 403:
+ raise ForbiddenError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 404:
+ raise NotFoundError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ if _response.status_code == 500:
+ raise InternalServerError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ types_api_error_ApiError,
+ parse_obj_as(
+ type_=types_api_error_ApiError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise core_api_error_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 core_api_error_ApiError(
+ status_code=_response.status_code, headers=dict(_response.headers), body=_response_json
+ )
+
async def retry_migration(
self,
plan_version_migration_id: str,
diff --git a/src/schematic/planmigrations/types/__init__.py b/src/schematic/planmigrations/types/__init__.py
index cf21ae0..e32ed52 100644
--- a/src/schematic/planmigrations/types/__init__.py
+++ b/src/schematic/planmigrations/types/__init__.py
@@ -6,6 +6,8 @@
from importlib import import_module
if typing.TYPE_CHECKING:
+ from .cancel_migration_response import CancelMigrationResponse
+ from .complete_migration_now_response import CompleteMigrationNowResponse
from .count_company_migrations_params import CountCompanyMigrationsParams
from .count_company_migrations_response import CountCompanyMigrationsResponse
from .count_migrations_params import CountMigrationsParams
@@ -20,6 +22,8 @@
from .retry_company_migration_response import RetryCompanyMigrationResponse
from .retry_migration_response import RetryMigrationResponse
_dynamic_imports: typing.Dict[str, str] = {
+ "CancelMigrationResponse": ".cancel_migration_response",
+ "CompleteMigrationNowResponse": ".complete_migration_now_response",
"CountCompanyMigrationsParams": ".count_company_migrations_params",
"CountCompanyMigrationsResponse": ".count_company_migrations_response",
"CountMigrationsParams": ".count_migrations_params",
@@ -58,6 +62,8 @@ def __dir__():
__all__ = [
+ "CancelMigrationResponse",
+ "CompleteMigrationNowResponse",
"CountCompanyMigrationsParams",
"CountCompanyMigrationsResponse",
"CountMigrationsParams",
diff --git a/src/schematic/planmigrations/types/cancel_migration_response.py b/src/schematic/planmigrations/types/cancel_migration_response.py
new file mode 100644
index 0000000..45ebdf0
--- /dev/null
+++ b/src/schematic/planmigrations/types/cancel_migration_response.py
@@ -0,0 +1,24 @@
+# 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.plan_version_migration_response_data import PlanVersionMigrationResponseData
+
+
+class CancelMigrationResponse(UniversalBaseModel):
+ data: PlanVersionMigrationResponseData
+ params: typing.Dict[str, typing.Any] = pydantic.Field()
+ """
+ Input parameters
+ """
+
+ 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/schematic/planmigrations/types/complete_migration_now_response.py b/src/schematic/planmigrations/types/complete_migration_now_response.py
new file mode 100644
index 0000000..b96e34d
--- /dev/null
+++ b/src/schematic/planmigrations/types/complete_migration_now_response.py
@@ -0,0 +1,24 @@
+# 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.plan_version_migration_response_data import PlanVersionMigrationResponseData
+
+
+class CompleteMigrationNowResponse(UniversalBaseModel):
+ data: PlanVersionMigrationResponseData
+ params: typing.Dict[str, typing.Any] = pydantic.Field()
+ """
+ Input parameters
+ """
+
+ 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/schematic/plans/client.py b/src/schematic/plans/client.py
index 6abab06..d149761 100644
--- a/src/schematic/plans/client.py
+++ b/src/schematic/plans/client.py
@@ -1,5 +1,6 @@
# This file was auto-generated by Fern from our API Definition.
+import datetime as dt
import typing
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
@@ -222,7 +223,9 @@ def retry_custom_plan_billing(
*,
customer_email: str,
activation_strategy: typing.Optional[CustomPlanActivationStrategy] = OMIT,
+ billing_cycle_anchor: typing.Optional[dt.datetime] = OMIT,
days_until_due: typing.Optional[int] = OMIT,
+ prorate_first_period: typing.Optional[bool] = OMIT,
send_invoice: typing.Optional[bool] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> RetryCustomPlanBillingResponse:
@@ -236,8 +239,14 @@ def retry_custom_plan_billing(
activation_strategy : typing.Optional[CustomPlanActivationStrategy]
+ billing_cycle_anchor : typing.Optional[dt.datetime]
+ The date the subscription's billing period renews on. Only honored when the retry creates a subscription.
+
days_until_due : typing.Optional[int]
+ prorate_first_period : typing.Optional[bool]
+ When true, the partial period between the subscription starting and its renewal date is billed pro rata straight away. When false that period is free and no invoice is raised until the renewal date. Only applies alongside billing_cycle_anchor. Defaults to true.
+
send_invoice : typing.Optional[bool]
Whether Stripe emails the invoice when it is finalized. Defaults to true.
@@ -265,7 +274,9 @@ def retry_custom_plan_billing(
custom_plan_billing_id,
customer_email=customer_email,
activation_strategy=activation_strategy,
+ billing_cycle_anchor=billing_cycle_anchor,
days_until_due=days_until_due,
+ prorate_first_period=prorate_first_period,
send_invoice=send_invoice,
request_options=request_options,
)
@@ -1100,11 +1111,13 @@ def publish_plan_version(
migration_strategy: PlanVersionMigrationStrategy,
activation_strategy: typing.Optional[CustomPlanActivationStrategy] = OMIT,
address: typing.Optional[CustomerBillingAddress] = OMIT,
+ billing_cycle_anchor: typing.Optional[dt.datetime] = OMIT,
coupon_external_id: typing.Optional[str] = OMIT,
custom_field_values: typing.Optional[typing.Sequence[CheckoutFieldValue]] = OMIT,
customer_email: typing.Optional[str] = OMIT,
days_until_due: typing.Optional[int] = OMIT,
phone: typing.Optional[str] = OMIT,
+ prorate_first_period: typing.Optional[bool] = OMIT,
proration_behavior: typing.Optional[MigrationProrationBehavior] = OMIT,
require_no_migration: typing.Optional[bool] = OMIT,
send_invoice: typing.Optional[bool] = OMIT,
@@ -1125,6 +1138,9 @@ def publish_plan_version(
address : typing.Optional[CustomerBillingAddress]
+ billing_cycle_anchor : typing.Optional[dt.datetime]
+ The date the subscription's billing period renews on. Only honored on a first publish that starts a subscription.
+
coupon_external_id : typing.Optional[str]
custom_field_values : typing.Optional[typing.Sequence[CheckoutFieldValue]]
@@ -1135,6 +1151,9 @@ def publish_plan_version(
phone : typing.Optional[str]
+ prorate_first_period : typing.Optional[bool]
+ When true, the partial period between the subscription starting and its renewal date is billed pro rata straight away. When false that period is free and no invoice is raised until the renewal date. Only applies alongside billing_cycle_anchor. Defaults to true.
+
proration_behavior : typing.Optional[MigrationProrationBehavior]
require_no_migration : typing.Optional[bool]
@@ -1163,7 +1182,7 @@ def publish_plan_version(
client.plans.publish_plan_version(
plan_version_id="plan_version_id",
excluded_company_ids=["excluded_company_ids"],
- migration_strategy="immediate",
+ migration_strategy="end_of_billing_period",
)
"""
_response = self._raw_client.publish_plan_version(
@@ -1172,11 +1191,13 @@ def publish_plan_version(
migration_strategy=migration_strategy,
activation_strategy=activation_strategy,
address=address,
+ billing_cycle_anchor=billing_cycle_anchor,
coupon_external_id=coupon_external_id,
custom_field_values=custom_field_values,
customer_email=customer_email,
days_until_due=days_until_due,
phone=phone,
+ prorate_first_period=prorate_first_period,
proration_behavior=proration_behavior,
require_no_migration=require_no_migration,
send_invoice=send_invoice,
@@ -1389,7 +1410,9 @@ async def retry_custom_plan_billing(
*,
customer_email: str,
activation_strategy: typing.Optional[CustomPlanActivationStrategy] = OMIT,
+ billing_cycle_anchor: typing.Optional[dt.datetime] = OMIT,
days_until_due: typing.Optional[int] = OMIT,
+ prorate_first_period: typing.Optional[bool] = OMIT,
send_invoice: typing.Optional[bool] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> RetryCustomPlanBillingResponse:
@@ -1403,8 +1426,14 @@ async def retry_custom_plan_billing(
activation_strategy : typing.Optional[CustomPlanActivationStrategy]
+ billing_cycle_anchor : typing.Optional[dt.datetime]
+ The date the subscription's billing period renews on. Only honored when the retry creates a subscription.
+
days_until_due : typing.Optional[int]
+ prorate_first_period : typing.Optional[bool]
+ When true, the partial period between the subscription starting and its renewal date is billed pro rata straight away. When false that period is free and no invoice is raised until the renewal date. Only applies alongside billing_cycle_anchor. Defaults to true.
+
send_invoice : typing.Optional[bool]
Whether Stripe emails the invoice when it is finalized. Defaults to true.
@@ -1440,7 +1469,9 @@ async def main() -> None:
custom_plan_billing_id,
customer_email=customer_email,
activation_strategy=activation_strategy,
+ billing_cycle_anchor=billing_cycle_anchor,
days_until_due=days_until_due,
+ prorate_first_period=prorate_first_period,
send_invoice=send_invoice,
request_options=request_options,
)
@@ -2381,11 +2412,13 @@ async def publish_plan_version(
migration_strategy: PlanVersionMigrationStrategy,
activation_strategy: typing.Optional[CustomPlanActivationStrategy] = OMIT,
address: typing.Optional[CustomerBillingAddress] = OMIT,
+ billing_cycle_anchor: typing.Optional[dt.datetime] = OMIT,
coupon_external_id: typing.Optional[str] = OMIT,
custom_field_values: typing.Optional[typing.Sequence[CheckoutFieldValue]] = OMIT,
customer_email: typing.Optional[str] = OMIT,
days_until_due: typing.Optional[int] = OMIT,
phone: typing.Optional[str] = OMIT,
+ prorate_first_period: typing.Optional[bool] = OMIT,
proration_behavior: typing.Optional[MigrationProrationBehavior] = OMIT,
require_no_migration: typing.Optional[bool] = OMIT,
send_invoice: typing.Optional[bool] = OMIT,
@@ -2406,6 +2439,9 @@ async def publish_plan_version(
address : typing.Optional[CustomerBillingAddress]
+ billing_cycle_anchor : typing.Optional[dt.datetime]
+ The date the subscription's billing period renews on. Only honored on a first publish that starts a subscription.
+
coupon_external_id : typing.Optional[str]
custom_field_values : typing.Optional[typing.Sequence[CheckoutFieldValue]]
@@ -2416,6 +2452,9 @@ async def publish_plan_version(
phone : typing.Optional[str]
+ prorate_first_period : typing.Optional[bool]
+ When true, the partial period between the subscription starting and its renewal date is billed pro rata straight away. When false that period is free and no invoice is raised until the renewal date. Only applies alongside billing_cycle_anchor. Defaults to true.
+
proration_behavior : typing.Optional[MigrationProrationBehavior]
require_no_migration : typing.Optional[bool]
@@ -2449,7 +2488,7 @@ async def main() -> None:
await client.plans.publish_plan_version(
plan_version_id="plan_version_id",
excluded_company_ids=["excluded_company_ids"],
- migration_strategy="immediate",
+ migration_strategy="end_of_billing_period",
)
@@ -2461,11 +2500,13 @@ async def main() -> None:
migration_strategy=migration_strategy,
activation_strategy=activation_strategy,
address=address,
+ billing_cycle_anchor=billing_cycle_anchor,
coupon_external_id=coupon_external_id,
custom_field_values=custom_field_values,
customer_email=customer_email,
days_until_due=days_until_due,
phone=phone,
+ prorate_first_period=prorate_first_period,
proration_behavior=proration_behavior,
require_no_migration=require_no_migration,
send_invoice=send_invoice,
diff --git a/src/schematic/plans/raw_client.py b/src/schematic/plans/raw_client.py
index ea79dd8..30f542f 100644
--- a/src/schematic/plans/raw_client.py
+++ b/src/schematic/plans/raw_client.py
@@ -1,5 +1,6 @@
# This file was auto-generated by Fern from our API Definition.
+import datetime as dt
import typing
from json.decoder import JSONDecodeError
@@ -432,7 +433,9 @@ def retry_custom_plan_billing(
*,
customer_email: str,
activation_strategy: typing.Optional[CustomPlanActivationStrategy] = OMIT,
+ billing_cycle_anchor: typing.Optional[dt.datetime] = OMIT,
days_until_due: typing.Optional[int] = OMIT,
+ prorate_first_period: typing.Optional[bool] = OMIT,
send_invoice: typing.Optional[bool] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> HttpResponse[RetryCustomPlanBillingResponse]:
@@ -446,8 +449,14 @@ def retry_custom_plan_billing(
activation_strategy : typing.Optional[CustomPlanActivationStrategy]
+ billing_cycle_anchor : typing.Optional[dt.datetime]
+ The date the subscription's billing period renews on. Only honored when the retry creates a subscription.
+
days_until_due : typing.Optional[int]
+ prorate_first_period : typing.Optional[bool]
+ When true, the partial period between the subscription starting and its renewal date is billed pro rata straight away. When false that period is free and no invoice is raised until the renewal date. Only applies alongside billing_cycle_anchor. Defaults to true.
+
send_invoice : typing.Optional[bool]
Whether Stripe emails the invoice when it is finalized. Defaults to true.
@@ -464,8 +473,10 @@ def retry_custom_plan_billing(
method="PUT",
json={
"activation_strategy": activation_strategy,
+ "billing_cycle_anchor": billing_cycle_anchor,
"customer_email": customer_email,
"days_until_due": days_until_due,
+ "prorate_first_period": prorate_first_period,
"send_invoice": send_invoice,
},
headers={
@@ -2260,11 +2271,13 @@ def publish_plan_version(
migration_strategy: PlanVersionMigrationStrategy,
activation_strategy: typing.Optional[CustomPlanActivationStrategy] = OMIT,
address: typing.Optional[CustomerBillingAddress] = OMIT,
+ billing_cycle_anchor: typing.Optional[dt.datetime] = OMIT,
coupon_external_id: typing.Optional[str] = OMIT,
custom_field_values: typing.Optional[typing.Sequence[CheckoutFieldValue]] = OMIT,
customer_email: typing.Optional[str] = OMIT,
days_until_due: typing.Optional[int] = OMIT,
phone: typing.Optional[str] = OMIT,
+ prorate_first_period: typing.Optional[bool] = OMIT,
proration_behavior: typing.Optional[MigrationProrationBehavior] = OMIT,
require_no_migration: typing.Optional[bool] = OMIT,
send_invoice: typing.Optional[bool] = OMIT,
@@ -2285,6 +2298,9 @@ def publish_plan_version(
address : typing.Optional[CustomerBillingAddress]
+ billing_cycle_anchor : typing.Optional[dt.datetime]
+ The date the subscription's billing period renews on. Only honored on a first publish that starts a subscription.
+
coupon_external_id : typing.Optional[str]
custom_field_values : typing.Optional[typing.Sequence[CheckoutFieldValue]]
@@ -2295,6 +2311,9 @@ def publish_plan_version(
phone : typing.Optional[str]
+ prorate_first_period : typing.Optional[bool]
+ When true, the partial period between the subscription starting and its renewal date is billed pro rata straight away. When false that period is free and no invoice is raised until the renewal date. Only applies alongside billing_cycle_anchor. Defaults to true.
+
proration_behavior : typing.Optional[MigrationProrationBehavior]
require_no_migration : typing.Optional[bool]
@@ -2321,6 +2340,7 @@ def publish_plan_version(
"address": convert_and_respect_annotation_metadata(
object_=address, annotation=CustomerBillingAddress, direction="write"
),
+ "billing_cycle_anchor": billing_cycle_anchor,
"coupon_external_id": coupon_external_id,
"custom_field_values": convert_and_respect_annotation_metadata(
object_=custom_field_values, annotation=typing.Sequence[CheckoutFieldValue], direction="write"
@@ -2330,6 +2350,7 @@ def publish_plan_version(
"excluded_company_ids": excluded_company_ids,
"migration_strategy": migration_strategy,
"phone": phone,
+ "prorate_first_period": prorate_first_period,
"proration_behavior": proration_behavior,
"require_no_migration": require_no_migration,
"send_invoice": send_invoice,
@@ -2798,7 +2819,9 @@ async def retry_custom_plan_billing(
*,
customer_email: str,
activation_strategy: typing.Optional[CustomPlanActivationStrategy] = OMIT,
+ billing_cycle_anchor: typing.Optional[dt.datetime] = OMIT,
days_until_due: typing.Optional[int] = OMIT,
+ prorate_first_period: typing.Optional[bool] = OMIT,
send_invoice: typing.Optional[bool] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> AsyncHttpResponse[RetryCustomPlanBillingResponse]:
@@ -2812,8 +2835,14 @@ async def retry_custom_plan_billing(
activation_strategy : typing.Optional[CustomPlanActivationStrategy]
+ billing_cycle_anchor : typing.Optional[dt.datetime]
+ The date the subscription's billing period renews on. Only honored when the retry creates a subscription.
+
days_until_due : typing.Optional[int]
+ prorate_first_period : typing.Optional[bool]
+ When true, the partial period between the subscription starting and its renewal date is billed pro rata straight away. When false that period is free and no invoice is raised until the renewal date. Only applies alongside billing_cycle_anchor. Defaults to true.
+
send_invoice : typing.Optional[bool]
Whether Stripe emails the invoice when it is finalized. Defaults to true.
@@ -2830,8 +2859,10 @@ async def retry_custom_plan_billing(
method="PUT",
json={
"activation_strategy": activation_strategy,
+ "billing_cycle_anchor": billing_cycle_anchor,
"customer_email": customer_email,
"days_until_due": days_until_due,
+ "prorate_first_period": prorate_first_period,
"send_invoice": send_invoice,
},
headers={
@@ -4626,11 +4657,13 @@ async def publish_plan_version(
migration_strategy: PlanVersionMigrationStrategy,
activation_strategy: typing.Optional[CustomPlanActivationStrategy] = OMIT,
address: typing.Optional[CustomerBillingAddress] = OMIT,
+ billing_cycle_anchor: typing.Optional[dt.datetime] = OMIT,
coupon_external_id: typing.Optional[str] = OMIT,
custom_field_values: typing.Optional[typing.Sequence[CheckoutFieldValue]] = OMIT,
customer_email: typing.Optional[str] = OMIT,
days_until_due: typing.Optional[int] = OMIT,
phone: typing.Optional[str] = OMIT,
+ prorate_first_period: typing.Optional[bool] = OMIT,
proration_behavior: typing.Optional[MigrationProrationBehavior] = OMIT,
require_no_migration: typing.Optional[bool] = OMIT,
send_invoice: typing.Optional[bool] = OMIT,
@@ -4651,6 +4684,9 @@ async def publish_plan_version(
address : typing.Optional[CustomerBillingAddress]
+ billing_cycle_anchor : typing.Optional[dt.datetime]
+ The date the subscription's billing period renews on. Only honored on a first publish that starts a subscription.
+
coupon_external_id : typing.Optional[str]
custom_field_values : typing.Optional[typing.Sequence[CheckoutFieldValue]]
@@ -4661,6 +4697,9 @@ async def publish_plan_version(
phone : typing.Optional[str]
+ prorate_first_period : typing.Optional[bool]
+ When true, the partial period between the subscription starting and its renewal date is billed pro rata straight away. When false that period is free and no invoice is raised until the renewal date. Only applies alongside billing_cycle_anchor. Defaults to true.
+
proration_behavior : typing.Optional[MigrationProrationBehavior]
require_no_migration : typing.Optional[bool]
@@ -4687,6 +4726,7 @@ async def publish_plan_version(
"address": convert_and_respect_annotation_metadata(
object_=address, annotation=CustomerBillingAddress, direction="write"
),
+ "billing_cycle_anchor": billing_cycle_anchor,
"coupon_external_id": coupon_external_id,
"custom_field_values": convert_and_respect_annotation_metadata(
object_=custom_field_values, annotation=typing.Sequence[CheckoutFieldValue], direction="write"
@@ -4696,6 +4736,7 @@ async def publish_plan_version(
"excluded_company_ids": excluded_company_ids,
"migration_strategy": migration_strategy,
"phone": phone,
+ "prorate_first_period": prorate_first_period,
"proration_behavior": proration_behavior,
"require_no_migration": require_no_migration,
"send_invoice": send_invoice,
diff --git a/src/schematic/types/__init__.py b/src/schematic/types/__init__.py
index d2e72ba..fffc03f 100644
--- a/src/schematic/types/__init__.py
+++ b/src/schematic/types/__init__.py
@@ -313,11 +313,13 @@
from .onboarding_requirement import OnboardingRequirement
from .onboarding_requirement_status import OnboardingRequirementStatus
from .onboarding_requirement_view import OnboardingRequirementView
+ from .onboarding_stripe_import import OnboardingStripeImport
from .onboarding_track import OnboardingTrack
from .orb_integration_config import OrbIntegrationConfig
from .ordered_plans_in_group import OrderedPlansInGroup
from .payment_method_request_body import PaymentMethodRequestBody
from .payment_method_response_data import PaymentMethodResponseData
+ from .pending_migration_response_data import PendingMigrationResponseData
from .plan_billing_source import PlanBillingSource
from .plan_bundle_action import PlanBundleAction
from .plan_bundle_credit_grant_request_body import PlanBundleCreditGrantRequestBody
@@ -771,11 +773,13 @@
"OnboardingRequirement": ".onboarding_requirement",
"OnboardingRequirementStatus": ".onboarding_requirement_status",
"OnboardingRequirementView": ".onboarding_requirement_view",
+ "OnboardingStripeImport": ".onboarding_stripe_import",
"OnboardingTrack": ".onboarding_track",
"OrbIntegrationConfig": ".orb_integration_config",
"OrderedPlansInGroup": ".ordered_plans_in_group",
"PaymentMethodRequestBody": ".payment_method_request_body",
"PaymentMethodResponseData": ".payment_method_response_data",
+ "PendingMigrationResponseData": ".pending_migration_response_data",
"PlanBillingSource": ".plan_billing_source",
"PlanBundleAction": ".plan_bundle_action",
"PlanBundleCreditGrantRequestBody": ".plan_bundle_credit_grant_request_body",
@@ -1253,11 +1257,13 @@ def __dir__():
"OnboardingRequirement",
"OnboardingRequirementStatus",
"OnboardingRequirementView",
+ "OnboardingStripeImport",
"OnboardingTrack",
"OrbIntegrationConfig",
"OrderedPlansInGroup",
"PaymentMethodRequestBody",
"PaymentMethodResponseData",
+ "PendingMigrationResponseData",
"PlanBillingSource",
"PlanBundleAction",
"PlanBundleCreditGrantRequestBody",
diff --git a/src/schematic/types/company_detail_response_data.py b/src/schematic/types/company_detail_response_data.py
index 9defe7c..e9c0dd2 100644
--- a/src/schematic/types/company_detail_response_data.py
+++ b/src/schematic/types/company_detail_response_data.py
@@ -14,6 +14,7 @@
from .feature_entitlement import FeatureEntitlement
from .generic_preview_object import GenericPreviewObject
from .payment_method_response_data import PaymentMethodResponseData
+from .pending_migration_response_data import PendingMigrationResponseData
from .rule import Rule
from .scheduled_downgrade_response_data import ScheduledDowngradeResponseData
@@ -36,6 +37,7 @@ class CompanyDetailResponseData(UniversalBaseModel):
metrics: typing.List[CompanyEventPeriodMetricsResponseData]
name: str
payment_methods: typing.List[PaymentMethodResponseData]
+ pending_migration: typing.Optional[PendingMigrationResponseData] = None
plan: typing.Optional[CompanyPlanWithBillingSubView] = None
plans: typing.List[GenericPreviewObject]
rules: typing.List[Rule]
diff --git a/src/schematic/types/credit_lease_response_data.py b/src/schematic/types/credit_lease_response_data.py
index cc98f48..28a72b4 100644
--- a/src/schematic/types/credit_lease_response_data.py
+++ b/src/schematic/types/credit_lease_response_data.py
@@ -15,6 +15,7 @@ class CreditLeaseResponseData(UniversalBaseModel):
granted_amount: float
id: str
released_at: typing.Optional[dt.datetime] = None
+ tracked_amount: float
updated_at: dt.datetime
if IS_PYDANTIC_V2:
diff --git a/src/schematic/types/custom_plan_billing_response_data.py b/src/schematic/types/custom_plan_billing_response_data.py
index 40e3300..d169342 100644
--- a/src/schematic/types/custom_plan_billing_response_data.py
+++ b/src/schematic/types/custom_plan_billing_response_data.py
@@ -29,6 +29,11 @@ class CustomPlanBillingResponseData(UniversalBaseModel):
"""
plan_id: str
+ prorate_first_period: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ Whether the shortened period the renewal date created was billed pro rata when the subscription started. False means that period is free and the first invoice is the one raised on the renewal date.
+ """
+
published_at: typing.Optional[dt.datetime] = None
send_invoice: bool
status: CustomPlanBillingStatus
diff --git a/src/schematic/types/get_onboarding_state_resp.py b/src/schematic/types/get_onboarding_state_resp.py
index 47d3b11..48f0bd2 100644
--- a/src/schematic/types/get_onboarding_state_resp.py
+++ b/src/schematic/types/get_onboarding_state_resp.py
@@ -1,5 +1,6 @@
# This file was auto-generated by Fern from our API Definition.
+import datetime as dt
import typing
import pydantic
@@ -8,16 +9,22 @@
from .onboarding_path import OnboardingPath
from .onboarding_requirement import OnboardingRequirement
from .onboarding_requirement_view import OnboardingRequirementView
+from .onboarding_stripe_import import OnboardingStripeImport
from .onboarding_track import OnboardingTrack
class GetOnboardingStateResp(UniversalBaseModel):
+ agent_connected_at: typing.Optional[dt.datetime] = None
+ dismissed_at: typing.Optional[dt.datetime] = None
environment_id: typing.Optional[str] = None
milestones: typing.List[OnboardingMilestoneView]
path: typing.Optional[OnboardingPath] = None
+ pricing_page_url: typing.Optional[str] = None
requirements: typing.List[OnboardingRequirementView]
+ stripe_import: typing.Optional[OnboardingStripeImport] = None
suggested_next: typing.List[OnboardingRequirement]
track: typing.Optional[OnboardingTrack] = None
+ website_url: typing.Optional[str] = None
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
diff --git a/src/schematic/types/onboarding_requirement.py b/src/schematic/types/onboarding_requirement.py
index cd0ed65..7d00067 100644
--- a/src/schematic/types/onboarding_requirement.py
+++ b/src/schematic/types/onboarding_requirement.py
@@ -4,7 +4,13 @@
OnboardingRequirement = typing.Union[
typing.Literal[
- "connect_billing", "create_api_key", "first_flag_check", "import_companies", "model_packaging", "send_events"
+ "connect_agent",
+ "connect_billing",
+ "create_api_key",
+ "first_flag_check",
+ "import_companies",
+ "model_packaging",
+ "send_events",
],
typing.Any,
]
diff --git a/src/schematic/types/onboarding_stripe_import.py b/src/schematic/types/onboarding_stripe_import.py
new file mode 100644
index 0000000..9cfdd25
--- /dev/null
+++ b/src/schematic/types/onboarding_stripe_import.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+OnboardingStripeImport = typing.Union[typing.Literal["complete", "not_started", "running"], typing.Any]
diff --git a/src/schematic/types/pending_migration_response_data.py b/src/schematic/types/pending_migration_response_data.py
new file mode 100644
index 0000000..4d881db
--- /dev/null
+++ b/src/schematic/types/pending_migration_response_data.py
@@ -0,0 +1,25 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
+
+
+class PendingMigrationResponseData(UniversalBaseModel):
+ migration_id: str
+ scheduled_for: typing.Optional[dt.datetime] = None
+ to_plan_id: str
+ to_plan_name: str
+ to_plan_version_id: str
+ to_plan_version_number: typing.Optional[int] = 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/schematic/types/plan_version_company_migration_response_data.py b/src/schematic/types/plan_version_company_migration_response_data.py
index c38c833..6f4100a 100644
--- a/src/schematic/types/plan_version_company_migration_response_data.py
+++ b/src/schematic/types/plan_version_company_migration_response_data.py
@@ -19,6 +19,11 @@ class PlanVersionCompanyMigrationResponseData(UniversalBaseModel):
id: str
migration_id: str
plan_version_id_from: typing.Optional[str] = None
+ scheduled_for: typing.Optional[dt.datetime] = pydantic.Field(default=None)
+ """
+ When this company is expected to migrate, for a migration scheduled at the end of the billing period: the end of the company's current billing period. Only set while both the company and the migration are still pending. A value at or before the time of the request means the company has no active subscription and migrates as soon as processing runs. Null means no upcoming renewal could be determined from the company's current billing status (for example, a past-due subscription or one set to cancel); it does not mean the company will never migrate.
+ """
+
started_at: typing.Optional[dt.datetime] = None
status: PlanVersionCompanyMigrationStatus
updated_at: dt.datetime
diff --git a/src/schematic/types/plan_version_company_migration_status.py b/src/schematic/types/plan_version_company_migration_status.py
index 4984db4..44093a3 100644
--- a/src/schematic/types/plan_version_company_migration_status.py
+++ b/src/schematic/types/plan_version_company_migration_status.py
@@ -3,5 +3,5 @@
import typing
PlanVersionCompanyMigrationStatus = typing.Union[
- typing.Literal["completed", "failed", "in_progress", "pending", "skipped"], typing.Any
+ typing.Literal["cancelled", "completed", "failed", "in_progress", "pending", "skipped"], typing.Any
]
diff --git a/src/schematic/types/plan_version_migration_response_data.py b/src/schematic/types/plan_version_migration_response_data.py
index 31a404d..a78a65e 100644
--- a/src/schematic/types/plan_version_migration_response_data.py
+++ b/src/schematic/types/plan_version_migration_response_data.py
@@ -17,6 +17,7 @@ class PlanVersionMigrationResponseData(UniversalBaseModel):
error: typing.Optional[str] = None
failed_companies: int
id: str
+ next_due_at: typing.Optional[dt.datetime] = None
plan_id: str
plan_version_id_from: typing.Optional[str] = None
plan_version_id_to: str
diff --git a/src/schematic/types/plan_version_migration_status.py b/src/schematic/types/plan_version_migration_status.py
index 68d1d3e..50163d3 100644
--- a/src/schematic/types/plan_version_migration_status.py
+++ b/src/schematic/types/plan_version_migration_status.py
@@ -2,4 +2,6 @@
import typing
-PlanVersionMigrationStatus = typing.Union[typing.Literal["completed", "failed", "in_progress", "pending"], typing.Any]
+PlanVersionMigrationStatus = typing.Union[
+ typing.Literal["cancelled", "completed", "failed", "in_progress", "pending"], typing.Any
+]
diff --git a/src/schematic/types/plan_version_migration_strategy.py b/src/schematic/types/plan_version_migration_strategy.py
index 8d70b32..a0d3913 100644
--- a/src/schematic/types/plan_version_migration_strategy.py
+++ b/src/schematic/types/plan_version_migration_strategy.py
@@ -2,4 +2,4 @@
import typing
-PlanVersionMigrationStrategy = typing.Union[typing.Literal["immediate", "leave"], typing.Any]
+PlanVersionMigrationStrategy = typing.Union[typing.Literal["end_of_billing_period", "immediate", "leave"], typing.Any]