diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index d9a6cde2..0d07f9bc 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,25 +1,25 @@ lockVersion: 2.0.0 id: bfe29c99-6e67-43fe-b928-64d6a5ed6aa8 management: - docChecksum: b74e8bcf6a5b2fa6ad456d84d54e6217 + docChecksum: 520c46e81808b82f8adcce4abe8850da docVersion: "2025-11-10" - speakeasyVersion: 1.758.0 - generationVersion: 2.866.2 - releaseVersion: 5.0.6 - configChecksum: b0066396b877dd1101fbe62e5b0e71a0 + speakeasyVersion: 1.761.1 + generationVersion: 2.879.6 + releaseVersion: 5.0.7 + configChecksum: 40a7024c7ddc4c58127d1f1ee9e526fa repoURL: https://github.com/clerk/clerk-sdk-python.git installationURL: https://github.com/clerk/clerk-sdk-python.git published: true persistentEdits: - generation_id: a87cf6de-e659-44ba-91ce-29f6e171b23f - pristine_commit_hash: dba7912e7c39dc2b0591d4fa690bd3ec7a988392 - pristine_tree_hash: c2209da6f68b5cb0172729ee7c27dd1bb1717c40 + generation_id: 934e6110-88a4-4299-8062-3094f26ccfa6 + pristine_commit_hash: 69e83041d5f79b7b05bc93becef305ca8f6ba80e + pristine_tree_hash: 3a88cb8c128172effe36be3ada40db953313d0a7 features: python: additionalDependencies: 1.0.0 additionalProperties: 1.0.1 constsAndDefaults: 1.0.7 - core: 6.0.19 + core: 6.0.21 customCodeRegions: 0.1.1 defaultEnabledRetries: 0.2.0 deprecations: 3.0.2 @@ -28,7 +28,7 @@ features: examples: 3.0.3 flatRequests: 1.0.1 flattening: 3.1.1 - globalSecurity: 3.0.5 + globalSecurity: 3.0.7 globalSecurityCallbacks: 1.0.0 globalSecurityFlattening: 1.0.0 globalServerURLs: 3.2.1 @@ -110,8 +110,8 @@ trackedFiles: pristine_git_object: 758c005e673e124a8ea599cad785a42ed23f4dde docs/models/agenttask.md: id: a41b99322257 - last_write_checksum: sha1:1ae563b8e96d875bb286b8e0e4a78e5d9a2f07ee - pristine_git_object: 686502d871c8934c3c6bc5bac38e3968a645749d + last_write_checksum: sha1:25f587bc0658c2e5f6f032aa389d5888ff2a6e28 + pristine_git_object: 82b099a14952517d7f4d9d17e9996401ec9d16ca docs/models/agenttaskobject.md: id: fac60e8adb3d last_write_checksum: sha1:c33bd89a7ffbf2822c835bc1e73f508511c2f896 @@ -182,8 +182,16 @@ trackedFiles: pristine_git_object: 04e35934aab98b338857a0703bd22e7a3d12cd4b docs/models/billingpriceresponse.md: id: db38a8f67a7b - last_write_checksum: sha1:10cc2f9f6aa4b01fa5c43639573693355c36fde6 - pristine_git_object: 03d82b3cfae3f9503e8433ac3c689632603556d5 + last_write_checksum: sha1:e0dc05efd036e485bf93f93e4aa03f165d40cc08 + pristine_git_object: 12971a1c7561d929360c514d2e3447fb9b5a9edf + docs/models/billingpriceresponseannualmonthlyfee.md: + id: 551bbe21f5fd + last_write_checksum: sha1:86ac12c8f7538cb3bc72d2762d6bb306bc52f2d3 + pristine_git_object: 7c7709c28d6ca16918e1ceeb9ab8be34bc9d30ea + docs/models/billingpriceresponsefee.md: + id: db40da2450a6 + last_write_checksum: sha1:776cec5f905eaf146f4e0c7bcafb0abf874c4f94 + pristine_git_object: 786bf38816e412993b26ba58524a719677b2defa docs/models/billingpriceresponseobject.md: id: 3c0f3c31ffb4 last_write_checksum: sha1:da10dc26785b9e9e61cae3375429d788cccea83b @@ -326,8 +334,8 @@ trackedFiles: pristine_git_object: 65998837eabdff7b04a6689e41a1a6201b45af3d docs/models/commerceplan.md: id: 02500030883c - last_write_checksum: sha1:b95847038e36e48007fb4f9585f0d156b41c5d8a - pristine_git_object: bc5f02a0e047fc2154bda86c6a586220536585b4 + last_write_checksum: sha1:680348b7d2a06eef0ed95480bedbe76a114b1670 + pristine_git_object: de699597b042bca96bba6270fbe3980c5f9ca172 docs/models/commerceplanobject.md: id: 01a815f37af4 last_write_checksum: sha1:85b9dabc3838f6aa06ce6e023166adf8839a8bc2 @@ -380,6 +388,10 @@ trackedFiles: id: 1a628479fb20 last_write_checksum: sha1:b046cf3a742bc064f66ecaf9938b8887eb5d5ec3 pristine_git_object: e0c9f112de5814eee3eb311a9126ae128340b831 + docs/models/commercesubscriptionitemfee.md: + id: d231986b6979 + last_write_checksum: sha1:389f9fb931e206c392b328bb3b038b657fe5be21 + pristine_git_object: 8afcc8d34f85df79d70613a153a08a540209a9d9 docs/models/commercesubscriptionitemobject.md: id: 7c4b622b9a11 last_write_checksum: sha1:00dda43c1119b964bcba4927fb648d5d7a30783d @@ -470,8 +482,8 @@ trackedFiles: pristine_git_object: 4d75bfc9b72f4a5890dfc567884beb8fddc7e211 docs/models/createbillingpricerequest.md: id: 125c5d321b4f - last_write_checksum: sha1:52f1fb1fd31f2c460b77a851e5b6bdb86eb3d764 - pristine_git_object: c0602ce9f9b42fe44ba5aa1840dbb4bf041cb63c + last_write_checksum: sha1:22c75317e3834ca6304788c2702fd52a26f20fce + pristine_git_object: 6393b1e1d73482f7e60c5748877085cf737287b1 docs/models/createbillingpricetransitionrequest.md: id: 2f54882189ae last_write_checksum: sha1:351cd681d4e927f0b39d172358a2959d7391d856 @@ -496,10 +508,14 @@ trackedFiles: id: 91668d7b58d7 last_write_checksum: sha1:1595f8d8f6c3399238bd316045fd2702bcbecbdf pristine_git_object: 0a71dccc66dbe435ccd8d8bbf6d618a510119154 + docs/models/createenterpriseconnectioncustomattributes.md: + id: c0f9ed259c84 + last_write_checksum: sha1:a37dda7ebaa4fd4e03cd8137879590714b0ca1c7 + pristine_git_object: 7bfb1a9266ba8f9087a5cf9adf1922833b961142 docs/models/createenterpriseconnectionrequestbody.md: id: 00f05e3e96ba - last_write_checksum: sha1:8039ce173d8a673bc783cd938f1cbf73deac9404 - pristine_git_object: a254905887a3b29043a3665f78ee796007cb51fd + last_write_checksum: sha1:b9028d00fbcf5ea4455a07a5451e81dd6529af61 + pristine_git_object: b2c9519c23bc3f8ee3e4c83e01870f263da78440 docs/models/createenterpriseconnectionsaml.md: id: 139d99b40c0c last_write_checksum: sha1:b8392066a5c7f53813787744c55c0e988ff41a54 @@ -692,6 +708,10 @@ trackedFiles: id: 5a24a26e67da last_write_checksum: sha1:cb9e47011f3f52a22c02fdb2c5cd09cacc4bf329 pristine_git_object: 2462c6f9b079d5f1d4d8f340e2418fccff59a20d + docs/models/customattributes.md: + id: f92493c0ab68 + last_write_checksum: sha1:3d632098f8aa0d606d2dfeade4bd01a055fcfc36 + pristine_git_object: 4ef008eff9c803bc155402bd40e9cbf4bd580e04 docs/models/data.md: id: 9a31987caf78 last_write_checksum: sha1:b1fda835a4dde5725d68615b0cf7eedfe06bab9f @@ -960,6 +980,10 @@ trackedFiles: id: c79886fd72f5 last_write_checksum: sha1:28a9e121adc2c77565d74e2962449ac67e48afcf pristine_git_object: a6529cbe75e8ca789f363df60c6626d66fbc2209 + docs/models/fee.md: + id: 2f7fde11efe6 + last_write_checksum: sha1:d82ae5442bb4ad0bd7b89a7b8eb128824bcd4779 + pristine_git_object: e5da68e2ee83734d902fab7a56afaf858f4e391c docs/models/file.md: id: 4ad31355bd1c last_write_checksum: sha1:ade4d3c908c664a07a3c333cc24bc1bfb43ab88b @@ -1578,24 +1602,24 @@ trackedFiles: pristine_git_object: 36dc1daa06095402ca8034542d2f2193c868a729 docs/models/oauthconfig.md: id: 702c98bd8aac - last_write_checksum: sha1:8e8b966bd1ebf786002c1778aacd094235f389ae - pristine_git_object: eacce93e78ea162c052c748e327ba775a45d0160 + last_write_checksum: sha1:8d4b12ba6344e573927a3f5ae8ab39fd16530666 + pristine_git_object: 095e976cfe8ecd5ff490e2a17e60b69f67e8f948 docs/models/object.md: id: 7ffe67d0b83f last_write_checksum: sha1:4548f466e0d55207132b238be766e05d40e448a3 pristine_git_object: bef0753ed87a3acd5835faa52b710f2bde3c0014 docs/models/oidc.md: id: a9c0de0b0540 - last_write_checksum: sha1:3c406ce9f781a6ee4426b0d5935906a0cfc279c4 - pristine_git_object: 27b83266fcc94951f67d83eac203c5282676c47d + last_write_checksum: sha1:4981f687ce37381713eaea864456b1ff79846b4c + pristine_git_object: 20f82269b913ac16a2e7fb3c4f41d0e044c05f2b docs/models/onbehalfof.md: id: 27a8fd6c07d1 last_write_checksum: sha1:1012d439a3b90f45fcba4c9a142a4227dd68b24f pristine_git_object: 409a83fe7e2b8a2fb2c42aec3120f31610830488 docs/models/one.md: id: 69a5df93c480 - last_write_checksum: sha1:aaaa8fb610c2a91100f530ffb2ff6b5700c3b7c6 - pristine_git_object: 5e542411413b03d79bd5e456bae1431b2ccc268b + last_write_checksum: sha1:9ce98be0bdb82de4a170e37890082b051ac526bb + pristine_git_object: 81ffd23710690db14b413879fa92ebf156d6277e docs/models/organization.md: id: ea9c215ca2eb last_write_checksum: sha1:6b63d19916f5d8c770bd338bfe9dafb1ec258fa6 @@ -1790,8 +1814,8 @@ trackedFiles: pristine_git_object: 2bbc67deb98c9decedbe8bf5d94dd03a5e5d626a docs/models/plan.md: id: 900c4149ef4b - last_write_checksum: sha1:c836f8e27e9c088462703dea97953b0b067bc5e2 - pristine_git_object: c07c6b8cf8e423e734c02a5a1cee601552052f86 + last_write_checksum: sha1:e9625705ac0ee53e0703cf2a682beb8464acd7c9 + pristine_git_object: 0dc88389e6ba0361dcce48d9379c0322f57745cb docs/models/planperiod.md: id: b942ce9be6fb last_write_checksum: sha1:3f7e04f74c3027d85a072096844a291dd781c00d @@ -1826,8 +1850,8 @@ trackedFiles: pristine_git_object: aac70bef1afc39b4a08b095d4c88ab7abadfe34a docs/models/provider.md: id: cedb2a98f8e3 - last_write_checksum: sha1:deafca7b01efa19f7e573e8f7d4ec33c65de8bd6 - pristine_git_object: 71d1a731ff468a62d52603ada724e399590edfb6 + last_write_checksum: sha1:df87893897aac9916aa480408beae9d7b04bea5a + pristine_git_object: 045d468981c9bb5999e02b490357dbc1dee9f32e docs/models/proxycheck.md: id: 97c1b1ebb08f last_write_checksum: sha1:da503cd8d00de44023d4965baf37ac7f12a5fc0a @@ -2126,8 +2150,20 @@ trackedFiles: pristine_git_object: 7c175e9f24de246ecc1eadf8d597b2ac39f9d742 docs/models/schemascommerceplan.md: id: e31fed3b5ba6 - last_write_checksum: sha1:da8ad5898a51e8a33d1875442f65fefc88cd0cd9 - pristine_git_object: 2893aa190f4bfac932e26b0b44de127f5e3d388e + last_write_checksum: sha1:4b89885fe04c4e1144cc471739967bb3e3236f12 + pristine_git_object: 72d7df3120d07657372fc9b6caacf48021e1f402 + docs/models/schemascommerceplanannualfee.md: + id: 0c748b722d84 + last_write_checksum: sha1:c091972ebc82327295abed464f494d1687c01887 + pristine_git_object: d89eafb767cfb2e391d2bc4c872f3907c79a3921 + docs/models/schemascommerceplanannualmonthlyfee.md: + id: dc7792f3f094 + last_write_checksum: sha1:d3a6d16045e54ee8428fdf9367b0629b45a6b4d7 + pristine_git_object: 5d102134a23e4078848ca8c03c28e1e6621bd385 + docs/models/schemascommerceplanfee.md: + id: 2b5dd6804d88 + last_write_checksum: sha1:654e96ab2336aee4aba4f1037c719c34cc5362cc + pristine_git_object: 5ba0661b581e2669a471527ef074b417105679fa docs/models/schemascommerceplanobject.md: id: 67f9e9ddb730 last_write_checksum: sha1:0c61cab1318bbb2c5913ce8d8afa4097b1b46ebb @@ -2140,10 +2176,22 @@ trackedFiles: id: 4d5532405ffd last_write_checksum: sha1:231418c1400f8c442c052eb919a4c24611804ba1 pristine_git_object: 033272244d9d07fc09ce16a46f0fffbe3a562154 + docs/models/schemascommercesubscriptionitemannualfee.md: + id: b3a9aaa80262 + last_write_checksum: sha1:0da4b7954218bfe7e074eeeb65fcf6eb33e21327 + pristine_git_object: 7027ae7e86ec2fd8f088b4e9ddea0fbc2ba574e0 + docs/models/schemascommercesubscriptionitemannualmonthlyfee.md: + id: 932582f640aa + last_write_checksum: sha1:685d12541e0761be04cc644511192aee60b35ec0 + pristine_git_object: f64e0c4463a9bbfc226751961a2190e967aeea35 docs/models/schemascommercesubscriptionitemcreditamount.md: id: 09df5555784a last_write_checksum: sha1:5d97a1d1c79d4f313a3d2b714993e917ab2cf6b8 pristine_git_object: 4395358910470c498fd85ec1a3ef55eccb33d0ca + docs/models/schemascommercesubscriptionitemfee.md: + id: 3147052585d8 + last_write_checksum: sha1:151d5a08a2e822aaba55ee239ea5cc294ae7659c + pristine_git_object: 4f5f79badbe9874591a7f4f1eb8c1313718f0ab0 docs/models/schemascommercesubscriptionitemnextinvoiceamount.md: id: 563a4765aeb6 last_write_checksum: sha1:42e744fc46b0b7f2c9d0df990eb1aec740736b97 @@ -2174,8 +2222,8 @@ trackedFiles: pristine_git_object: edf81824937c63791b9d323e26ed5750e3f19df1 docs/models/schemascommercesubscriptionitemplan.md: id: 4f2f2767d0fb - last_write_checksum: sha1:8737a3ada42b8f4d5e80167167bc6f70e201d6f7 - pristine_git_object: 608d099b10809c421540594cb09e0438716d13bd + last_write_checksum: sha1:e826a6dca8b59463c3de682896ab0bd512f1df39 + pristine_git_object: fc43e9beb3a493dddcf8e720b022e59d6d807684 docs/models/schemascommercesubscriptionitemplanobject.md: id: e2f951a02cc6 last_write_checksum: sha1:5c5ed09983a02ccf7fc995c07cad09e565743f2f @@ -2190,8 +2238,8 @@ trackedFiles: pristine_git_object: 6e35d845dc738f87761d331bfc04c9ea7a914960 docs/models/schemasenterpriseconnection.md: id: ac6f2bb02a3d - last_write_checksum: sha1:2c88610852ee5e042f8895a370befce6b34582b0 - pristine_git_object: da2b78ca5463add5a2d83550e3500ee6890eac50 + last_write_checksum: sha1:67ebf8cf475b7da5b88770bfc2fd41c4db140500 + pristine_git_object: 8d81acc28cdd714e0acad4271d25faf57c1212b9 docs/models/schemasenterpriseconnectionsamlconnection.md: id: 2849d7c9f488 last_write_checksum: sha1:47041e5923126cbf83e7e710538afce5d4063198 @@ -2378,8 +2426,8 @@ trackedFiles: pristine_git_object: 7c94d87ba2983245a7a69f024c72b6090ea5bf14 docs/models/two.md: id: 3720b8efc931 - last_write_checksum: sha1:314e43073aa00a19e2de3bf0996ab0dba2bd583b - pristine_git_object: 6351bace5391744cf56615eb7ba0942481096cb2 + last_write_checksum: sha1:be9c88f3fa437739d9920448a7228c6e641902cc + pristine_git_object: a0dd298b18bff59ae3ca820a76a0e006f7de8a89 docs/models/type.md: id: 98c32f09b2c8 last_write_checksum: sha1:30b20d26f9bf3a7a2e28765a067e0c2223cbfb76 @@ -2448,18 +2496,22 @@ trackedFiles: id: a53a18306c6d last_write_checksum: sha1:f30ee2b412f2b9e6a287c96f8541cdc623324931 pristine_git_object: 8e6ca0bc333d3edf2fda0a07cafcf42f5e2d3dac + docs/models/updateenterpriseconnectioncustomattributes.md: + id: ff4a9ba508f8 + last_write_checksum: sha1:9964d4659595e4c2682858730563aa8fd58a2f28 + pristine_git_object: 76e2fb6efbc584924e1877a7054b5de4d13530d4 docs/models/updateenterpriseconnectionoidc.md: id: 5d1cc56f77d2 - last_write_checksum: sha1:7976ce7f6f8727ea5be4d0eee2df2dfe0aef0569 - pristine_git_object: 50016113cb57742acd7dcf804f0b674f2e850788 + last_write_checksum: sha1:e5fd04250853fdddf770cda2bba1e1f0e37d888a + pristine_git_object: 14364b3565bc4be31bf5e9e0165ead11594ad802 docs/models/updateenterpriseconnectionrequest.md: id: 8486d771a1a7 last_write_checksum: sha1:4212905a3e1cc05b0821028c2ff07c814cf26c03 pristine_git_object: 67325e726adb41be236bab37edd991738adfd5f3 docs/models/updateenterpriseconnectionrequestbody.md: id: 045dcea6caff - last_write_checksum: sha1:2643317eef479e96d6db2ac7d908e983e9b37c34 - pristine_git_object: a62993e266e2cf262bf92e2a4f9c253b045e8359 + last_write_checksum: sha1:50958baf04dcd82458fb7c029e38eb999c4a255a + pristine_git_object: 6eb7163547cf3034be73f640040856ec66872940 docs/models/updateenterpriseconnectionsaml.md: id: a8740b2681d8 last_write_checksum: sha1:352188bd7366d0e78e97e430e9d855d3fa7cf0ba @@ -2594,8 +2646,8 @@ trackedFiles: pristine_git_object: c126843b721b472392a1a5a1acd1702e185e51ff docs/models/updatesamlconnectionrequestbody.md: id: 82dcd79180d6 - last_write_checksum: sha1:8d387027349d64f082971bb4f624ce02576b8bf0 - pristine_git_object: dcb4a99fd9ccab80531628eb9f853c9b09f42ece + last_write_checksum: sha1:1ee1984e545ab9c34864a8c3854f360d0ba9db89 + pristine_git_object: e00926cd631eeed54ae11d85fe0685bf22e7ebf9 docs/models/updatesignuprequest.md: id: ef934a29dc73 last_write_checksum: sha1:d7f9c8b15ae8891933891d545fe5a7b91da9d10e @@ -3138,8 +3190,8 @@ trackedFiles: pristine_git_object: d048d739fb5b2392930eb284eedea95d6efcd9a8 docs/sdks/agenttasks/README.md: id: 809f9d21a2ba - last_write_checksum: sha1:49e203c396b97973c3bf8e8e3e1bbd6739d295c1 - pristine_git_object: f82d65de22296c8ec3afe5f0a028e21d8e7ac1c6 + last_write_checksum: sha1:37b19fb026c75bf63c9fdd55a07a903a1d91d22a + pristine_git_object: d56f0ae59a38adaffa82ac2812d117a81756f397 docs/sdks/allowlistidentifiers/README.md: id: e8a186582c92 last_write_checksum: sha1:5800fd6e2a20cdbd4fc94980818405e696f6aa4b @@ -3154,8 +3206,8 @@ trackedFiles: pristine_git_object: 35f3f36a78c00a226b588f68ef192a3375c2c4d2 docs/sdks/billing/README.md: id: dc915331dd9d - last_write_checksum: sha1:689dbd28ca86fc32018890b41c1d83efeee7af7e - pristine_git_object: 65bb2ccbf926c280fbdc24f7d60b7822912aa64b + last_write_checksum: sha1:5df507b60cf08279bb729536b1aaddbba6422e18 + pristine_git_object: 8745c8b60f2bff4c93bb295541086ed0c7f258ae docs/sdks/blocklistidentifierssdk/README.md: id: 8c5a4397c841 last_write_checksum: sha1:2b250f0eb6ba83fce9a645c9439358b6e6600654 @@ -3170,8 +3222,8 @@ trackedFiles: pristine_git_object: b4c5071dcbedcd6a5f60034a54e00ed3055a40af docs/sdks/emailaddresses/README.md: id: f5fd208070d3 - last_write_checksum: sha1:5889a7dfc387ac07e32e7c8cf70189ee1ddfbfd5 - pristine_git_object: 586ce69d5f7f8b6f2c95a99574e9e49c69948d1a + last_write_checksum: sha1:eb0ad89b0b6c0b529beed7d331e7dc89d92c22b9 + pristine_git_object: 0f962e308cffcc3a80e78c408321dc30ac185735 docs/sdks/emailandsmstemplates/README.md: id: f97f5a6195f4 last_write_checksum: sha1:21182fc1ed3c6c111146691d07b034937d82f029 @@ -3182,8 +3234,8 @@ trackedFiles: pristine_git_object: 40d266c0ca71b4a042c1624998026a9565b4a627 docs/sdks/enterpriseconnectionssdk/README.md: id: f2a1e2452c9d - last_write_checksum: sha1:f45225d4ed0ebc72ba9f4456357933cf5b040bbb - pristine_git_object: 0ceb9347d3e836580abc646ee57f846411757f53 + last_write_checksum: sha1:9f593936e487e3fed6464802128ecbd59ae0a17b + pristine_git_object: 71dd45081e4cb1341eac135533495855fd8fa4d2 docs/sdks/instancesettingssdk/README.md: id: acfc6e2cdd5f last_write_checksum: sha1:c0ecee88e35b3aab3f32a36efd9f57f01caef8f0 @@ -3262,8 +3314,8 @@ trackedFiles: pristine_git_object: 274348119cfc9c4dedebd4ecf4f995c44832e2af docs/sdks/samlconnectionssdk/README.md: id: d7f9ac682d87 - last_write_checksum: sha1:5ed7869e66017e21bdb6b7f8433f57764497631f - pristine_git_object: 538a69cd66ee0443db389b1e8e04c9dd6ffd0b65 + last_write_checksum: sha1:e1893dd27775fcd00b1d82e9ef16936958d2b720 + pristine_git_object: 94dc2129fdc801c2fed1da5864b083a0a2cc2abb docs/sdks/sessions/README.md: id: 57ad62844f79 last_write_checksum: sha1:aa90f444d0a8b6efe38e390d7987b634eb07ca9a @@ -3310,8 +3362,8 @@ trackedFiles: pristine_git_object: 7fd8db13ad9399ab075a5fb70e6da17525ad3ed0 pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:78934d53bd20759f2f33b34628184d8db87e74b1 - pristine_git_object: e647d550da910808e64f6d5e27b734c3822ba748 + last_write_checksum: sha1:8b52aa1e0d533459ecfb7f8a1ab124e23694af1f + pristine_git_object: ede95bcaa40de1d8a4923f46e66e5a87f59e06e4 scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:419f10ccc385a29136e599315b61a0aa7a1c3e15 @@ -3338,16 +3390,16 @@ trackedFiles: pristine_git_object: 4926429d3dfb2c34589715971acb070ed3756559 src/clerk_backend_api/_version.py: id: 9bcb16a88e08 - last_write_checksum: sha1:b09adf154953e93b49e587c35f39f730cee42ff1 - pristine_git_object: 852014023376a2f99bb9172aee82898a453b82ea + last_write_checksum: sha1:06ea9626c75247504146313e68eaf7b3363915d0 + pristine_git_object: 63784cdd61086b53ff0ca4dba6e9e8e23a7e5fa2 src/clerk_backend_api/actortokens.py: id: 3b3f89863233 last_write_checksum: sha1:b83001f21b2750ff95b82cc953ae588d8468d82a pristine_git_object: b736851584d478610d4d94a3c9690878db20aba1 src/clerk_backend_api/agenttasks.py: id: d3c079113f2a - last_write_checksum: sha1:b90b1b412696bf33b90090cea53ac2b13341207c - pristine_git_object: dcf9da19f950a77676ec642a282a5578e38d6f89 + last_write_checksum: sha1:73fa4d3401831896dff222b4c12acc902a63f654 + pristine_git_object: 1ad830ddf2d1b7cd1d6668bc2e2699706318caf2 src/clerk_backend_api/allowlistidentifiers.py: id: 70ccf975110b last_write_checksum: sha1:a2d5205ee0068d14b702ea9ac2ebb0c28d8c9aa3 @@ -3358,16 +3410,16 @@ trackedFiles: pristine_git_object: 9fe6026d2da496d071ded823b648b925131421d8 src/clerk_backend_api/basesdk.py: id: 5a15c2d94747 - last_write_checksum: sha1:e5e76e4c14416f24b81df63939e6b63983703eb6 - pristine_git_object: eb488183d4c82930b91d5d78ed96d066f4599530 + last_write_checksum: sha1:d9240c5e43b518e414859f978127e4969d21b985 + pristine_git_object: 93b83709de54f3f6a236b8145ad635f1898e437c src/clerk_backend_api/betafeatures.py: id: ad6307385dcf last_write_checksum: sha1:c54636b28c5b7e0d6cb2e721e7cd7acfac0de3da pristine_git_object: 9f7613ba5d9963c0ed011dd5ef46fa33c2f6403d src/clerk_backend_api/billing.py: id: d2a23482b2e9 - last_write_checksum: sha1:dd51b80760cca7e812d72ea203cf3183e8989c86 - pristine_git_object: f488b1a0fe3c49d3b7e720fff682102aa24a13cd + last_write_checksum: sha1:9cdba548eac9964aa78e6e2ff6f18dc03d17f5f8 + pristine_git_object: ce3d6696cac9b7ac5251db9dc2b79675d4b246f6 src/clerk_backend_api/blocklistidentifiers_sdk.py: id: 49e67487b740 last_write_checksum: sha1:513ed50c9c2ba7d7dd3fcc96ee15f8bd299d1c29 @@ -3382,8 +3434,8 @@ trackedFiles: pristine_git_object: a88675dd60d7c7ba6c6e49d6f331f19649f88e30 src/clerk_backend_api/emailaddresses.py: id: 90abfcbd4312 - last_write_checksum: sha1:5437021eac50506d9190a58f4e14dcf1d17c243b - pristine_git_object: 3eb1181cd1b63e0f23bda504469a36cec57204f4 + last_write_checksum: sha1:89f7d2f6bd4a05982b9ee44025cb6e87d46893c0 + pristine_git_object: 92fa3e2e7b0d531ab136b5b0759ebe083e73688b src/clerk_backend_api/emailandsmstemplates.py: id: 6b0d6ee5c16d last_write_checksum: sha1:5f6a0e91fdc0a38a6c60be0cd5badd97011f1e28 @@ -3394,8 +3446,8 @@ trackedFiles: pristine_git_object: 42a28ed82d057f8596de18efe8885c98d0751b0f src/clerk_backend_api/enterpriseconnections_sdk.py: id: fdae7c06198c - last_write_checksum: sha1:f5c1fd1845b7f2418311368732af507fca08182b - pristine_git_object: 4ac6a6d55485acd2396a45b467949addd0c609c5 + last_write_checksum: sha1:f964a00b320c37d45e88bff60099a7db4e3cd44a + pristine_git_object: 12078507c4c21b712e2b37a8e8fbba309af1a464 src/clerk_backend_api/httpclient.py: id: e554fdb21199 last_write_checksum: sha1:5e55338d6ee9f01ab648cad4380201a8a3da7dd7 @@ -3430,8 +3482,8 @@ trackedFiles: pristine_git_object: e7c169770991082a5066ac02759632e1af71fbb5 src/clerk_backend_api/models/__init__.py: id: 97d9388d85c1 - last_write_checksum: sha1:ea33be081150b2bb35e607cc14d5595a0c010715 - pristine_git_object: 5e14d64e06707e79afc766d1a3ee5abc6ce9bf17 + last_write_checksum: sha1:b5242bbb81ef34ebad7a74051011f83dcbb6ac16 + pristine_git_object: 737e9f037be589cb887b4b6b4bf57aebb296758e src/clerk_backend_api/models/actortoken.py: id: afa1aeb1f89c last_write_checksum: sha1:f45c3c3a3572607ac2aead2882b3e6de8e3bfdd6 @@ -3458,8 +3510,8 @@ trackedFiles: pristine_git_object: 8278c928681f0e757b7e2867aa91d7856cd4bce3 src/clerk_backend_api/models/agenttask.py: id: 625fdb05f08f - last_write_checksum: sha1:760d78781760c0b4b9a6cc65cfb3db8819e7c8f3 - pristine_git_object: 74d2a70557423511e1275d390821229eb6554d60 + last_write_checksum: sha1:e7ee511c7bc7d8dd94615b9f511ad4e42c88abcd + pristine_git_object: 7b4481c7bdcce541f929f59fee82f4f0f83ee933 src/clerk_backend_api/models/allowlistidentifier.py: id: 15fed620f318 last_write_checksum: sha1:9ab952bdfc6be83c88cef2880d56f37956ceccd9 @@ -3478,8 +3530,8 @@ trackedFiles: pristine_git_object: 4fbd856f15e7bfd4f0a86877576ba228c08dfbdd src/clerk_backend_api/models/billingpriceresponse.py: id: accd55daa3c3 - last_write_checksum: sha1:fac2c6832c0d669ea0e6633bcfb00fa5ba748b20 - pristine_git_object: 6afea9f4309b4cf7963f5eb1ff24f9bdfbee7483 + last_write_checksum: sha1:467685df75318c5ee2627591169fbd5e50ff933a + pristine_git_object: 864a920b24e255458b89e92fa49f97932f039bb1 src/clerk_backend_api/models/billingstatement.py: id: ea675089f24e last_write_checksum: sha1:064cbdb47e72184e486787047a051ffbdd0af2f2 @@ -3550,8 +3602,8 @@ trackedFiles: pristine_git_object: 5a279e4f652f7cc2d9e0b3c387bc27b24bd4d946 src/clerk_backend_api/models/commerceplan.py: id: 865974d0de5a - last_write_checksum: sha1:f66f7cf7b8d8e102afce310564a4f426a690594c - pristine_git_object: 04437f237f8efa4389698a4355ac270749825a13 + last_write_checksum: sha1:99f1c7a29c2451dc40c4b20d7f408c198beb6640 + pristine_git_object: ce7c063293f7a639e789e060c2f3231bdc28da25 src/clerk_backend_api/models/commerceplanunitprice.py: id: d835998ef008 last_write_checksum: sha1:4e4e144d8b5d1cd9f2674f037901a6872a6fb8f4 @@ -3578,8 +3630,8 @@ trackedFiles: pristine_git_object: 506a196fbe4a0973d608f60ef3767e740f6f4cf0 src/clerk_backend_api/models/commercesubscriptionitem.py: id: 85ab9baf8dde - last_write_checksum: sha1:8c2adfede6fdd9f910146fe35d019c1c2f2ba944 - pristine_git_object: 6d41c6ee21cf9640b6440dcda047d64ad33d068a + last_write_checksum: sha1:87166e6a171fbf6cc1ef814cac5852187ac38dbd + pristine_git_object: 3efc8630bdd2e3b6f762688e9fb825cb484103ec src/clerk_backend_api/models/commercesubscriptionnextpayment.py: id: 3f0bb47b0862 last_write_checksum: sha1:f071c87365502ce03cac8197aea5a6bb9df21bd2 @@ -3606,8 +3658,8 @@ trackedFiles: pristine_git_object: 53928a5a8085f16f2ff3bbc6c23095e8752f0f04 src/clerk_backend_api/models/createbillingpricerequest.py: id: b97e499e0829 - last_write_checksum: sha1:283804849eca02e00ccdc6801fd894ae0e68cb2c - pristine_git_object: 245555b45f738e504e766d2c7d4c46486b3b02dc + last_write_checksum: sha1:062ea9b11c90e6b8c756a0de98f97602ee4085cf + pristine_git_object: 7e2c700119e31561ebec1646708911548cd562b2 src/clerk_backend_api/models/createbillingpricetransitionop.py: id: b2b936b90df7 last_write_checksum: sha1:6a158d92eb5164cb73cf31b223d2d1a68f0a715f @@ -3630,8 +3682,8 @@ trackedFiles: pristine_git_object: 34c45a26ae1b0ccbab01e5b176efb909f02d3418 src/clerk_backend_api/models/createenterpriseconnectionop.py: id: b5cdd9bc15ad - last_write_checksum: sha1:df7a81a8c426b2dc9ac0eb4a381da6f068365196 - pristine_git_object: cc5ea6a026bd83decd3d25839fad1740f355ff20 + last_write_checksum: sha1:418b1ee6afa6ecec5bf1c5d37c51f969ba96841f + pristine_git_object: 9ba664c325a52be35bc0ddcca390e8652a9c90d6 src/clerk_backend_api/models/createinvitationop.py: id: 479deaac075b last_write_checksum: sha1:a108f1ad1f42a813c335e9bcf6abd75fc9851da7 @@ -4426,24 +4478,24 @@ trackedFiles: pristine_git_object: 2d04651214b1105ef337d000ffe6a3e4d531ba99 src/clerk_backend_api/models/schemas_commerceplan.py: id: 67304214fcb9 - last_write_checksum: sha1:a15ad51b171754206a66ac2327c405b5e15effc5 - pristine_git_object: cf360a12fd23e0678f2db9fbbbe558ededc6fa4c + last_write_checksum: sha1:44cc5a610302581b40d71060adc3c02da7fe8a4f + pristine_git_object: 40f92d2d4b288e49485d0bfa66309de3680c3f69 src/clerk_backend_api/models/schemas_commercesubscriptionitem.py: id: 3913a47cc4e2 - last_write_checksum: sha1:9fd43a397ba535bd6ff6772faa261cc78babd165 - pristine_git_object: bf4b219a518354096fab911168359431b4f0061c + last_write_checksum: sha1:3a6494ab7f8f499aa75aff914f5390be9f900bad + pristine_git_object: ff826632284bf7abbfff1c22f66ee4c5faeb9905 src/clerk_backend_api/models/schemas_enterpriseconnection.py: id: 0ec93b46d2a1 - last_write_checksum: sha1:197648b9277f82f5ead7e71898b4a04193d9cd76 - pristine_git_object: 9519df3ddba8a906a3b2816d2b0594c1a8eecd71 + last_write_checksum: sha1:c29b3ad054761ca9e935860add0a51aefeb9c03a + pristine_git_object: 144dda1718663bdf274c5d56a0be935acbfbe962 src/clerk_backend_api/models/schemas_featureresponse.py: id: 6defa699c0c2 last_write_checksum: sha1:8b7e9a93a74d40a89005b77bceced6c95575cc8e pristine_git_object: badd84478b828f4ea140fb3c8805247992af0557 src/clerk_backend_api/models/schemas_samlconnection.py: id: a3bc0ed49651 - last_write_checksum: sha1:bed85e31387a6d081b6cd09a91df3e87d06752cf - pristine_git_object: af1015ff49876861e8b6d55b6d406a214ee286bc + last_write_checksum: sha1:1f03dde605ac6faec1c2068b6511c5e68f7dd4c5 + pristine_git_object: 84e2dd4ad22a50a86ff45fe1dc00577eb2b6eb84 src/clerk_backend_api/models/sdkerror.py: id: b9a19e5580e3 last_write_checksum: sha1:5e2c978b6a359bdc765a5e52987604be9ac3dba3 @@ -4542,8 +4594,8 @@ trackedFiles: pristine_git_object: 595dedced1e0196e8bac9e03f7579cc8610f4a85 src/clerk_backend_api/models/updateenterpriseconnectionop.py: id: 8838cf277ea7 - last_write_checksum: sha1:dafebefa40166ca72e41fde4538926baf707b3a1 - pristine_git_object: 48deb5938e322248f088f1553cb654f3e7ecb68d + last_write_checksum: sha1:300fe7868c231eb4611d690f2b29d47979bec256 + pristine_git_object: b7e1a40c08334ffe9951443e61e1c85826cea5d1 src/clerk_backend_api/models/updateinstanceauthconfigop.py: id: e4d1c554c8a8 last_write_checksum: sha1:0a7ed65be461eff84e481fdd61f652c4214dd001 @@ -4618,8 +4670,8 @@ trackedFiles: pristine_git_object: d947e910a7c880cafe01213816ea378bdf4d1081 src/clerk_backend_api/models/updatesamlconnectionop.py: id: 144ab8498bec - last_write_checksum: sha1:929af31f3d39131a4b5085c27ed6042eead29db1 - pristine_git_object: 87abc42e863fefdb2e843227faf9d994b9be3993 + last_write_checksum: sha1:6aa32f9f7af47014131b56b6cfe8964f3d72becb + pristine_git_object: f4beef01f05b8f588a3bbf7b523f9966b6f6a42a src/clerk_backend_api/models/updatesignupop.py: id: 8d2a3b3dc83c last_write_checksum: sha1:3ada82503b73a33b5d385e67a4f450668e4180d5 @@ -4762,8 +4814,8 @@ trackedFiles: pristine_git_object: 7bbdda4d8768dd235d35fed08de4c0252244477f src/clerk_backend_api/samlconnections_sdk.py: id: 2e33ed64f642 - last_write_checksum: sha1:0a8eb930a6f37f34b7957c2b2519a822890dd202 - pristine_git_object: 518894e50be3b648539c0311e51146cc28eaecf0 + last_write_checksum: sha1:e7487b10cab14f68707aaa87f6f68fae7f712c8d + pristine_git_object: 2a17c69859471733a3b3d0069ae9213dc8a245ea src/clerk_backend_api/sdk.py: id: a4df06d800b5 last_write_checksum: sha1:83de48b4660337d84cbb66cdd8a9acafd1ce1d5d @@ -4842,8 +4894,8 @@ trackedFiles: pristine_git_object: b661aff65d38b77d035149699aea09b2785d2fc6 src/clerk_backend_api/utils/metadata.py: id: bed32d019afd - last_write_checksum: sha1:c6a560bd0c63ab158582f34dadb69433ea73b3d4 - pristine_git_object: 173b3e5ce658675c2f504222a56b3daaaa68107d + last_write_checksum: sha1:e703e5cbb5255144aacf86898d1420529afaaff8 + pristine_git_object: 5abddd588837ac297050ca3b543627faadb350a9 src/clerk_backend_api/utils/queryparams.py: id: 2f4a9254226e last_write_checksum: sha1:b94c3f314fd3da0d1d215afc2731f48748e2aa59 @@ -4858,12 +4910,12 @@ trackedFiles: pristine_git_object: af07d4e941007af4213c5ec9047ef8a2fca04e5e src/clerk_backend_api/utils/security.py: id: ed2da5f2f80c - last_write_checksum: sha1:435dd8b180cefcd733e635b9fa45512da091d9c0 - pristine_git_object: 17996bd54b8624009802fbbdf30bcb4225b8dfed + last_write_checksum: sha1:c11eef495b6aaa249178c24c796940cc540b7a00 + pristine_git_object: 42d8d78e9981eed7507670014d99588e27ab325a src/clerk_backend_api/utils/serializers.py: id: 50ff4899a574 - last_write_checksum: sha1:ce1d8d7f500a9ccba0aeca5057cee9c271f4dfd7 - pristine_git_object: 14321eb479de81d0d9580ec8291e0ff91bf29e57 + last_write_checksum: sha1:61009f2e4ef6613a1a5af813fe020373dae5a492 + pristine_git_object: d2149f8b909cb96628db140ac3cddb1b1e981367 src/clerk_backend_api/utils/unmarshal_json_response.py: id: a09f548ad43c last_write_checksum: sha1:8f1bde967f44fc394e5922d0da5e9b1bbfc6ab2a @@ -6381,7 +6433,7 @@ examples: organization_id: [""] responses: "200": - application/json: {"data": [{"object": "saml_connection", "id": "", "name": "", "domain": "ragged-provision.org", "domains": ["", ""], "idp_entity_id": "", "idp_sso_url": "https://uncommon-wombat.org/", "idp_certificate": "", "idp_metadata_url": "https://shady-knitting.com/", "idp_metadata": "", "acs_url": "https://superior-louse.info", "sp_entity_id": "", "sp_metadata_url": "https://lone-fellow.name", "organization_id": "", "attribute_mapping": {"user_id": "", "email_address": "Josefa.Crist96@yahoo.com", "first_name": "Bertha", "last_name": "Larkin"}, "active": true, "provider": "", "user_count": 31535, "sync_user_attributes": false, "allow_subdomains": false, "allow_idp_initiated": true, "disable_additional_identifications": true, "force_authn": false, "enterprise_connection_id": "", "created_at": 668266, "updated_at": 2307}, {"object": "saml_connection", "id": "", "name": "", "domains": ["", ""], "idp_entity_id": "", "idp_sso_url": "https://turbulent-stool.name", "idp_certificate": "", "idp_metadata_url": "https://miserly-lox.org", "idp_metadata": "", "acs_url": "https://youthful-dulcimer.net/", "sp_entity_id": "", "sp_metadata_url": "https://candid-valley.org", "organization_id": null, "attribute_mapping": {"user_id": "", "email_address": "Josefa.Crist96@yahoo.com", "first_name": "Bertha", "last_name": "Larkin"}, "active": true, "provider": "", "user_count": 268622, "sync_user_attributes": false, "allow_subdomains": true, "allow_idp_initiated": false, "disable_additional_identifications": true, "force_authn": false, "enterprise_connection_id": "", "created_at": 773181, "updated_at": 139402}], "total_count": 5} + application/json: {"data": [{"object": "saml_connection", "id": "", "name": "", "domain": "ragged-provision.org", "domains": ["", ""], "idp_entity_id": "", "idp_sso_url": "https://uncommon-wombat.org/", "idp_certificate": "", "idp_metadata_url": "https://shady-knitting.com/", "idp_metadata": "", "acs_url": "https://superior-louse.info", "sp_entity_id": "", "sp_metadata_url": "https://lone-fellow.name", "organization_id": "", "attribute_mapping": {"user_id": "", "email_address": "Josefa.Crist96@yahoo.com", "first_name": "Bertha", "last_name": "Larkin"}, "active": true, "provider": "", "user_count": 31535, "sync_user_attributes": false, "allow_subdomains": false, "allow_idp_initiated": true, "disable_additional_identifications": true, "allow_organization_account_linking": false, "force_authn": false, "enterprise_connection_id": null, "created_at": 994176, "updated_at": 662644}, {"object": "saml_connection", "id": "", "name": "", "domain": "ragged-provision.org", "domains": ["", ""], "idp_entity_id": "", "idp_sso_url": "https://uncommon-wombat.org/", "idp_certificate": "", "idp_metadata_url": "https://shady-knitting.com/", "idp_metadata": "", "acs_url": "https://superior-louse.info", "sp_entity_id": "", "sp_metadata_url": "https://lone-fellow.name", "organization_id": "", "attribute_mapping": {"user_id": "", "email_address": "Josefa.Crist96@yahoo.com", "first_name": "Bertha", "last_name": "Larkin"}, "active": true, "provider": "", "user_count": 31535, "sync_user_attributes": false, "allow_subdomains": false, "allow_idp_initiated": true, "disable_additional_identifications": true, "allow_organization_account_linking": false, "force_authn": false, "enterprise_connection_id": null, "created_at": 994176, "updated_at": 662644}], "total_count": 5} "402": application/json: {"errors": [{"message": "Invalid input", "long_message": "The input provided does not meet the requirements.", "code": "400_bad_request", "meta": {}}], "meta": {}} CreateSAMLConnection: @@ -6390,7 +6442,7 @@ examples: application/json: {"name": "My SAML Connection", "domain": "example.org", "domains": ["", "", ""], "provider": "saml_custom", "idp_entity_id": "http://idp.example.org/", "idp_sso_url": "http://idp.example.org/sso", "idp_certificate": "MIIDdzCCAl+gAwIBAgIJAKcyBaiiz+DT...", "idp_metadata_url": "http://idp.example.org/metadata.xml", "idp_metadata": "", "attribute_mapping": {"user_id": "nameid", "email_address": "mail", "first_name": "givenName", "last_name": "surname"}, "force_authn": false} responses: "200": - application/json: {"object": "saml_connection", "id": "", "name": "", "domains": ["", ""], "idp_entity_id": "", "idp_sso_url": "https://burly-sport.info", "idp_certificate": "", "idp_metadata_url": "https://sizzling-alert.info", "idp_metadata": "", "acs_url": "https://imaginative-summary.name", "sp_entity_id": "", "sp_metadata_url": "https://well-documented-castanet.name", "organization_id": null, "attribute_mapping": {"user_id": "", "email_address": "Armando_Fahey@yahoo.com", "first_name": "Tristin", "last_name": "Altenwerth"}, "active": true, "provider": "", "user_count": 945000, "sync_user_attributes": false, "allow_subdomains": false, "allow_idp_initiated": false, "disable_additional_identifications": false, "force_authn": true, "enterprise_connection_id": "", "created_at": 78753, "updated_at": 507469} + application/json: {"object": "saml_connection", "id": "", "name": "", "domains": ["", ""], "idp_entity_id": "", "idp_sso_url": "https://burly-sport.info", "idp_certificate": "", "idp_metadata_url": "https://sizzling-alert.info", "idp_metadata": "", "acs_url": "https://imaginative-summary.name", "sp_entity_id": "", "sp_metadata_url": "https://well-documented-castanet.name", "organization_id": null, "attribute_mapping": {"user_id": "", "email_address": "Armando_Fahey@yahoo.com", "first_name": "Tristin", "last_name": "Altenwerth"}, "active": true, "provider": "", "user_count": 945000, "sync_user_attributes": false, "allow_subdomains": false, "allow_idp_initiated": false, "disable_additional_identifications": false, "allow_organization_account_linking": false, "force_authn": true, "enterprise_connection_id": "", "created_at": 78753, "updated_at": 507469} "402": application/json: {"errors": [{"message": "Invalid input", "long_message": "The input provided does not meet the requirements.", "code": "400_bad_request", "meta": {}}], "meta": {}} GetSAMLConnection: @@ -6400,7 +6452,7 @@ examples: saml_connection_id: "saml_conn_123" responses: "200": - application/json: {"object": "saml_connection", "id": "", "name": "", "domain": "blushing-hawk.biz", "domains": [""], "idp_entity_id": "", "idp_sso_url": "https://dazzling-numeric.biz/", "idp_certificate": "", "idp_metadata_url": "https://indelible-meatloaf.biz/", "idp_metadata": "", "acs_url": "https://sandy-range.name", "sp_entity_id": "", "sp_metadata_url": "https://elliptical-testimonial.biz", "organization_id": "", "attribute_mapping": {"user_id": "", "email_address": "Breanne_Barton@gmail.com", "first_name": "Chelsie", "last_name": "Farrell"}, "active": true, "provider": "", "user_count": 957137, "sync_user_attributes": false, "allow_subdomains": true, "allow_idp_initiated": true, "disable_additional_identifications": true, "force_authn": true, "enterprise_connection_id": null, "created_at": 104329, "updated_at": 879127} + application/json: {"object": "saml_connection", "id": "", "name": "", "domain": "blushing-hawk.biz", "domains": [""], "idp_entity_id": "", "idp_sso_url": "https://dazzling-numeric.biz/", "idp_certificate": "", "idp_metadata_url": "https://indelible-meatloaf.biz/", "idp_metadata": "", "acs_url": "https://sandy-range.name", "sp_entity_id": "", "sp_metadata_url": "https://elliptical-testimonial.biz", "organization_id": "", "attribute_mapping": {"user_id": "", "email_address": "Breanne_Barton@gmail.com", "first_name": "Chelsie", "last_name": "Farrell"}, "active": true, "provider": "", "user_count": 957137, "sync_user_attributes": false, "allow_subdomains": true, "allow_idp_initiated": true, "disable_additional_identifications": true, "allow_organization_account_linking": true, "force_authn": true, "enterprise_connection_id": null, "created_at": 104329, "updated_at": 879127} "402": application/json: {"errors": [{"message": "Invalid input", "long_message": "The input provided does not meet the requirements.", "code": "400_bad_request", "meta": {}}], "meta": {}} UpdateSAMLConnection: @@ -6409,10 +6461,10 @@ examples: path: saml_connection_id: "saml_conn_123_update" requestBody: - application/json: {"name": "Example SAML Connection", "domains": ["", "", ""], "idp_entity_id": "entity_123", "idp_sso_url": "https://idp.example.com/sso", "idp_certificate": "MIIDBTCCAe2gAwIBAgIQ...", "idp_metadata_url": "https://idp.example.com/metadata", "idp_metadata": "...", "organization_id": "", "attribute_mapping": {"user_id": "id123", "email_address": "user@example.com", "first_name": "Jane", "last_name": "Doe"}, "active": true, "sync_user_attributes": false, "allow_subdomains": true, "allow_idp_initiated": false, "disable_additional_identifications": false, "force_authn": true, "consent_verified_domains_deletion": false} + application/json: {"name": "Example SAML Connection", "domains": ["", "", ""], "idp_entity_id": "entity_123", "idp_sso_url": "https://idp.example.com/sso", "idp_certificate": "MIIDBTCCAe2gAwIBAgIQ...", "idp_metadata_url": "https://idp.example.com/metadata", "idp_metadata": "...", "organization_id": "", "attribute_mapping": {"user_id": "id123", "email_address": "user@example.com", "first_name": "Jane", "last_name": "Doe"}, "active": true, "sync_user_attributes": false, "allow_subdomains": true, "allow_idp_initiated": false, "disable_additional_identifications": false, "allow_organization_account_linking": false, "force_authn": true, "consent_verified_domains_deletion": false} responses: "200": - application/json: {"object": "saml_connection", "id": "", "name": "", "domains": ["", "", ""], "idp_entity_id": "", "idp_sso_url": "https://curly-help.info/", "idp_certificate": "", "idp_metadata_url": "https://formal-asset.biz", "idp_metadata": "", "acs_url": "https://insignificant-sock.com/", "sp_entity_id": "", "sp_metadata_url": "https://yellowish-countess.info", "organization_id": "", "attribute_mapping": {"user_id": "", "email_address": "Cristal_Schuppe11@hotmail.com", "first_name": "Kelton", "last_name": "Wehner"}, "active": false, "provider": "", "user_count": 260625, "sync_user_attributes": false, "allow_subdomains": true, "allow_idp_initiated": false, "disable_additional_identifications": true, "force_authn": false, "enterprise_connection_id": "", "created_at": 494539, "updated_at": 491967} + application/json: {"object": "saml_connection", "id": "", "name": "", "domains": ["", "", ""], "idp_entity_id": "", "idp_sso_url": "https://curly-help.info/", "idp_certificate": "", "idp_metadata_url": "https://formal-asset.biz", "idp_metadata": "", "acs_url": "https://insignificant-sock.com/", "sp_entity_id": "", "sp_metadata_url": "https://yellowish-countess.info", "organization_id": "", "attribute_mapping": {"user_id": "", "email_address": "Cristal_Schuppe11@hotmail.com", "first_name": "Kelton", "last_name": "Wehner"}, "active": false, "provider": "", "user_count": 260625, "sync_user_attributes": false, "allow_subdomains": true, "allow_idp_initiated": false, "disable_additional_identifications": true, "allow_organization_account_linking": false, "force_authn": false, "enterprise_connection_id": "", "created_at": 494539, "updated_at": 491967} "402": application/json: {"errors": [{"message": "Invalid input", "long_message": "The input provided does not meet the requirements.", "code": "400_bad_request", "meta": {}}], "meta": {}} DeleteSAMLConnection: @@ -7394,7 +7446,7 @@ examples: application/json: {"on_behalf_of": {"user_id": "", "identifier": ""}, "permissions": "*", "agent_name": "", "task_description": "", "redirect_url": "https://brilliant-typewriter.net", "session_max_duration_in_seconds": 1800} responses: "200": - application/json: {"object": "agent_task", "agent_id": "", "task_id": "", "url": "https://heavy-completion.net"} + application/json: {"object": "agent_task", "agent_id": "", "agent_task_id": "", "task_id": "", "url": "https://heavy-completion.net"} "400": application/json: {"errors": [{"message": "Invalid input", "long_message": "The input provided does not meet the requirements.", "code": "400_bad_request", "meta": {}}], "meta": {}} RevokeAgentTask: @@ -7404,7 +7456,7 @@ examples: agent_task_id: "" responses: "200": - application/json: {"object": "agent_task", "agent_id": "", "task_id": "", "url": "https://peaceful-railway.net"} + application/json: {"object": "agent_task", "agent_id": "", "agent_task_id": "", "task_id": "", "url": "https://peaceful-railway.net"} "400": application/json: {"errors": [{"message": "Invalid input", "long_message": "The input provided does not meet the requirements.", "code": "400_bad_request", "meta": {}}], "meta": {}} ListEnterpriseConnections: @@ -7417,16 +7469,16 @@ examples: active: false responses: "200": - application/json: {"data": [{"id": "", "name": "", "active": true, "domains": [], "organization_id": "", "sync_user_attributes": false, "disable_additional_identifications": true, "saml_connection": {"id": "", "name": "", "idp_entity_id": "", "idp_sso_url": "https://milky-clamp.biz/", "idp_metadata_url": "https://vengeful-airbus.net/", "acs_url": "https://similar-annual.info/", "sp_entity_id": "", "sp_metadata_url": "https://suburban-lashes.net/", "active": false, "allow_idp_initiated": false, "allow_subdomains": false, "force_authn": false}, "oauth_config": {"id": "", "name": "", "provider_key": "", "client_id": "", "discovery_url": null, "logo_public_url": "https://appropriate-caption.net", "created_at": 597158, "updated_at": 307702}, "created_at": 465910, "updated_at": 675758}], "total_count": 594925} + application/json: {"data": [{"id": "", "name": "", "active": true, "domains": [], "organization_id": "", "sync_user_attributes": false, "disable_additional_identifications": true, "allow_organization_account_linking": false, "custom_attributes": [{"name": "", "key": "", "sso_path": "", "scim_path": ""}], "saml_connection": {"id": "", "name": "", "idp_entity_id": "", "idp_sso_url": "https://milky-clamp.biz/", "idp_metadata_url": "https://vengeful-airbus.net/", "acs_url": "https://similar-annual.info/", "sp_entity_id": "", "sp_metadata_url": "https://suburban-lashes.net/", "active": false, "allow_idp_initiated": false, "allow_subdomains": false, "force_authn": false}, "oauth_config": {"id": "", "name": "", "provider_key": "", "client_id": "", "discovery_url": null, "logo_public_url": "https://appropriate-caption.net", "created_at": 597158, "updated_at": 307702}, "created_at": 465910, "updated_at": 675758}], "total_count": 594925} "402": application/json: {"errors": [{"message": "Invalid input", "long_message": "The input provided does not meet the requirements.", "code": "400_bad_request", "meta": {}}], "meta": {}} CreateEnterpriseConnection: speakeasy-default-create-enterprise-connection: requestBody: - application/json: {"name": "", "provider": "saml_google", "domains": ["", ""], "organization_id": "", "active": true, "saml": null, "oidc": {"client_id": "", "client_secret": "", "discovery_url": "https://frugal-brush.org", "auth_url": "https://failing-epic.biz", "token_url": "https://outrageous-haircut.name/", "user_info_url": "https://adolescent-tooth.com", "requires_pkce": true}} + application/json: {"name": "", "provider": "saml_google", "domains": ["", ""], "organization_id": "", "allow_organization_account_linking": false, "active": true, "saml": null, "oidc": {"client_id": "", "client_secret": "", "discovery_url": "https://frugal-brush.org", "auth_url": "https://failing-epic.biz", "token_url": "https://outrageous-haircut.name/", "user_info_url": "https://adolescent-tooth.com", "requires_pkce": true}, "custom_attributes": [{"name": "", "key": "", "sso_path": "", "scim_path": ""}]} responses: "201": - application/json: {"id": "", "name": "", "active": false, "domains": ["", ""], "organization_id": "", "sync_user_attributes": true, "disable_additional_identifications": false, "saml_connection": {"id": "", "name": "", "idp_entity_id": "", "idp_sso_url": "https://zealous-coal.info", "idp_metadata_url": "https://which-nudge.name/", "acs_url": "https://likely-decision.name", "sp_entity_id": "", "sp_metadata_url": "https://cheap-shoulder.biz/", "active": true, "allow_idp_initiated": false, "allow_subdomains": true, "force_authn": true}, "oauth_config": {"id": "", "name": "", "provider_key": "", "client_id": "", "discovery_url": "https://unruly-smoke.info", "logo_public_url": "https://rusty-flint.biz/", "created_at": 64076, "updated_at": 926778}, "created_at": 955421, "updated_at": 241609} + application/json: {"id": "", "name": "", "active": false, "domains": ["", ""], "organization_id": "", "sync_user_attributes": true, "disable_additional_identifications": false, "allow_organization_account_linking": false, "custom_attributes": [{"name": "", "key": "", "sso_path": "", "scim_path": ""}], "saml_connection": {"id": "", "name": "", "idp_entity_id": "", "idp_sso_url": "https://zealous-coal.info", "idp_metadata_url": "https://which-nudge.name/", "acs_url": "https://likely-decision.name", "sp_entity_id": "", "sp_metadata_url": "https://cheap-shoulder.biz/", "active": true, "allow_idp_initiated": false, "allow_subdomains": true, "force_authn": true}, "oauth_config": {"id": "", "name": "", "provider_key": "", "client_id": "", "discovery_url": "https://unruly-smoke.info", "logo_public_url": "https://rusty-flint.biz/", "created_at": 64076, "updated_at": 926778}, "created_at": 955421, "updated_at": 241609} "402": application/json: {"errors": [{"message": "Invalid input", "long_message": "The input provided does not meet the requirements.", "code": "400_bad_request", "meta": {}}], "meta": {}} GetEnterpriseConnection: @@ -7436,7 +7488,7 @@ examples: enterprise_connection_id: "" responses: "200": - application/json: {"id": "", "name": "", "active": true, "domains": ["", "", ""], "organization_id": "", "sync_user_attributes": true, "disable_additional_identifications": false, "saml_connection": {"id": "", "name": "", "idp_entity_id": "", "idp_sso_url": "https://glittering-retrospectivity.info/", "idp_metadata_url": "https://average-rosemary.org", "acs_url": "https://flawless-mortise.info", "sp_entity_id": "", "sp_metadata_url": "https://imaginative-bin.info", "active": true, "allow_idp_initiated": true, "allow_subdomains": true, "force_authn": true}, "oauth_config": {"id": "", "name": "", "provider_key": "", "client_id": "", "discovery_url": "https://private-dead.com", "logo_public_url": "https://trusty-management.name", "created_at": 606739, "updated_at": 578377}, "created_at": 958854, "updated_at": 973337} + application/json: {"id": "", "name": "", "active": true, "domains": ["", "", ""], "organization_id": "", "sync_user_attributes": true, "disable_additional_identifications": false, "allow_organization_account_linking": true, "custom_attributes": [{"name": "", "key": "", "sso_path": "", "scim_path": ""}], "saml_connection": {"id": "", "name": "", "idp_entity_id": "", "idp_sso_url": "https://glittering-retrospectivity.info/", "idp_metadata_url": "https://average-rosemary.org", "acs_url": "https://flawless-mortise.info", "sp_entity_id": "", "sp_metadata_url": "https://imaginative-bin.info", "active": true, "allow_idp_initiated": true, "allow_subdomains": true, "force_authn": true}, "oauth_config": {"id": "", "name": "", "provider_key": "", "client_id": "", "discovery_url": "https://private-dead.com", "logo_public_url": "https://trusty-management.name", "created_at": 606739, "updated_at": 578377}, "created_at": 958854, "updated_at": 973337} "402": application/json: {"errors": [{"message": "Invalid input", "long_message": "The input provided does not meet the requirements.", "code": "400_bad_request", "meta": {}}], "meta": {}} UpdateEnterpriseConnection: @@ -7445,10 +7497,10 @@ examples: path: enterprise_connection_id: "" requestBody: - application/json: {"name": "", "domains": null, "active": false, "sync_user_attributes": true, "disable_additional_identifications": true, "organization_id": "", "saml": {"name": "", "idp_entity_id": "", "idp_sso_url": "https://animated-experience.name/", "idp_certificate": "", "idp_metadata_url": "https://alert-atrium.com/", "idp_metadata": "", "attribute_mapping": {"user_id": "", "email_address": "Eula82@hotmail.com", "first_name": "Pierre", "last_name": "Hoeger"}, "allow_subdomains": false, "allow_idp_initiated": false, "force_authn": false}, "oidc": {"client_id": "", "client_secret": "", "discovery_url": "https://excitable-vista.info", "auth_url": "https://obedient-pasta.org/", "token_url": "https://helpless-gradient.info/", "user_info_url": "https://neglected-chapel.name/", "requires_pkce": false}} + application/json: {"name": "", "domains": null, "active": false, "sync_user_attributes": true, "disable_additional_identifications": true, "allow_organization_account_linking": true, "organization_id": "", "saml": {"name": "", "idp_entity_id": "", "idp_sso_url": "https://animated-experience.name/", "idp_certificate": "", "idp_metadata_url": "https://alert-atrium.com/", "idp_metadata": "", "attribute_mapping": {"user_id": "", "email_address": "Eula82@hotmail.com", "first_name": "Pierre", "last_name": "Hoeger"}, "allow_subdomains": false, "allow_idp_initiated": false, "force_authn": false}, "oidc": {"client_id": "", "client_secret": "", "discovery_url": "https://excitable-vista.info", "auth_url": "https://obedient-pasta.org/", "token_url": "https://helpless-gradient.info/", "user_info_url": "https://neglected-chapel.name/", "requires_pkce": false}, "custom_attributes": [{"name": "", "key": "", "sso_path": "", "scim_path": ""}]} responses: "200": - application/json: {"id": "", "name": "", "active": false, "domains": ["", "", ""], "organization_id": "", "sync_user_attributes": true, "disable_additional_identifications": true, "saml_connection": {"id": "", "name": "", "idp_entity_id": "", "idp_sso_url": "https://pure-napkin.info", "idp_metadata_url": "https://immediate-coil.biz", "acs_url": "https://insecure-apricot.net/", "sp_entity_id": "", "sp_metadata_url": "https://spirited-zebra.info/", "active": false, "allow_idp_initiated": true, "allow_subdomains": true, "force_authn": false}, "oauth_config": {"id": "", "name": "", "provider_key": "", "client_id": "", "discovery_url": null, "logo_public_url": "https://genuine-depot.name", "created_at": 446746, "updated_at": 286855}, "created_at": 149468, "updated_at": 206027} + application/json: {"id": "", "name": "", "active": false, "domains": ["", "", ""], "organization_id": "", "sync_user_attributes": true, "disable_additional_identifications": true, "allow_organization_account_linking": false, "custom_attributes": [{"name": "", "key": "", "sso_path": "", "scim_path": ""}], "saml_connection": {"id": "", "name": "", "idp_entity_id": "", "idp_sso_url": "https://pure-napkin.info", "idp_metadata_url": "https://immediate-coil.biz", "acs_url": "https://insecure-apricot.net/", "sp_entity_id": "", "sp_metadata_url": "https://spirited-zebra.info/", "active": false, "allow_idp_initiated": true, "allow_subdomains": true, "force_authn": false}, "oauth_config": {"id": "", "name": "", "provider_key": "", "client_id": "", "discovery_url": null, "logo_public_url": "https://genuine-depot.name", "created_at": 446746, "updated_at": 286855}, "created_at": 149468, "updated_at": 206027} "400": application/json: {"errors": [{"message": "Invalid input", "long_message": "The input provided does not meet the requirements.", "code": "400_bad_request", "meta": {}}], "meta": {}} DeleteEnterpriseConnection: @@ -7463,6 +7515,7 @@ examples: application/json: {"errors": [{"message": "Invalid input", "long_message": "The input provided does not meet the requirements.", "code": "400_bad_request", "meta": {}}], "meta": {}} examplesVersion: 1.0.2 generatedTests: {} +releaseNotes: "## Python SDK Changes:\n* `clerk.billing.list_plans()`: `response.data[].fee` **Changed** (Breaking ⚠️)\n* `clerk.users.get_billing_subscription()`: `response.subscription_items[].plan.fee` **Changed** (Breaking ⚠️)\n* `clerk.organizations.get_billing_subscription()`: `response.subscription_items[].plan.fee` **Changed** (Breaking ⚠️)\n* `clerk.billing.create_price_transition()`: `response` **Changed** (Breaking ⚠️)\n* `clerk.billing.extend_subscription_item_free_trial()`: `response.plan` **Changed** (Breaking ⚠️)\n* `clerk.billing.cancel_subscription_item()`: `response.plan.fee` **Changed** (Breaking ⚠️)\n* `clerk.billing.list_subscription_items()`: `response.data[].plan.fee` **Changed** (Breaking ⚠️)\n* `clerk.billing.create_price()`: \n * `request` **Changed**\n * `response` **Changed** (Breaking ⚠️)\n* `clerk.billing.list_prices()`: `response.data[]` **Changed** (Breaking ⚠️)\n* `clerk.saml_connections.get()`: `response` **Changed**\n* `clerk.enterprise_connections.update()`: \n * `request` **Changed**\n * `response` **Changed**\n* `clerk.agent_tasks.create()`: `response.agent_task_id` **Added**\n* `clerk.agent_tasks.revoke()`: `response.agent_task_id` **Added**\n* `clerk.enterprise_connections.get()`: `response` **Changed**\n* `clerk.enterprise_connections.create()`: \n * `request` **Changed**\n * `response` **Changed**\n* `clerk.enterprise_connections.list()`: `response.data[]` **Changed**\n* `clerk.saml_connections.update()`: \n * `request.allow_organization_account_linking` **Added**\n * `response` **Changed**\n* `clerk.email_addresses.delete()`: `error.status[409]` **Added**\n* `clerk.saml_connections.create()`: `response` **Changed**\n* `clerk.saml_connections.list()`: `response.data[]` **Changed**\n" generatedFiles: - .gitattributes - .vscode/settings.json diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index a0e461d5..a55b752a 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -29,7 +29,7 @@ generation: generateNewTests: false skipResponseBodyAssertions: false python: - version: 5.0.6 + version: 5.0.7 additionalDependencies: dev: pytest: ^8.3.3 diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 70eacb06..62c72ca1 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,9 +1,9 @@ -speakeasyVersion: 1.758.0 +speakeasyVersion: 1.761.1 sources: clerk-openapi: sourceNamespace: clerk-openapi - sourceRevisionDigest: sha256:36f851e944405f2e6ece2ac43b9b0642f2b94b1c95ebd8d02196a9f3b531f0cb - sourceBlobDigest: sha256:c9d957b2351cfef0bf1e87867f3adf8b860e2716b54fdcae2011895cd3b90593 + sourceRevisionDigest: sha256:ffec41025ebf2ce7ca8e9b29105eac23ebac6c82cd106048bcf8340f7c998847 + sourceBlobDigest: sha256:cd1308e38a9b4457a5fa8443ebf5562e3b0239e873565f131503484f7c1399b4 tags: - latest - "2025-11-10" @@ -11,10 +11,10 @@ targets: clerk-sdk-python: source: clerk-openapi sourceNamespace: clerk-openapi - sourceRevisionDigest: sha256:36f851e944405f2e6ece2ac43b9b0642f2b94b1c95ebd8d02196a9f3b531f0cb - sourceBlobDigest: sha256:c9d957b2351cfef0bf1e87867f3adf8b860e2716b54fdcae2011895cd3b90593 + sourceRevisionDigest: sha256:ffec41025ebf2ce7ca8e9b29105eac23ebac6c82cd106048bcf8340f7c998847 + sourceBlobDigest: sha256:cd1308e38a9b4457a5fa8443ebf5562e3b0239e873565f131503484f7c1399b4 codeSamplesNamespace: clerk-openapi-python-code-samples - codeSamplesRevisionDigest: sha256:a66e8d5204414e19c57801081a54a122ed47534dc71e2aabc7d6b8514a97f8e0 + codeSamplesRevisionDigest: sha256:c3dd0d8fc680031fe30c9e930d79821edddca0c673dec74436aa56e9d766b46a workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/RELEASES.md b/RELEASES.md index 329a7303..d901d3a2 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -598,4 +598,14 @@ Based on: ### Generated - [python v5.0.6] . ### Releases -- [PyPI v5.0.6] https://pypi.org/project/clerk-backend-api/5.0.6 - . \ No newline at end of file +- [PyPI v5.0.6] https://pypi.org/project/clerk-backend-api/5.0.6 - . + +## 2026-04-09 00:30:13 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.761.1 (2.879.6) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v5.0.7] . +### Releases +- [PyPI v5.0.7] https://pypi.org/project/clerk-backend-api/5.0.7 - . \ No newline at end of file diff --git a/docs/models/agenttask.md b/docs/models/agenttask.md index 686502d8..82b099a1 100644 --- a/docs/models/agenttask.md +++ b/docs/models/agenttask.md @@ -5,9 +5,10 @@ Success ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `object` | [models.AgentTaskObject](../models/agenttaskobject.md) | :heavy_check_mark: | N/A | -| `agent_id` | *str* | :heavy_check_mark: | A stable identifier for the agent, unique per agent_name within an instance.
| -| `task_id` | *str* | :heavy_check_mark: | A unique identifier for this agent task.
| -| `url` | *Optional[str]* | :heavy_minus_sign: | The URL that, when visited, creates a session for the user. Only present in the response to a create request.
| \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `object` | [models.AgentTaskObject](../models/agenttaskobject.md) | :heavy_check_mark: | N/A | +| `agent_id` | *str* | :heavy_check_mark: | A stable identifier for the agent, unique per agent_name within an instance.
| +| `agent_task_id` | *str* | :heavy_check_mark: | A unique identifier for this agent task.
| +| ~~`task_id`~~ | *str* | :heavy_check_mark: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

A unique identifier for this agent task. Deprecated: use agent_task_id instead.
| +| `url` | *Optional[str]* | :heavy_minus_sign: | The URL that, when visited, creates a session for the user. Only present in the response to a create request.
| \ No newline at end of file diff --git a/docs/models/billingpriceresponse.md b/docs/models/billingpriceresponse.md index 03d82b3c..12971a1c 100644 --- a/docs/models/billingpriceresponse.md +++ b/docs/models/billingpriceresponse.md @@ -3,18 +3,18 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `object` | [models.BillingPriceResponseObject](../models/billingpriceresponseobject.md) | :heavy_check_mark: | String representing the object's type. Objects of the same type share the same value. | -| `id` | *str* | :heavy_check_mark: | Unique identifier for the price. | -| `plan_id` | *str* | :heavy_check_mark: | Unique identifier for the associated plan. | -| `instance_id` | *str* | :heavy_check_mark: | Unique identifier for the instance. | -| `currency` | *str* | :heavy_check_mark: | The currency code (e.g., "USD"). | -| `currency_symbol` | *str* | :heavy_check_mark: | The currency symbol (e.g., "$"). | -| `amount` | *int* | :heavy_check_mark: | The amount in cents for the price. | -| `annual_monthly_amount` | *int* | :heavy_check_mark: | The monthly amount in cents when billed annually. | -| `fee` | [models.CommerceMoneyResponse](../models/commercemoneyresponse.md) | :heavy_check_mark: | N/A | -| `annual_monthly_fee` | [models.CommerceMoneyResponse](../models/commercemoneyresponse.md) | :heavy_check_mark: | N/A | -| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | The description of the price. | -| `is_default` | *bool* | :heavy_check_mark: | Whether this price is the default price for its plan. | -| `created_at` | *int* | :heavy_check_mark: | Unix timestamp (milliseconds) of creation. | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `object` | [models.BillingPriceResponseObject](../models/billingpriceresponseobject.md) | :heavy_check_mark: | String representing the object's type. Objects of the same type share the same value. | +| `id` | *str* | :heavy_check_mark: | Unique identifier for the price. | +| `plan_id` | *str* | :heavy_check_mark: | Unique identifier for the associated plan. | +| `instance_id` | *str* | :heavy_check_mark: | Unique identifier for the instance. | +| `currency` | *str* | :heavy_check_mark: | The currency code (e.g., "USD"). | +| `currency_symbol` | *str* | :heavy_check_mark: | The currency symbol (e.g., "$"). | +| `amount` | *int* | :heavy_check_mark: | The amount in cents for the price. | +| `annual_monthly_amount` | *int* | :heavy_check_mark: | The monthly amount in cents when billed annually. | +| `fee` | [Nullable[models.BillingPriceResponseFee]](../models/billingpriceresponsefee.md) | :heavy_check_mark: | N/A | +| `annual_monthly_fee` | [Nullable[models.BillingPriceResponseAnnualMonthlyFee]](../models/billingpriceresponseannualmonthlyfee.md) | :heavy_check_mark: | N/A | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | The description of the price. | +| `is_default` | *bool* | :heavy_check_mark: | Whether this price is the default price for its plan. | +| `created_at` | *int* | :heavy_check_mark: | Unix timestamp (milliseconds) of creation. | \ No newline at end of file diff --git a/docs/models/billingpriceresponseannualmonthlyfee.md b/docs/models/billingpriceresponseannualmonthlyfee.md new file mode 100644 index 00000000..7c7709c2 --- /dev/null +++ b/docs/models/billingpriceresponseannualmonthlyfee.md @@ -0,0 +1,11 @@ +# BillingPriceResponseAnnualMonthlyFee + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `amount` | *int* | :heavy_check_mark: | The amount in cents. | +| `amount_formatted` | *str* | :heavy_check_mark: | The formatted amount as a string (e.g., "$49.99"). | +| `currency` | *str* | :heavy_check_mark: | The currency code (e.g., "USD"). | +| `currency_symbol` | *str* | :heavy_check_mark: | The currency symbol (e.g., "$"). | \ No newline at end of file diff --git a/docs/models/billingpriceresponsefee.md b/docs/models/billingpriceresponsefee.md new file mode 100644 index 00000000..786bf388 --- /dev/null +++ b/docs/models/billingpriceresponsefee.md @@ -0,0 +1,11 @@ +# BillingPriceResponseFee + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `amount` | *int* | :heavy_check_mark: | The amount in cents. | +| `amount_formatted` | *str* | :heavy_check_mark: | The formatted amount as a string (e.g., "$49.99"). | +| `currency` | *str* | :heavy_check_mark: | The currency code (e.g., "USD"). | +| `currency_symbol` | *str* | :heavy_check_mark: | The currency symbol (e.g., "$"). | \ No newline at end of file diff --git a/docs/models/commerceplan.md b/docs/models/commerceplan.md index bc5f02a0..de699597 100644 --- a/docs/models/commerceplan.md +++ b/docs/models/commerceplan.md @@ -8,7 +8,7 @@ | `object` | [models.CommercePlanObject](../models/commerceplanobject.md) | :heavy_check_mark: | String representing the object's type. Objects of the same type share the same value. | | `id` | *str* | :heavy_check_mark: | Unique identifier for the plan. | | `name` | *str* | :heavy_check_mark: | The name of the plan. | -| `fee` | [models.CommerceMoneyResponse](../models/commercemoneyresponse.md) | :heavy_check_mark: | N/A | +| `fee` | [Nullable[models.Fee]](../models/fee.md) | :heavy_check_mark: | N/A | | `annual_monthly_fee` | [Nullable[models.AnnualMonthlyFee]](../models/annualmonthlyfee.md) | :heavy_check_mark: | N/A | | `annual_fee` | [Nullable[models.AnnualFee]](../models/annualfee.md) | :heavy_check_mark: | N/A | | `description` | *Nullable[str]* | :heavy_check_mark: | The description of the plan. | diff --git a/docs/models/commercesubscriptionitemfee.md b/docs/models/commercesubscriptionitemfee.md new file mode 100644 index 00000000..8afcc8d3 --- /dev/null +++ b/docs/models/commercesubscriptionitemfee.md @@ -0,0 +1,11 @@ +# CommerceSubscriptionItemFee + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `amount` | *int* | :heavy_check_mark: | The amount in cents. | +| `amount_formatted` | *str* | :heavy_check_mark: | The formatted amount as a string (e.g., "$49.99"). | +| `currency` | *str* | :heavy_check_mark: | The currency code (e.g., "USD"). | +| `currency_symbol` | *str* | :heavy_check_mark: | The currency symbol (e.g., "$"). | \ No newline at end of file diff --git a/docs/models/createbillingpricerequest.md b/docs/models/createbillingpricerequest.md index c0602ce9..6393b1e1 100644 --- a/docs/models/createbillingpricerequest.md +++ b/docs/models/createbillingpricerequest.md @@ -3,10 +3,10 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `plan_id` | *str* | :heavy_check_mark: | The ID of the plan this price belongs to. | -| `currency` | *Optional[str]* | :heavy_minus_sign: | The currency code (e.g., "USD"). Defaults to USD. | -| `amount` | *int* | :heavy_check_mark: | The amount in cents for the price. Must be at least $1 (100 cents). | -| `annual_monthly_amount` | *Optional[int]* | :heavy_minus_sign: | The monthly amount in cents when billed annually. Optional. | -| `description` | *Optional[str]* | :heavy_minus_sign: | An optional description for this custom price. | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `plan_id` | *str* | :heavy_check_mark: | The ID of the plan this price belongs to. | +| `currency` | *Optional[str]* | :heavy_minus_sign: | The currency code (e.g., "USD"). Defaults to USD. | +| `amount` | *Nullable[int]* | :heavy_check_mark: | The monthly amount in cents. Must be at least $1 (100 cents) if not null. | +| `annual_monthly_amount` | *OptionalNullable[int]* | :heavy_minus_sign: | The monthly amount in cents when billed annually. Must be at least $1 (100 cents) if not null. | +| `description` | *Optional[str]* | :heavy_minus_sign: | An optional description for this custom price. | \ No newline at end of file diff --git a/docs/models/createenterpriseconnectioncustomattributes.md b/docs/models/createenterpriseconnectioncustomattributes.md new file mode 100644 index 00000000..7bfb1a92 --- /dev/null +++ b/docs/models/createenterpriseconnectioncustomattributes.md @@ -0,0 +1,11 @@ +# CreateEnterpriseConnectionCustomAttributes + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `name` | *str* | :heavy_check_mark: | Display name for the custom attribute | +| `key` | *str* | :heavy_check_mark: | Key used to store the attribute in the user's metadata | +| `sso_path` | *Optional[str]* | :heavy_minus_sign: | Path to extract the attribute value from SSO claims | +| `scim_path` | *Optional[str]* | :heavy_minus_sign: | GJSON path to extract the attribute value from SCIM user resources | \ No newline at end of file diff --git a/docs/models/createenterpriseconnectionrequestbody.md b/docs/models/createenterpriseconnectionrequestbody.md index a2549058..b2c9519c 100644 --- a/docs/models/createenterpriseconnectionrequestbody.md +++ b/docs/models/createenterpriseconnectionrequestbody.md @@ -6,9 +6,11 @@ | Field | Type | Required | Description | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `name` | *str* | :heavy_check_mark: | The display name of the connection | -| `provider` | [models.Provider](../models/provider.md) | :heavy_check_mark: | The identity provider (e.g. saml_custom, oidc_custom) | +| `provider` | [models.Provider](../models/provider.md) | :heavy_check_mark: | The identity provider (e.g. saml_custom, oidc_custom, oidc_github_enterprise, oidc_gitlab) | | `domains` | List[*str*] | :heavy_check_mark: | Domains associated with the enterprise connection (required; at least one). Values are normalized to lowercase. Each domain must be a valid fully qualified domain name. | | `organization_id` | *OptionalNullable[str]* | :heavy_minus_sign: | Organization ID when the connection is linked to an organization | +| `allow_organization_account_linking` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether this connection supports account linking via organization membership | | `active` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether the enterprise connection is active. When true, IdP metadata must be provided via the `saml` object. | | `saml` | [OptionalNullable[models.CreateEnterpriseConnectionSaml]](../models/createenterpriseconnectionsaml.md) | :heavy_minus_sign: | SAML connection-specific properties. Only applied when the enterprise connection uses SAML (e.g. provider is saml_custom).
Use this to set IdP configuration, attribute mapping, and other SAML-specific settings at creation time. | -| `oidc` | [OptionalNullable[models.Oidc]](../models/oidc.md) | :heavy_minus_sign: | OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. provider is oidc_custom). | \ No newline at end of file +| `oidc` | [OptionalNullable[models.Oidc]](../models/oidc.md) | :heavy_minus_sign: | OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. provider is oidc_custom, oidc_github_enterprise, or oidc_gitlab). | +| `custom_attributes` | List[[models.CreateEnterpriseConnectionCustomAttributes](../models/createenterpriseconnectioncustomattributes.md)] | :heavy_minus_sign: | Custom attributes to map from the IdP to the user's profile via SSO or SCIM provisioning. Requires the custom attributes feature to be enabled for the instance. | \ No newline at end of file diff --git a/docs/models/customattributes.md b/docs/models/customattributes.md new file mode 100644 index 00000000..4ef008ef --- /dev/null +++ b/docs/models/customattributes.md @@ -0,0 +1,11 @@ +# CustomAttributes + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `name` | *str* | :heavy_check_mark: | Display name for the custom attribute | +| `key` | *str* | :heavy_check_mark: | Key used to store the attribute in the user's public/private/unsafe metadata | +| `sso_path` | *Optional[str]* | :heavy_minus_sign: | Path to extract the attribute value from SSO claims (SAML assertions or OIDC claims) | +| `scim_path` | *Optional[str]* | :heavy_minus_sign: | GJSON path to extract the attribute value from SCIM user resources | \ No newline at end of file diff --git a/docs/models/fee.md b/docs/models/fee.md new file mode 100644 index 00000000..e5da68e2 --- /dev/null +++ b/docs/models/fee.md @@ -0,0 +1,11 @@ +# Fee + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `amount` | *int* | :heavy_check_mark: | The amount in cents. | +| `amount_formatted` | *str* | :heavy_check_mark: | The formatted amount as a string (e.g., "$49.99"). | +| `currency` | *str* | :heavy_check_mark: | The currency code (e.g., "USD"). | +| `currency_symbol` | *str* | :heavy_check_mark: | The currency symbol (e.g., "$"). | \ No newline at end of file diff --git a/docs/models/oauthconfig.md b/docs/models/oauthconfig.md index eacce93e..095e976c 100644 --- a/docs/models/oauthconfig.md +++ b/docs/models/oauthconfig.md @@ -5,13 +5,13 @@ Present when the enterprise connection uses OIDC ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | -| `id` | *Optional[str]* | :heavy_minus_sign: | OAuth config ID | -| `name` | *Optional[str]* | :heavy_minus_sign: | Custom OIDC provider display name | -| `provider_key` | *Optional[str]* | :heavy_minus_sign: | OAuth provider key (e.g. oidc_custom) | -| `client_id` | *OptionalNullable[str]* | :heavy_minus_sign: | OAuth client ID | -| `discovery_url` | *OptionalNullable[str]* | :heavy_minus_sign: | OIDC discovery URL | -| `logo_public_url` | *OptionalNullable[str]* | :heavy_minus_sign: | Logo URL for the provider | -| `created_at` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp in milliseconds when the config was created | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp in milliseconds when the config was last updated | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | OAuth config ID | +| `name` | *Optional[str]* | :heavy_minus_sign: | Custom OIDC provider display name | +| `provider_key` | *Optional[str]* | :heavy_minus_sign: | OAuth provider key (e.g. oidc_custom, oidc_ghe_*, oidc_gitlab_ent_*) | +| `client_id` | *OptionalNullable[str]* | :heavy_minus_sign: | OAuth client ID | +| `discovery_url` | *OptionalNullable[str]* | :heavy_minus_sign: | OIDC discovery URL | +| `logo_public_url` | *OptionalNullable[str]* | :heavy_minus_sign: | Logo URL for the provider | +| `created_at` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp in milliseconds when the config was created | +| `updated_at` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp in milliseconds when the config was last updated | \ No newline at end of file diff --git a/docs/models/oidc.md b/docs/models/oidc.md index 27b83266..20f82269 100644 --- a/docs/models/oidc.md +++ b/docs/models/oidc.md @@ -1,6 +1,6 @@ # Oidc -OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. provider is oidc_custom). +OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. provider is oidc_custom, oidc_github_enterprise, or oidc_gitlab). ## Fields diff --git a/docs/models/one.md b/docs/models/one.md index 5e542411..81ffd237 100644 --- a/docs/models/one.md +++ b/docs/models/one.md @@ -27,6 +27,7 @@ | `allow_subdomains` | *bool* | :heavy_check_mark: | N/A | | `allow_idp_initiated` | *bool* | :heavy_check_mark: | N/A | | `disable_additional_identifications` | *bool* | :heavy_check_mark: | N/A | +| `allow_organization_account_linking` | *bool* | :heavy_check_mark: | N/A | | `force_authn` | *bool* | :heavy_check_mark: | Enable or deactivate ForceAuthn | | `enterprise_connection_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | `created_at` | *int* | :heavy_check_mark: | Unix timestamp of creation.
| diff --git a/docs/models/plan.md b/docs/models/plan.md index c07c6b8c..0dc88389 100644 --- a/docs/models/plan.md +++ b/docs/models/plan.md @@ -10,7 +10,7 @@ The associated plan. | `object` | [models.CommerceSubscriptionItemPlanObject](../models/commercesubscriptionitemplanobject.md) | :heavy_check_mark: | String representing the object's type. Objects of the same type share the same value. | | `id` | *str* | :heavy_check_mark: | Unique identifier for the plan. | | `name` | *str* | :heavy_check_mark: | The name of the plan. | -| `fee` | [models.CommerceMoneyResponse](../models/commercemoneyresponse.md) | :heavy_check_mark: | N/A | +| `fee` | [Nullable[models.CommerceSubscriptionItemFee]](../models/commercesubscriptionitemfee.md) | :heavy_check_mark: | N/A | | `annual_monthly_fee` | [Nullable[models.CommerceSubscriptionItemAnnualMonthlyFee]](../models/commercesubscriptionitemannualmonthlyfee.md) | :heavy_check_mark: | N/A | | `annual_fee` | [Nullable[models.CommerceSubscriptionItemAnnualFee]](../models/commercesubscriptionitemannualfee.md) | :heavy_check_mark: | N/A | | `description` | *Nullable[str]* | :heavy_check_mark: | The description of the plan. | diff --git a/docs/models/provider.md b/docs/models/provider.md index 71d1a731..045d4689 100644 --- a/docs/models/provider.md +++ b/docs/models/provider.md @@ -1,6 +1,6 @@ # Provider -The identity provider (e.g. saml_custom, oidc_custom) +The identity provider (e.g. saml_custom, oidc_custom, oidc_github_enterprise, oidc_gitlab) ## Example Usage @@ -13,10 +13,12 @@ value = Provider.SAML_CUSTOM ## Values -| Name | Value | -| ---------------- | ---------------- | -| `SAML_CUSTOM` | saml_custom | -| `SAML_OKTA` | saml_okta | -| `SAML_GOOGLE` | saml_google | -| `SAML_MICROSOFT` | saml_microsoft | -| `OIDC_CUSTOM` | oidc_custom | \ No newline at end of file +| Name | Value | +| ------------------------ | ------------------------ | +| `SAML_CUSTOM` | saml_custom | +| `SAML_OKTA` | saml_okta | +| `SAML_GOOGLE` | saml_google | +| `SAML_MICROSOFT` | saml_microsoft | +| `OIDC_CUSTOM` | oidc_custom | +| `OIDC_GITHUB_ENTERPRISE` | oidc_github_enterprise | +| `OIDC_GITLAB` | oidc_gitlab | \ No newline at end of file diff --git a/docs/models/schemascommerceplan.md b/docs/models/schemascommerceplan.md index 2893aa19..72d7df31 100644 --- a/docs/models/schemascommerceplan.md +++ b/docs/models/schemascommerceplan.md @@ -3,34 +3,34 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `object` | [models.SchemasCommercePlanObject](../models/schemascommerceplanobject.md) | :heavy_check_mark: | String representing the object's type. Objects of the same type share the same value. | -| `id` | *str* | :heavy_check_mark: | Unique identifier for the commerce plan. | -| `name` | *str* | :heavy_check_mark: | The name of the commerce plan. | -| `fee` | [models.CommerceMoneyResponse](../models/commercemoneyresponse.md) | :heavy_check_mark: | N/A | -| `annual_monthly_fee` | [models.CommerceMoneyResponse](../models/commercemoneyresponse.md) | :heavy_check_mark: | N/A | -| `annual_fee` | [models.CommerceMoneyResponse](../models/commercemoneyresponse.md) | :heavy_check_mark: | N/A | -| `amount` | *int* | :heavy_check_mark: | The amount in cents for the plan. | -| `amount_formatted` | *str* | :heavy_check_mark: | The formatted amount as a string (e.g., "$49.99"). | -| `annual_monthly_amount` | *int* | :heavy_check_mark: | The monthly amount in cents when billed annually. | -| `annual_monthly_amount_formatted` | *str* | :heavy_check_mark: | The formatted annual monthly amount as a string. | -| `annual_amount` | *int* | :heavy_check_mark: | The total annual amount in cents. | -| `annual_amount_formatted` | *str* | :heavy_check_mark: | The formatted annual amount as a string. | -| `currency_symbol` | *str* | :heavy_check_mark: | The currency symbol (e.g., "$"). | -| `currency` | *str* | :heavy_check_mark: | The currency code (e.g., "USD"). | -| `description` | *str* | :heavy_check_mark: | The description of the commerce plan. | -| `product_id` | *str* | :heavy_check_mark: | The ID of the product this plan belongs to. | -| `is_default` | *bool* | :heavy_check_mark: | Whether this is the default plan. | -| `is_recurring` | *bool* | :heavy_check_mark: | Whether this is a recurring plan. | -| `publicly_visible` | *bool* | :heavy_check_mark: | Whether this plan is publicly visible. | -| `has_base_fee` | *bool* | :heavy_check_mark: | Whether this plan has a base fee. | -| `payer_type` | List[*str*] | :heavy_check_mark: | The types of payers that can use this plan. | -| `for_payer_type` | *str* | :heavy_check_mark: | The payer type this plan is designed for. | -| `slug` | *str* | :heavy_check_mark: | The URL-friendly slug for the plan. | -| `avatar_url` | *str* | :heavy_check_mark: | The URL of the plan's avatar image. | -| `period` | *Optional[str]* | :heavy_minus_sign: | The billing period for the plan. | -| `interval` | *Optional[int]* | :heavy_minus_sign: | The billing interval. | -| `features` | List[[models.SchemasFeatureResponse](../models/schemasfeatureresponse.md)] | :heavy_check_mark: | The features included in this plan. | -| `free_trial_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether free trial is enabled for this plan. | -| `free_trial_days` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of free trial days for this plan. | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `object` | [models.SchemasCommercePlanObject](../models/schemascommerceplanobject.md) | :heavy_check_mark: | String representing the object's type. Objects of the same type share the same value. | +| `id` | *str* | :heavy_check_mark: | Unique identifier for the commerce plan. | +| `name` | *str* | :heavy_check_mark: | The name of the commerce plan. | +| `fee` | [Nullable[models.SchemasCommercePlanFee]](../models/schemascommerceplanfee.md) | :heavy_check_mark: | N/A | +| `annual_monthly_fee` | [Nullable[models.SchemasCommercePlanAnnualMonthlyFee]](../models/schemascommerceplanannualmonthlyfee.md) | :heavy_check_mark: | N/A | +| `annual_fee` | [Nullable[models.SchemasCommercePlanAnnualFee]](../models/schemascommerceplanannualfee.md) | :heavy_check_mark: | N/A | +| `amount` | *int* | :heavy_check_mark: | The amount in cents for the plan. | +| `amount_formatted` | *str* | :heavy_check_mark: | The formatted amount as a string (e.g., "$49.99"). | +| `annual_monthly_amount` | *int* | :heavy_check_mark: | The monthly amount in cents when billed annually. | +| `annual_monthly_amount_formatted` | *str* | :heavy_check_mark: | The formatted annual monthly amount as a string. | +| `annual_amount` | *int* | :heavy_check_mark: | The total annual amount in cents. | +| `annual_amount_formatted` | *str* | :heavy_check_mark: | The formatted annual amount as a string. | +| `currency_symbol` | *str* | :heavy_check_mark: | The currency symbol (e.g., "$"). | +| `currency` | *str* | :heavy_check_mark: | The currency code (e.g., "USD"). | +| `description` | *str* | :heavy_check_mark: | The description of the commerce plan. | +| `product_id` | *str* | :heavy_check_mark: | The ID of the product this plan belongs to. | +| `is_default` | *bool* | :heavy_check_mark: | Whether this is the default plan. | +| `is_recurring` | *bool* | :heavy_check_mark: | Whether this is a recurring plan. | +| `publicly_visible` | *bool* | :heavy_check_mark: | Whether this plan is publicly visible. | +| `has_base_fee` | *bool* | :heavy_check_mark: | Whether this plan has a base fee. | +| `payer_type` | List[*str*] | :heavy_check_mark: | The types of payers that can use this plan. | +| `for_payer_type` | *str* | :heavy_check_mark: | The payer type this plan is designed for. | +| `slug` | *str* | :heavy_check_mark: | The URL-friendly slug for the plan. | +| `avatar_url` | *str* | :heavy_check_mark: | The URL of the plan's avatar image. | +| `period` | *Optional[str]* | :heavy_minus_sign: | The billing period for the plan. | +| `interval` | *Optional[int]* | :heavy_minus_sign: | The billing interval. | +| `features` | List[[models.SchemasFeatureResponse](../models/schemasfeatureresponse.md)] | :heavy_check_mark: | The features included in this plan. | +| `free_trial_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether free trial is enabled for this plan. | +| `free_trial_days` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of free trial days for this plan. | \ No newline at end of file diff --git a/docs/models/schemascommerceplanannualfee.md b/docs/models/schemascommerceplanannualfee.md new file mode 100644 index 00000000..d89eafb7 --- /dev/null +++ b/docs/models/schemascommerceplanannualfee.md @@ -0,0 +1,11 @@ +# SchemasCommercePlanAnnualFee + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `amount` | *int* | :heavy_check_mark: | The amount in cents. | +| `amount_formatted` | *str* | :heavy_check_mark: | The formatted amount as a string (e.g., "$49.99"). | +| `currency` | *str* | :heavy_check_mark: | The currency code (e.g., "USD"). | +| `currency_symbol` | *str* | :heavy_check_mark: | The currency symbol (e.g., "$"). | \ No newline at end of file diff --git a/docs/models/schemascommerceplanannualmonthlyfee.md b/docs/models/schemascommerceplanannualmonthlyfee.md new file mode 100644 index 00000000..5d102134 --- /dev/null +++ b/docs/models/schemascommerceplanannualmonthlyfee.md @@ -0,0 +1,11 @@ +# SchemasCommercePlanAnnualMonthlyFee + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `amount` | *int* | :heavy_check_mark: | The amount in cents. | +| `amount_formatted` | *str* | :heavy_check_mark: | The formatted amount as a string (e.g., "$49.99"). | +| `currency` | *str* | :heavy_check_mark: | The currency code (e.g., "USD"). | +| `currency_symbol` | *str* | :heavy_check_mark: | The currency symbol (e.g., "$"). | \ No newline at end of file diff --git a/docs/models/schemascommerceplanfee.md b/docs/models/schemascommerceplanfee.md new file mode 100644 index 00000000..5ba0661b --- /dev/null +++ b/docs/models/schemascommerceplanfee.md @@ -0,0 +1,11 @@ +# SchemasCommercePlanFee + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `amount` | *int* | :heavy_check_mark: | The amount in cents. | +| `amount_formatted` | *str* | :heavy_check_mark: | The formatted amount as a string (e.g., "$49.99"). | +| `currency` | *str* | :heavy_check_mark: | The currency code (e.g., "USD"). | +| `currency_symbol` | *str* | :heavy_check_mark: | The currency symbol (e.g., "$"). | \ No newline at end of file diff --git a/docs/models/schemascommercesubscriptionitemannualfee.md b/docs/models/schemascommercesubscriptionitemannualfee.md new file mode 100644 index 00000000..7027ae7e --- /dev/null +++ b/docs/models/schemascommercesubscriptionitemannualfee.md @@ -0,0 +1,11 @@ +# SchemasCommerceSubscriptionItemAnnualFee + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `amount` | *int* | :heavy_check_mark: | The amount in cents. | +| `amount_formatted` | *str* | :heavy_check_mark: | The formatted amount as a string (e.g., "$49.99"). | +| `currency` | *str* | :heavy_check_mark: | The currency code (e.g., "USD"). | +| `currency_symbol` | *str* | :heavy_check_mark: | The currency symbol (e.g., "$"). | \ No newline at end of file diff --git a/docs/models/schemascommercesubscriptionitemannualmonthlyfee.md b/docs/models/schemascommercesubscriptionitemannualmonthlyfee.md new file mode 100644 index 00000000..f64e0c44 --- /dev/null +++ b/docs/models/schemascommercesubscriptionitemannualmonthlyfee.md @@ -0,0 +1,11 @@ +# SchemasCommerceSubscriptionItemAnnualMonthlyFee + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `amount` | *int* | :heavy_check_mark: | The amount in cents. | +| `amount_formatted` | *str* | :heavy_check_mark: | The formatted amount as a string (e.g., "$49.99"). | +| `currency` | *str* | :heavy_check_mark: | The currency code (e.g., "USD"). | +| `currency_symbol` | *str* | :heavy_check_mark: | The currency symbol (e.g., "$"). | \ No newline at end of file diff --git a/docs/models/schemascommercesubscriptionitemfee.md b/docs/models/schemascommercesubscriptionitemfee.md new file mode 100644 index 00000000..4f5f79ba --- /dev/null +++ b/docs/models/schemascommercesubscriptionitemfee.md @@ -0,0 +1,11 @@ +# SchemasCommerceSubscriptionItemFee + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `amount` | *int* | :heavy_check_mark: | The amount in cents. | +| `amount_formatted` | *str* | :heavy_check_mark: | The formatted amount as a string (e.g., "$49.99"). | +| `currency` | *str* | :heavy_check_mark: | The currency code (e.g., "USD"). | +| `currency_symbol` | *str* | :heavy_check_mark: | The currency symbol (e.g., "$"). | \ No newline at end of file diff --git a/docs/models/schemascommercesubscriptionitemplan.md b/docs/models/schemascommercesubscriptionitemplan.md index 608d099b..fc43e9be 100644 --- a/docs/models/schemascommercesubscriptionitemplan.md +++ b/docs/models/schemascommercesubscriptionitemplan.md @@ -5,34 +5,34 @@ The associated commerce plan. ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `object` | [models.SchemasCommerceSubscriptionItemPlanObject](../models/schemascommercesubscriptionitemplanobject.md) | :heavy_check_mark: | String representing the object's type. Objects of the same type share the same value. | -| `id` | *str* | :heavy_check_mark: | Unique identifier for the commerce plan. | -| `name` | *str* | :heavy_check_mark: | The name of the commerce plan. | -| `fee` | [models.CommerceMoneyResponse](../models/commercemoneyresponse.md) | :heavy_check_mark: | N/A | -| `annual_monthly_fee` | [models.CommerceMoneyResponse](../models/commercemoneyresponse.md) | :heavy_check_mark: | N/A | -| `annual_fee` | [models.CommerceMoneyResponse](../models/commercemoneyresponse.md) | :heavy_check_mark: | N/A | -| `amount` | *int* | :heavy_check_mark: | The amount in cents for the plan. | -| `amount_formatted` | *str* | :heavy_check_mark: | The formatted amount as a string (e.g., "$49.99"). | -| `annual_monthly_amount` | *int* | :heavy_check_mark: | The monthly amount in cents when billed annually. | -| `annual_monthly_amount_formatted` | *str* | :heavy_check_mark: | The formatted annual monthly amount as a string. | -| `annual_amount` | *int* | :heavy_check_mark: | The total annual amount in cents. | -| `annual_amount_formatted` | *str* | :heavy_check_mark: | The formatted annual amount as a string. | -| `currency_symbol` | *str* | :heavy_check_mark: | The currency symbol (e.g., "$"). | -| `currency` | *str* | :heavy_check_mark: | The currency code (e.g., "USD"). | -| `description` | *str* | :heavy_check_mark: | The description of the commerce plan. | -| `product_id` | *str* | :heavy_check_mark: | The ID of the product this plan belongs to. | -| `is_default` | *bool* | :heavy_check_mark: | Whether this is the default plan. | -| `is_recurring` | *bool* | :heavy_check_mark: | Whether this is a recurring plan. | -| `publicly_visible` | *bool* | :heavy_check_mark: | Whether this plan is publicly visible. | -| `has_base_fee` | *bool* | :heavy_check_mark: | Whether this plan has a base fee. | -| `payer_type` | List[*str*] | :heavy_check_mark: | The types of payers that can use this plan. | -| `for_payer_type` | *str* | :heavy_check_mark: | The payer type this plan is designed for. | -| `slug` | *str* | :heavy_check_mark: | The URL-friendly slug for the plan. | -| `avatar_url` | *str* | :heavy_check_mark: | The URL of the plan's avatar image. | -| `period` | *Optional[str]* | :heavy_minus_sign: | The billing period for the plan. | -| `interval` | *Optional[int]* | :heavy_minus_sign: | The billing interval. | -| `features` | List[[models.SchemasFeatureResponse](../models/schemasfeatureresponse.md)] | :heavy_check_mark: | The features included in this plan. | -| `free_trial_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether free trial is enabled for this plan. | -| `free_trial_days` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of free trial days for this plan. | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `object` | [models.SchemasCommerceSubscriptionItemPlanObject](../models/schemascommercesubscriptionitemplanobject.md) | :heavy_check_mark: | String representing the object's type. Objects of the same type share the same value. | +| `id` | *str* | :heavy_check_mark: | Unique identifier for the commerce plan. | +| `name` | *str* | :heavy_check_mark: | The name of the commerce plan. | +| `fee` | [Nullable[models.SchemasCommerceSubscriptionItemFee]](../models/schemascommercesubscriptionitemfee.md) | :heavy_check_mark: | N/A | +| `annual_monthly_fee` | [Nullable[models.SchemasCommerceSubscriptionItemAnnualMonthlyFee]](../models/schemascommercesubscriptionitemannualmonthlyfee.md) | :heavy_check_mark: | N/A | +| `annual_fee` | [Nullable[models.SchemasCommerceSubscriptionItemAnnualFee]](../models/schemascommercesubscriptionitemannualfee.md) | :heavy_check_mark: | N/A | +| `amount` | *int* | :heavy_check_mark: | The amount in cents for the plan. | +| `amount_formatted` | *str* | :heavy_check_mark: | The formatted amount as a string (e.g., "$49.99"). | +| `annual_monthly_amount` | *int* | :heavy_check_mark: | The monthly amount in cents when billed annually. | +| `annual_monthly_amount_formatted` | *str* | :heavy_check_mark: | The formatted annual monthly amount as a string. | +| `annual_amount` | *int* | :heavy_check_mark: | The total annual amount in cents. | +| `annual_amount_formatted` | *str* | :heavy_check_mark: | The formatted annual amount as a string. | +| `currency_symbol` | *str* | :heavy_check_mark: | The currency symbol (e.g., "$"). | +| `currency` | *str* | :heavy_check_mark: | The currency code (e.g., "USD"). | +| `description` | *str* | :heavy_check_mark: | The description of the commerce plan. | +| `product_id` | *str* | :heavy_check_mark: | The ID of the product this plan belongs to. | +| `is_default` | *bool* | :heavy_check_mark: | Whether this is the default plan. | +| `is_recurring` | *bool* | :heavy_check_mark: | Whether this is a recurring plan. | +| `publicly_visible` | *bool* | :heavy_check_mark: | Whether this plan is publicly visible. | +| `has_base_fee` | *bool* | :heavy_check_mark: | Whether this plan has a base fee. | +| `payer_type` | List[*str*] | :heavy_check_mark: | The types of payers that can use this plan. | +| `for_payer_type` | *str* | :heavy_check_mark: | The payer type this plan is designed for. | +| `slug` | *str* | :heavy_check_mark: | The URL-friendly slug for the plan. | +| `avatar_url` | *str* | :heavy_check_mark: | The URL of the plan's avatar image. | +| `period` | *Optional[str]* | :heavy_minus_sign: | The billing period for the plan. | +| `interval` | *Optional[int]* | :heavy_minus_sign: | The billing interval. | +| `features` | List[[models.SchemasFeatureResponse](../models/schemasfeatureresponse.md)] | :heavy_check_mark: | The features included in this plan. | +| `free_trial_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether free trial is enabled for this plan. | +| `free_trial_days` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of free trial days for this plan. | \ No newline at end of file diff --git a/docs/models/schemasenterpriseconnection.md b/docs/models/schemasenterpriseconnection.md index da2b78ca..8d81acc2 100644 --- a/docs/models/schemasenterpriseconnection.md +++ b/docs/models/schemasenterpriseconnection.md @@ -12,6 +12,8 @@ | `organization_id` | *OptionalNullable[str]* | :heavy_minus_sign: | Organization ID when the connection is linked to an organization | | `sync_user_attributes` | *Optional[bool]* | :heavy_minus_sign: | Controls whether to update the user's attributes on each sign-in | | `disable_additional_identifications` | *Optional[bool]* | :heavy_minus_sign: | When true, users cannot add additional identifications when using this connection | +| `allow_organization_account_linking` | *Optional[bool]* | :heavy_minus_sign: | Whether this connection supports account linking via organization membership | +| `custom_attributes` | List[[models.CustomAttributes](../models/customattributes.md)] | :heavy_minus_sign: | Custom attributes to map from the IdP to the user's profile via SSO or SCIM provisioning | | `saml_connection` | [OptionalNullable[models.SchemasEnterpriseConnectionSamlConnection]](../models/schemasenterpriseconnectionsamlconnection.md) | :heavy_minus_sign: | Present when the enterprise connection uses SAML | | `oauth_config` | [OptionalNullable[models.OauthConfig]](../models/oauthconfig.md) | :heavy_minus_sign: | Present when the enterprise connection uses OIDC | | `created_at` | *int* | :heavy_check_mark: | Unix timestamp in milliseconds when the connection was created | diff --git a/docs/models/two.md b/docs/models/two.md index 6351bace..a0dd298b 100644 --- a/docs/models/two.md +++ b/docs/models/two.md @@ -27,6 +27,7 @@ | `allow_subdomains` | *bool* | :heavy_check_mark: | N/A | | `allow_idp_initiated` | *bool* | :heavy_check_mark: | N/A | | `disable_additional_identifications` | *bool* | :heavy_check_mark: | N/A | +| `allow_organization_account_linking` | *bool* | :heavy_check_mark: | N/A | | `force_authn` | *bool* | :heavy_check_mark: | Enable or deactivate ForceAuthn | | `enterprise_connection_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | `created_at` | *int* | :heavy_check_mark: | Unix timestamp of creation.
| diff --git a/docs/models/updateenterpriseconnectioncustomattributes.md b/docs/models/updateenterpriseconnectioncustomattributes.md new file mode 100644 index 00000000..76e2fb6e --- /dev/null +++ b/docs/models/updateenterpriseconnectioncustomattributes.md @@ -0,0 +1,11 @@ +# UpdateEnterpriseConnectionCustomAttributes + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `name` | *str* | :heavy_check_mark: | Display name for the custom attribute | +| `key` | *str* | :heavy_check_mark: | Key used to store the attribute in the user's metadata | +| `sso_path` | *Optional[str]* | :heavy_minus_sign: | Path to extract the attribute value from SSO claims | +| `scim_path` | *Optional[str]* | :heavy_minus_sign: | GJSON path to extract the attribute value from SCIM user resources | \ No newline at end of file diff --git a/docs/models/updateenterpriseconnectionoidc.md b/docs/models/updateenterpriseconnectionoidc.md index 50016113..14364b35 100644 --- a/docs/models/updateenterpriseconnectionoidc.md +++ b/docs/models/updateenterpriseconnectionoidc.md @@ -1,6 +1,6 @@ # UpdateEnterpriseConnectionOidc -OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC. +OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. oidc_custom, oidc_github_enterprise, or oidc_gitlab). ## Fields diff --git a/docs/models/updateenterpriseconnectionrequestbody.md b/docs/models/updateenterpriseconnectionrequestbody.md index a62993e2..6eb71635 100644 --- a/docs/models/updateenterpriseconnectionrequestbody.md +++ b/docs/models/updateenterpriseconnectionrequestbody.md @@ -10,6 +10,8 @@ | `active` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether the enterprise connection is active. When set to true (enabling), any existing verified organization domains for the same domain(s) will be removed so the connection can be enabled. | | `sync_user_attributes` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to sync user attributes on sign-in | | `disable_additional_identifications` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to disable additional identifications | +| `allow_organization_account_linking` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether this connection supports account linking via organization membership | | `organization_id` | *OptionalNullable[str]* | :heavy_minus_sign: | Organization ID to link to this enterprise connection. Only linking is supported; sending this field sets or changes the linked organization. There is no way to unlink an organization once linked. | | `saml` | [OptionalNullable[models.UpdateEnterpriseConnectionSaml]](../models/updateenterpriseconnectionsaml.md) | :heavy_minus_sign: | SAML connection-specific properties. Only applied when the enterprise connection uses SAML.
Use this to update IdP configuration, attribute mapping, and other SAML-specific settings. | -| `oidc` | [OptionalNullable[models.UpdateEnterpriseConnectionOidc]](../models/updateenterpriseconnectionoidc.md) | :heavy_minus_sign: | OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC. | \ No newline at end of file +| `oidc` | [OptionalNullable[models.UpdateEnterpriseConnectionOidc]](../models/updateenterpriseconnectionoidc.md) | :heavy_minus_sign: | OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. oidc_custom, oidc_github_enterprise, or oidc_gitlab). | +| `custom_attributes` | List[[models.UpdateEnterpriseConnectionCustomAttributes](../models/updateenterpriseconnectioncustomattributes.md)] | :heavy_minus_sign: | Custom attributes to map from the IdP to the user's profile via SSO or SCIM provisioning. Requires the custom attributes feature to be enabled for the instance. | \ No newline at end of file diff --git a/docs/models/updatesamlconnectionrequestbody.md b/docs/models/updatesamlconnectionrequestbody.md index dcb4a99f..e00926cd 100644 --- a/docs/models/updatesamlconnectionrequestbody.md +++ b/docs/models/updatesamlconnectionrequestbody.md @@ -20,5 +20,6 @@ | `allow_subdomains` | *OptionalNullable[bool]* | :heavy_minus_sign: | Allow users with an email address subdomain to use this connection in order to authenticate | true | | `allow_idp_initiated` | *OptionalNullable[bool]* | :heavy_minus_sign: | Enable or deactivate IdP-initiated flows | false | | `disable_additional_identifications` | *OptionalNullable[bool]* | :heavy_minus_sign: | Enable or deactivate additional identifications | | +| `allow_organization_account_linking` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether this connection supports account linking via organization membership | | | `force_authn` | *Optional[bool]* | :heavy_minus_sign: | Enable or deactivate ForceAuthn | | | `consent_verified_domains_deletion` | *OptionalNullable[bool]* | :heavy_minus_sign: | When enabling the connection, controls behavior when verified domains used for enrollment modes like automatic invitation or automatic suggestion already exist for the same domain. If true, those verified domains are removed and the connection is enabled. If false or omitted, the request fails when any such verified domain exists. | | \ No newline at end of file diff --git a/docs/sdks/agenttasks/README.md b/docs/sdks/agenttasks/README.md index f82d65de..d56f0ae5 100644 --- a/docs/sdks/agenttasks/README.md +++ b/docs/sdks/agenttasks/README.md @@ -11,7 +11,7 @@ Create an agent task on behalf of a user. The response contains a URL that, when visited, creates a session for the user. -The agent_id is stable per agent_name within an instance. The task_id is unique per call. +The agent_id is stable per agent_name within an instance. The agent_task_id is unique per call. ### Example Usage diff --git a/docs/sdks/billing/README.md b/docs/sdks/billing/README.md index 65bb2ccb..8745c8b6 100644 --- a/docs/sdks/billing/README.md +++ b/docs/sdks/billing/README.md @@ -131,14 +131,14 @@ with Clerk( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `plan_id` | *str* | :heavy_check_mark: | The ID of the plan this price belongs to. | -| `amount` | *int* | :heavy_check_mark: | The amount in cents for the price. Must be at least $1 (100 cents). | -| `currency` | *Optional[str]* | :heavy_minus_sign: | The currency code (e.g., "USD"). Defaults to USD. | -| `annual_monthly_amount` | *Optional[int]* | :heavy_minus_sign: | The monthly amount in cents when billed annually. Optional. | -| `description` | *Optional[str]* | :heavy_minus_sign: | An optional description for this custom price. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `plan_id` | *str* | :heavy_check_mark: | The ID of the plan this price belongs to. | +| `amount` | *Nullable[int]* | :heavy_check_mark: | The monthly amount in cents. Must be at least $1 (100 cents) if not null. | +| `currency` | *Optional[str]* | :heavy_minus_sign: | The currency code (e.g., "USD"). Defaults to USD. | +| `annual_monthly_amount` | *OptionalNullable[int]* | :heavy_minus_sign: | The monthly amount in cents when billed annually. Must be at least $1 (100 cents) if not null. | +| `description` | *Optional[str]* | :heavy_minus_sign: | An optional description for this custom price. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response diff --git a/docs/sdks/emailaddresses/README.md b/docs/sdks/emailaddresses/README.md index 586ce69d..0f962e30 100644 --- a/docs/sdks/emailaddresses/README.md +++ b/docs/sdks/emailaddresses/README.md @@ -129,10 +129,10 @@ with Clerk( ### Errors -| Error Type | Status Code | Content Type | -| ------------------ | ------------------ | ------------------ | -| models.ClerkErrors | 400, 401, 403, 404 | application/json | -| models.SDKError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ----------------------- | ----------------------- | ----------------------- | +| models.ClerkErrors | 400, 401, 403, 404, 409 | application/json | +| models.SDKError | 4XX, 5XX | \*/\* | ## update diff --git a/docs/sdks/enterpriseconnectionssdk/README.md b/docs/sdks/enterpriseconnectionssdk/README.md index 0ceb9347..71dd4508 100644 --- a/docs/sdks/enterpriseconnectionssdk/README.md +++ b/docs/sdks/enterpriseconnectionssdk/README.md @@ -78,6 +78,7 @@ with Clerk( "", ], "organization_id": "", + "allow_organization_account_linking": False, "active": True, "saml": None, "oidc": { @@ -89,6 +90,14 @@ with Clerk( "user_info_url": "https://adolescent-tooth.com", "requires_pkce": True, }, + "custom_attributes": [ + { + "name": "", + "key": "", + "sso_path": "", + "scim_path": "", + }, + ], }) # Handle response @@ -170,7 +179,7 @@ with Clerk( bearer_auth="", ) as clerk: - res = clerk.enterprise_connections.update(enterprise_connection_id="", name="", domains=None, active=False, sync_user_attributes=True, disable_additional_identifications=True, organization_id="", saml={ + res = clerk.enterprise_connections.update(enterprise_connection_id="", name="", domains=None, active=False, sync_user_attributes=True, disable_additional_identifications=True, allow_organization_account_linking=True, organization_id="", saml={ "name": "", "idp_entity_id": "", "idp_sso_url": "https://animated-experience.name/", @@ -194,7 +203,14 @@ with Clerk( "token_url": "https://helpless-gradient.info/", "user_info_url": "https://neglected-chapel.name/", "requires_pkce": False, - }) + }, custom_attributes=[ + { + "name": "", + "key": "", + "sso_path": "", + "scim_path": "", + }, + ]) # Handle response print(res) @@ -211,9 +227,11 @@ with Clerk( | `active` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether the enterprise connection is active. When set to true (enabling), any existing verified organization domains for the same domain(s) will be removed so the connection can be enabled. | | `sync_user_attributes` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to sync user attributes on sign-in | | `disable_additional_identifications` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether to disable additional identifications | +| `allow_organization_account_linking` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether this connection supports account linking via organization membership | | `organization_id` | *OptionalNullable[str]* | :heavy_minus_sign: | Organization ID to link to this enterprise connection. Only linking is supported; sending this field sets or changes the linked organization. There is no way to unlink an organization once linked. | | `saml` | [OptionalNullable[models.UpdateEnterpriseConnectionSaml]](../../models/updateenterpriseconnectionsaml.md) | :heavy_minus_sign: | SAML connection-specific properties. Only applied when the enterprise connection uses SAML.
Use this to update IdP configuration, attribute mapping, and other SAML-specific settings. | -| `oidc` | [OptionalNullable[models.UpdateEnterpriseConnectionOidc]](../../models/updateenterpriseconnectionoidc.md) | :heavy_minus_sign: | OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC. | +| `oidc` | [OptionalNullable[models.UpdateEnterpriseConnectionOidc]](../../models/updateenterpriseconnectionoidc.md) | :heavy_minus_sign: | OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. oidc_custom, oidc_github_enterprise, or oidc_gitlab). | +| `custom_attributes` | List[[models.UpdateEnterpriseConnectionCustomAttributes](../../models/updateenterpriseconnectioncustomattributes.md)] | :heavy_minus_sign: | Custom attributes to map from the IdP to the user's profile via SSO or SCIM provisioning. Requires the custom attributes feature to be enabled for the instance. | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response diff --git a/docs/sdks/samlconnectionssdk/README.md b/docs/sdks/samlconnectionssdk/README.md index 538a69cd..94dc2129 100644 --- a/docs/sdks/samlconnectionssdk/README.md +++ b/docs/sdks/samlconnectionssdk/README.md @@ -200,7 +200,7 @@ with Clerk( "email_address": "user@example.com", "first_name": "Jane", "last_name": "Doe", - }, active=True, sync_user_attributes=False, allow_subdomains=True, allow_idp_initiated=False, disable_additional_identifications=False, force_authn=True, consent_verified_domains_deletion=False) + }, active=True, sync_user_attributes=False, allow_subdomains=True, allow_idp_initiated=False, disable_additional_identifications=False, allow_organization_account_linking=False, force_authn=True, consent_verified_domains_deletion=False) # Handle response print(res) @@ -227,6 +227,7 @@ with Clerk( | `allow_subdomains` | *OptionalNullable[bool]* | :heavy_minus_sign: | Allow users with an email address subdomain to use this connection in order to authenticate | true | | `allow_idp_initiated` | *OptionalNullable[bool]* | :heavy_minus_sign: | Enable or deactivate IdP-initiated flows | false | | `disable_additional_identifications` | *OptionalNullable[bool]* | :heavy_minus_sign: | Enable or deactivate additional identifications | | +| `allow_organization_account_linking` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether this connection supports account linking via organization membership | | | `force_authn` | *Optional[bool]* | :heavy_minus_sign: | Enable or deactivate ForceAuthn | | | `consent_verified_domains_deletion` | *OptionalNullable[bool]* | :heavy_minus_sign: | When enabling the connection, controls behavior when verified domains used for enrollment modes like automatic invitation or automatic suggestion already exist for the same domain. If true, those verified domains are removed and the connection is enabled. If false or omitted, the request fails when any such verified domain exists. | | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | diff --git a/pyproject.toml b/pyproject.toml index e647d550..ede95bca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "clerk-backend-api" -version = "5.0.6" +version = "5.0.7" description = "Python Client SDK for clerk.dev" authors = [{ name = "Clerk" },] readme = "README-PYPI.md" diff --git a/src/clerk_backend_api/_version.py b/src/clerk_backend_api/_version.py index 85201402..63784cdd 100644 --- a/src/clerk_backend_api/_version.py +++ b/src/clerk_backend_api/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "clerk-backend-api" -__version__: str = "5.0.6" +__version__: str = "5.0.7" __openapi_doc_version__: str = "2025-11-10" -__gen_version__: str = "2.866.2" -__user_agent__: str = "speakeasy-sdk/python 5.0.6 2.866.2 2025-11-10 clerk-backend-api" +__gen_version__: str = "2.879.6" +__user_agent__: str = "speakeasy-sdk/python 5.0.7 2.879.6 2025-11-10 clerk-backend-api" try: if __package__ is not None: diff --git a/src/clerk_backend_api/agenttasks.py b/src/clerk_backend_api/agenttasks.py index dcf9da19..1ad830dd 100644 --- a/src/clerk_backend_api/agenttasks.py +++ b/src/clerk_backend_api/agenttasks.py @@ -27,7 +27,7 @@ def create( Create an agent task on behalf of a user. The response contains a URL that, when visited, creates a session for the user. - The agent_id is stable per agent_name within an instance. The task_id is unique per call. + The agent_id is stable per agent_name within an instance. The agent_task_id is unique per call. :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -133,7 +133,7 @@ async def create_async( Create an agent task on behalf of a user. The response contains a URL that, when visited, creates a session for the user. - The agent_id is stable per agent_name within an instance. The task_id is unique per call. + The agent_id is stable per agent_name within an instance. The agent_task_id is unique per call. :param request: The request object to send. :param retries: Override the default retry configuration for this method diff --git a/src/clerk_backend_api/basesdk.py b/src/clerk_backend_api/basesdk.py index eb488183..93b83709 100644 --- a/src/clerk_backend_api/basesdk.py +++ b/src/clerk_backend_api/basesdk.py @@ -66,6 +66,7 @@ def _build_request_async( url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, allow_empty_value: Optional[List[str]] = None, + allowed_fields: Optional[List[str]] = None, ) -> httpx.Request: client = self.sdk_configuration.async_client return self._build_request_with_client( @@ -87,6 +88,7 @@ def _build_request_async( url_override, http_headers, allow_empty_value, + allowed_fields, ) def _build_request( @@ -110,6 +112,7 @@ def _build_request( url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, allow_empty_value: Optional[List[str]] = None, + allowed_fields: Optional[List[str]] = None, ) -> httpx.Request: client = self.sdk_configuration.client return self._build_request_with_client( @@ -131,6 +134,7 @@ def _build_request( url_override, http_headers, allow_empty_value, + allowed_fields, ) def _build_request_with_client( @@ -155,6 +159,7 @@ def _build_request_with_client( url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, allow_empty_value: Optional[List[str]] = None, + allowed_fields: Optional[List[str]] = None, ) -> httpx.Request: query_params = {} @@ -188,7 +193,9 @@ def _build_request_with_client( security = security() if security is not None: - security_headers, security_query_params = utils.get_security(security) + security_headers, security_query_params = utils.get_security( + security, allowed_fields + ) headers = {**headers, **security_headers} query_params = {**query_params, **security_query_params} @@ -225,7 +232,7 @@ def _build_request_with_client( data=serialized_request_body.data, files=serialized_request_body.files, headers=headers, - timeout=timeout, + timeout=timeout if timeout is not None else httpx.USE_CLIENT_DEFAULT, ) def do_request( @@ -245,6 +252,8 @@ def do(): http_res = None try: req = hooks.before_request(BeforeRequestContext(hook_ctx), request) + if "timeout" in request.extensions and "timeout" not in req.extensions: + req.extensions["timeout"] = request.extensions["timeout"] logger.debug( "Request:\nMethod: %s\nURL: %s\nHeaders: %s\nBody: %s", req.method, @@ -320,6 +329,8 @@ async def do(): hooks.before_request, BeforeRequestContext(hook_ctx), request ) + if "timeout" in request.extensions and "timeout" not in req.extensions: + req.extensions["timeout"] = request.extensions["timeout"] logger.debug( "Request:\nMethod: %s\nURL: %s\nHeaders: %s\nBody: %s", req.method, diff --git a/src/clerk_backend_api/billing.py b/src/clerk_backend_api/billing.py index f488b1a0..ce3d6696 100644 --- a/src/clerk_backend_api/billing.py +++ b/src/clerk_backend_api/billing.py @@ -3,7 +3,7 @@ from .basesdk import BaseSDK from clerk_backend_api import models, utils from clerk_backend_api._hooks import HookContext -from clerk_backend_api.types import OptionalNullable, UNSET +from clerk_backend_api.types import Nullable, OptionalNullable, UNSET from clerk_backend_api.utils.unmarshal_json_response import unmarshal_json_response from datetime import datetime from typing import Any, Mapping, Optional @@ -458,9 +458,9 @@ def create_price( self, *, plan_id: str, - amount: int, + amount: Nullable[int], currency: Optional[str] = "USD", - annual_monthly_amount: Optional[int] = None, + annual_monthly_amount: OptionalNullable[int] = UNSET, description: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -473,9 +473,9 @@ def create_price( to specific customers while maintaining the same plan structure. :param plan_id: The ID of the plan this price belongs to. - :param amount: The amount in cents for the price. Must be at least $1 (100 cents). + :param amount: The monthly amount in cents. Must be at least $1 (100 cents) if not null. :param currency: The currency code (e.g., \"USD\"). Defaults to USD. - :param annual_monthly_amount: The monthly amount in cents when billed annually. Optional. + :param annual_monthly_amount: The monthly amount in cents when billed annually. Must be at least $1 (100 cents) if not null. :param description: An optional description for this custom price. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -569,9 +569,9 @@ async def create_price_async( self, *, plan_id: str, - amount: int, + amount: Nullable[int], currency: Optional[str] = "USD", - annual_monthly_amount: Optional[int] = None, + annual_monthly_amount: OptionalNullable[int] = UNSET, description: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -584,9 +584,9 @@ async def create_price_async( to specific customers while maintaining the same plan structure. :param plan_id: The ID of the plan this price belongs to. - :param amount: The amount in cents for the price. Must be at least $1 (100 cents). + :param amount: The monthly amount in cents. Must be at least $1 (100 cents) if not null. :param currency: The currency code (e.g., \"USD\"). Defaults to USD. - :param annual_monthly_amount: The monthly amount in cents when billed annually. Optional. + :param annual_monthly_amount: The monthly amount in cents when billed annually. Must be at least $1 (100 cents) if not null. :param description: An optional description for this custom price. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method diff --git a/src/clerk_backend_api/emailaddresses.py b/src/clerk_backend_api/emailaddresses.py index 3eb1181c..92fa3e2e 100644 --- a/src/clerk_backend_api/emailaddresses.py +++ b/src/clerk_backend_api/emailaddresses.py @@ -476,7 +476,7 @@ def delete( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "403", "404", "4XX", "5XX"], + error_status_codes=["400", "401", "403", "404", "409", "4XX", "5XX"], retry_config=retry_config, ) @@ -484,7 +484,7 @@ def delete( if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.DeletedObject, http_res) if utils.match_response( - http_res, ["400", "401", "403", "404"], "application/json" + http_res, ["400", "401", "403", "404", "409"], "application/json" ): response_data = unmarshal_json_response(models.ClerkErrorsData, http_res) raise models.ClerkErrors(response_data, http_res) @@ -568,7 +568,7 @@ async def delete_async( security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "403", "404", "4XX", "5XX"], + error_status_codes=["400", "401", "403", "404", "409", "4XX", "5XX"], retry_config=retry_config, ) @@ -576,7 +576,7 @@ async def delete_async( if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.DeletedObject, http_res) if utils.match_response( - http_res, ["400", "401", "403", "404"], "application/json" + http_res, ["400", "401", "403", "404", "409"], "application/json" ): response_data = unmarshal_json_response(models.ClerkErrorsData, http_res) raise models.ClerkErrors(response_data, http_res) diff --git a/src/clerk_backend_api/enterpriseconnections_sdk.py b/src/clerk_backend_api/enterpriseconnections_sdk.py index 4ac6a6d5..12078507 100644 --- a/src/clerk_backend_api/enterpriseconnections_sdk.py +++ b/src/clerk_backend_api/enterpriseconnections_sdk.py @@ -616,6 +616,7 @@ def update( active: OptionalNullable[bool] = UNSET, sync_user_attributes: OptionalNullable[bool] = UNSET, disable_additional_identifications: OptionalNullable[bool] = UNSET, + allow_organization_account_linking: OptionalNullable[bool] = UNSET, organization_id: OptionalNullable[str] = UNSET, saml: OptionalNullable[ Union[ @@ -629,6 +630,12 @@ def update( models.UpdateEnterpriseConnectionOidcTypedDict, ] ] = UNSET, + custom_attributes: OptionalNullable[ + Union[ + List[models.UpdateEnterpriseConnectionCustomAttributes], + List[models.UpdateEnterpriseConnectionCustomAttributesTypedDict], + ] + ] = UNSET, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -646,10 +653,12 @@ def update( :param active: Whether the enterprise connection is active. When set to true (enabling), any existing verified organization domains for the same domain(s) will be removed so the connection can be enabled. :param sync_user_attributes: Whether to sync user attributes on sign-in :param disable_additional_identifications: Whether to disable additional identifications + :param allow_organization_account_linking: Whether this connection supports account linking via organization membership :param organization_id: Organization ID to link to this enterprise connection. Only linking is supported; sending this field sets or changes the linked organization. There is no way to unlink an organization once linked. :param saml: SAML connection-specific properties. Only applied when the enterprise connection uses SAML. Use this to update IdP configuration, attribute mapping, and other SAML-specific settings. - :param oidc: OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC. + :param oidc: OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. oidc_custom, oidc_github_enterprise, or oidc_gitlab). + :param custom_attributes: Custom attributes to map from the IdP to the user's profile via SSO or SCIM provisioning. Requires the custom attributes feature to be enabled for the instance. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -673,6 +682,7 @@ def update( active=active, sync_user_attributes=sync_user_attributes, disable_additional_identifications=disable_additional_identifications, + allow_organization_account_linking=allow_organization_account_linking, organization_id=organization_id, saml=utils.get_pydantic_model( saml, OptionalNullable[models.UpdateEnterpriseConnectionSaml] @@ -680,6 +690,12 @@ def update( oidc=utils.get_pydantic_model( oidc, OptionalNullable[models.UpdateEnterpriseConnectionOidc] ), + custom_attributes=utils.get_pydantic_model( + custom_attributes, + OptionalNullable[ + List[models.UpdateEnterpriseConnectionCustomAttributes] + ], + ), ), ) @@ -758,6 +774,7 @@ async def update_async( active: OptionalNullable[bool] = UNSET, sync_user_attributes: OptionalNullable[bool] = UNSET, disable_additional_identifications: OptionalNullable[bool] = UNSET, + allow_organization_account_linking: OptionalNullable[bool] = UNSET, organization_id: OptionalNullable[str] = UNSET, saml: OptionalNullable[ Union[ @@ -771,6 +788,12 @@ async def update_async( models.UpdateEnterpriseConnectionOidcTypedDict, ] ] = UNSET, + custom_attributes: OptionalNullable[ + Union[ + List[models.UpdateEnterpriseConnectionCustomAttributes], + List[models.UpdateEnterpriseConnectionCustomAttributesTypedDict], + ] + ] = UNSET, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -788,10 +811,12 @@ async def update_async( :param active: Whether the enterprise connection is active. When set to true (enabling), any existing verified organization domains for the same domain(s) will be removed so the connection can be enabled. :param sync_user_attributes: Whether to sync user attributes on sign-in :param disable_additional_identifications: Whether to disable additional identifications + :param allow_organization_account_linking: Whether this connection supports account linking via organization membership :param organization_id: Organization ID to link to this enterprise connection. Only linking is supported; sending this field sets or changes the linked organization. There is no way to unlink an organization once linked. :param saml: SAML connection-specific properties. Only applied when the enterprise connection uses SAML. Use this to update IdP configuration, attribute mapping, and other SAML-specific settings. - :param oidc: OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC. + :param oidc: OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. oidc_custom, oidc_github_enterprise, or oidc_gitlab). + :param custom_attributes: Custom attributes to map from the IdP to the user's profile via SSO or SCIM provisioning. Requires the custom attributes feature to be enabled for the instance. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -815,6 +840,7 @@ async def update_async( active=active, sync_user_attributes=sync_user_attributes, disable_additional_identifications=disable_additional_identifications, + allow_organization_account_linking=allow_organization_account_linking, organization_id=organization_id, saml=utils.get_pydantic_model( saml, OptionalNullable[models.UpdateEnterpriseConnectionSaml] @@ -822,6 +848,12 @@ async def update_async( oidc=utils.get_pydantic_model( oidc, OptionalNullable[models.UpdateEnterpriseConnectionOidc] ), + custom_attributes=utils.get_pydantic_model( + custom_attributes, + OptionalNullable[ + List[models.UpdateEnterpriseConnectionCustomAttributes] + ], + ), ), ) diff --git a/src/clerk_backend_api/models/__init__.py b/src/clerk_backend_api/models/__init__.py index 5e14d64e..737e9f03 100644 --- a/src/clerk_backend_api/models/__init__.py +++ b/src/clerk_backend_api/models/__init__.py @@ -66,6 +66,10 @@ ) from .billingpriceresponse import ( BillingPriceResponse, + BillingPriceResponseAnnualMonthlyFee, + BillingPriceResponseAnnualMonthlyFeeTypedDict, + BillingPriceResponseFee, + BillingPriceResponseFeeTypedDict, BillingPriceResponseObject, BillingPriceResponseTypedDict, ) @@ -149,6 +153,8 @@ CommercePlan, CommercePlanObject, CommercePlanTypedDict, + Fee, + FeeTypedDict, ) from .commerceplanunitprice import ( CommercePlanUnitPrice, @@ -193,6 +199,8 @@ CommerceSubscriptionItemAnnualMonthlyFeeTypedDict, CommerceSubscriptionItemCredits, CommerceSubscriptionItemCreditsTypedDict, + CommerceSubscriptionItemFee, + CommerceSubscriptionItemFeeTypedDict, CommerceSubscriptionItemObject, CommerceSubscriptionItemPayer, CommerceSubscriptionItemPayerTypedDict, @@ -282,6 +290,8 @@ from .createenterpriseconnectionop import ( CreateEnterpriseConnectionAttributeMapping, CreateEnterpriseConnectionAttributeMappingTypedDict, + CreateEnterpriseConnectionCustomAttributes, + CreateEnterpriseConnectionCustomAttributesTypedDict, CreateEnterpriseConnectionRequestBody, CreateEnterpriseConnectionRequestBodyTypedDict, CreateEnterpriseConnectionSaml, @@ -1327,6 +1337,12 @@ from .samlconnections import SAMLConnections, SAMLConnectionsTypedDict from .schemas_commerceplan import ( SchemasCommercePlan, + SchemasCommercePlanAnnualFee, + SchemasCommercePlanAnnualFeeTypedDict, + SchemasCommercePlanAnnualMonthlyFee, + SchemasCommercePlanAnnualMonthlyFeeTypedDict, + SchemasCommercePlanFee, + SchemasCommercePlanFeeTypedDict, SchemasCommercePlanObject, SchemasCommercePlanTypedDict, ) @@ -1345,8 +1361,14 @@ SchemasCommerceSubscriptionItem, SchemasCommerceSubscriptionItemAmount, SchemasCommerceSubscriptionItemAmountTypedDict, + SchemasCommerceSubscriptionItemAnnualFee, + SchemasCommerceSubscriptionItemAnnualFeeTypedDict, + SchemasCommerceSubscriptionItemAnnualMonthlyFee, + SchemasCommerceSubscriptionItemAnnualMonthlyFeeTypedDict, SchemasCommerceSubscriptionItemCreditAmount, SchemasCommerceSubscriptionItemCreditAmountTypedDict, + SchemasCommerceSubscriptionItemFee, + SchemasCommerceSubscriptionItemFeeTypedDict, SchemasCommerceSubscriptionItemNextInvoiceAmount, SchemasCommerceSubscriptionItemNextInvoiceAmountTypedDict, SchemasCommerceSubscriptionItemNextPayment, @@ -1365,6 +1387,8 @@ SchemasCommerceSubscriptionItemTypedDict, ) from .schemas_enterpriseconnection import ( + CustomAttributes, + CustomAttributesTypedDict, OauthConfig, OauthConfigTypedDict, SchemasEnterpriseConnection, @@ -1492,6 +1516,8 @@ from .updateenterpriseconnectionop import ( UpdateEnterpriseConnectionAttributeMapping, UpdateEnterpriseConnectionAttributeMappingTypedDict, + UpdateEnterpriseConnectionCustomAttributes, + UpdateEnterpriseConnectionCustomAttributesTypedDict, UpdateEnterpriseConnectionOidc, UpdateEnterpriseConnectionOidcTypedDict, UpdateEnterpriseConnectionRequest, @@ -1819,6 +1845,10 @@ "BillingPaymentAttemptTotalsTypedDict", "BillingPaymentAttemptTypedDict", "BillingPriceResponse", + "BillingPriceResponseAnnualMonthlyFee", + "BillingPriceResponseAnnualMonthlyFeeTypedDict", + "BillingPriceResponseFee", + "BillingPriceResponseFeeTypedDict", "BillingPriceResponseObject", "BillingPriceResponseTypedDict", "BillingStatement", @@ -1905,6 +1935,8 @@ "CommerceSubscriptionItemAnnualMonthlyFeeTypedDict", "CommerceSubscriptionItemCredits", "CommerceSubscriptionItemCreditsTypedDict", + "CommerceSubscriptionItemFee", + "CommerceSubscriptionItemFeeTypedDict", "CommerceSubscriptionItemObject", "CommerceSubscriptionItemPayer", "CommerceSubscriptionItemPayerTypedDict", @@ -1956,6 +1988,8 @@ "CreateEmailAddressRequestBodyTypedDict", "CreateEnterpriseConnectionAttributeMapping", "CreateEnterpriseConnectionAttributeMappingTypedDict", + "CreateEnterpriseConnectionCustomAttributes", + "CreateEnterpriseConnectionCustomAttributesTypedDict", "CreateEnterpriseConnectionRequestBody", "CreateEnterpriseConnectionRequestBodyTypedDict", "CreateEnterpriseConnectionSaml", @@ -2049,6 +2083,8 @@ "CreditTypedDict", "Credits", "CreditsTypedDict", + "CustomAttributes", + "CustomAttributesTypedDict", "Data", "DataTypedDict", "DefaultRole", @@ -2174,6 +2210,8 @@ "FeatureResponse", "FeatureResponseObject", "FeatureResponseTypedDict", + "Fee", + "FeeTypedDict", "File", "FileTypedDict", "Format", @@ -2689,13 +2727,25 @@ "SamlConnectionTypedDict", "SamlTypedDict", "SchemasCommercePlan", + "SchemasCommercePlanAnnualFee", + "SchemasCommercePlanAnnualFeeTypedDict", + "SchemasCommercePlanAnnualMonthlyFee", + "SchemasCommercePlanAnnualMonthlyFeeTypedDict", + "SchemasCommercePlanFee", + "SchemasCommercePlanFeeTypedDict", "SchemasCommercePlanObject", "SchemasCommercePlanTypedDict", "SchemasCommerceSubscriptionItem", "SchemasCommerceSubscriptionItemAmount", "SchemasCommerceSubscriptionItemAmountTypedDict", + "SchemasCommerceSubscriptionItemAnnualFee", + "SchemasCommerceSubscriptionItemAnnualFeeTypedDict", + "SchemasCommerceSubscriptionItemAnnualMonthlyFee", + "SchemasCommerceSubscriptionItemAnnualMonthlyFeeTypedDict", "SchemasCommerceSubscriptionItemCreditAmount", "SchemasCommerceSubscriptionItemCreditAmountTypedDict", + "SchemasCommerceSubscriptionItemFee", + "SchemasCommerceSubscriptionItemFeeTypedDict", "SchemasCommerceSubscriptionItemNextInvoiceAmount", "SchemasCommerceSubscriptionItemNextInvoiceAmountTypedDict", "SchemasCommerceSubscriptionItemNextPayment", @@ -2822,6 +2872,8 @@ "UpdateEmailAddressRequestTypedDict", "UpdateEnterpriseConnectionAttributeMapping", "UpdateEnterpriseConnectionAttributeMappingTypedDict", + "UpdateEnterpriseConnectionCustomAttributes", + "UpdateEnterpriseConnectionCustomAttributesTypedDict", "UpdateEnterpriseConnectionOidc", "UpdateEnterpriseConnectionOidcTypedDict", "UpdateEnterpriseConnectionRequest", @@ -3150,6 +3202,10 @@ "SubscriptionItem": ".billingpaymentattempt", "SubscriptionItemTypedDict": ".billingpaymentattempt", "BillingPriceResponse": ".billingpriceresponse", + "BillingPriceResponseAnnualMonthlyFee": ".billingpriceresponse", + "BillingPriceResponseAnnualMonthlyFeeTypedDict": ".billingpriceresponse", + "BillingPriceResponseFee": ".billingpriceresponse", + "BillingPriceResponseFeeTypedDict": ".billingpriceresponse", "BillingPriceResponseObject": ".billingpriceresponse", "BillingPriceResponseTypedDict": ".billingpriceresponse", "BillingStatement": ".billingstatement", @@ -3211,6 +3267,8 @@ "CommercePlan": ".commerceplan", "CommercePlanObject": ".commerceplan", "CommercePlanTypedDict": ".commerceplan", + "Fee": ".commerceplan", + "FeeTypedDict": ".commerceplan", "CommercePlanUnitPrice": ".commerceplanunitprice", "CommercePlanUnitPriceTypedDict": ".commerceplanunitprice", "CommercePlanUnitPriceTier": ".commerceplanunitpricetier", @@ -3241,6 +3299,8 @@ "CommerceSubscriptionItemAnnualMonthlyFeeTypedDict": ".commercesubscriptionitem", "CommerceSubscriptionItemCredits": ".commercesubscriptionitem", "CommerceSubscriptionItemCreditsTypedDict": ".commercesubscriptionitem", + "CommerceSubscriptionItemFee": ".commercesubscriptionitem", + "CommerceSubscriptionItemFeeTypedDict": ".commercesubscriptionitem", "CommerceSubscriptionItemObject": ".commercesubscriptionitem", "CommerceSubscriptionItemPayer": ".commercesubscriptionitem", "CommerceSubscriptionItemPayerTypedDict": ".commercesubscriptionitem", @@ -3308,6 +3368,8 @@ "CreateEmailAddressRequestBodyTypedDict": ".createemailaddressop", "CreateEnterpriseConnectionAttributeMapping": ".createenterpriseconnectionop", "CreateEnterpriseConnectionAttributeMappingTypedDict": ".createenterpriseconnectionop", + "CreateEnterpriseConnectionCustomAttributes": ".createenterpriseconnectionop", + "CreateEnterpriseConnectionCustomAttributesTypedDict": ".createenterpriseconnectionop", "CreateEnterpriseConnectionRequestBody": ".createenterpriseconnectionop", "CreateEnterpriseConnectionRequestBodyTypedDict": ".createenterpriseconnectionop", "CreateEnterpriseConnectionSaml": ".createenterpriseconnectionop", @@ -4097,6 +4159,12 @@ "SAMLConnections": ".samlconnections", "SAMLConnectionsTypedDict": ".samlconnections", "SchemasCommercePlan": ".schemas_commerceplan", + "SchemasCommercePlanAnnualFee": ".schemas_commerceplan", + "SchemasCommercePlanAnnualFeeTypedDict": ".schemas_commerceplan", + "SchemasCommercePlanAnnualMonthlyFee": ".schemas_commerceplan", + "SchemasCommercePlanAnnualMonthlyFeeTypedDict": ".schemas_commerceplan", + "SchemasCommercePlanFee": ".schemas_commerceplan", + "SchemasCommercePlanFeeTypedDict": ".schemas_commerceplan", "SchemasCommercePlanObject": ".schemas_commerceplan", "SchemasCommercePlanTypedDict": ".schemas_commerceplan", "Credit": ".schemas_commercesubscriptionitem", @@ -4113,8 +4181,14 @@ "SchemasCommerceSubscriptionItem": ".schemas_commercesubscriptionitem", "SchemasCommerceSubscriptionItemAmount": ".schemas_commercesubscriptionitem", "SchemasCommerceSubscriptionItemAmountTypedDict": ".schemas_commercesubscriptionitem", + "SchemasCommerceSubscriptionItemAnnualFee": ".schemas_commercesubscriptionitem", + "SchemasCommerceSubscriptionItemAnnualFeeTypedDict": ".schemas_commercesubscriptionitem", + "SchemasCommerceSubscriptionItemAnnualMonthlyFee": ".schemas_commercesubscriptionitem", + "SchemasCommerceSubscriptionItemAnnualMonthlyFeeTypedDict": ".schemas_commercesubscriptionitem", "SchemasCommerceSubscriptionItemCreditAmount": ".schemas_commercesubscriptionitem", "SchemasCommerceSubscriptionItemCreditAmountTypedDict": ".schemas_commercesubscriptionitem", + "SchemasCommerceSubscriptionItemFee": ".schemas_commercesubscriptionitem", + "SchemasCommerceSubscriptionItemFeeTypedDict": ".schemas_commercesubscriptionitem", "SchemasCommerceSubscriptionItemNextInvoiceAmount": ".schemas_commercesubscriptionitem", "SchemasCommerceSubscriptionItemNextInvoiceAmountTypedDict": ".schemas_commercesubscriptionitem", "SchemasCommerceSubscriptionItemNextPayment": ".schemas_commercesubscriptionitem", @@ -4131,6 +4205,8 @@ "SchemasCommerceSubscriptionItemPlanTypedDict": ".schemas_commercesubscriptionitem", "SchemasCommerceSubscriptionItemStatus": ".schemas_commercesubscriptionitem", "SchemasCommerceSubscriptionItemTypedDict": ".schemas_commercesubscriptionitem", + "CustomAttributes": ".schemas_enterpriseconnection", + "CustomAttributesTypedDict": ".schemas_enterpriseconnection", "OauthConfig": ".schemas_enterpriseconnection", "OauthConfigTypedDict": ".schemas_enterpriseconnection", "SchemasEnterpriseConnection": ".schemas_enterpriseconnection", @@ -4240,6 +4316,8 @@ "UpdateEmailAddressRequestTypedDict": ".updateemailaddressop", "UpdateEnterpriseConnectionAttributeMapping": ".updateenterpriseconnectionop", "UpdateEnterpriseConnectionAttributeMappingTypedDict": ".updateenterpriseconnectionop", + "UpdateEnterpriseConnectionCustomAttributes": ".updateenterpriseconnectionop", + "UpdateEnterpriseConnectionCustomAttributesTypedDict": ".updateenterpriseconnectionop", "UpdateEnterpriseConnectionOidc": ".updateenterpriseconnectionop", "UpdateEnterpriseConnectionOidcTypedDict": ".updateenterpriseconnectionop", "UpdateEnterpriseConnectionRequest": ".updateenterpriseconnectionop", diff --git a/src/clerk_backend_api/models/agenttask.py b/src/clerk_backend_api/models/agenttask.py index 74d2a705..7b4481c7 100644 --- a/src/clerk_backend_api/models/agenttask.py +++ b/src/clerk_backend_api/models/agenttask.py @@ -3,9 +3,10 @@ from __future__ import annotations from clerk_backend_api.types import BaseModel, UNSET_SENTINEL from enum import Enum +import pydantic from pydantic import model_serializer from typing import Optional -from typing_extensions import NotRequired, TypedDict +from typing_extensions import Annotated, NotRequired, TypedDict class AgentTaskObject(str, Enum): @@ -20,9 +21,13 @@ class AgentTaskTypedDict(TypedDict): r"""A stable identifier for the agent, unique per agent_name within an instance. """ - task_id: str + agent_task_id: str r"""A unique identifier for this agent task. + """ + task_id: str + r"""A unique identifier for this agent task. Deprecated: use agent_task_id instead. + """ url: NotRequired[str] r"""The URL that, when visited, creates a session for the user. Only present in the response to a create request. @@ -40,11 +45,21 @@ class AgentTask(BaseModel): """ - task_id: str + agent_task_id: str r"""A unique identifier for this agent task. """ + task_id: Annotated[ + str, + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + ), + ] + r"""A unique identifier for this agent task. Deprecated: use agent_task_id instead. + + """ + url: Optional[str] = None r"""The URL that, when visited, creates a session for the user. Only present in the response to a create request. diff --git a/src/clerk_backend_api/models/billingpriceresponse.py b/src/clerk_backend_api/models/billingpriceresponse.py index 6afea9f4..864a920b 100644 --- a/src/clerk_backend_api/models/billingpriceresponse.py +++ b/src/clerk_backend_api/models/billingpriceresponse.py @@ -1,7 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from .commercemoneyresponse import CommerceMoneyResponse, CommerceMoneyResponseTypedDict from clerk_backend_api.types import ( BaseModel, Nullable, @@ -20,6 +19,56 @@ class BillingPriceResponseObject(str, Enum): COMMERCE_PRICE = "commerce_price" +class BillingPriceResponseFeeTypedDict(TypedDict): + amount: int + r"""The amount in cents.""" + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + currency: str + r"""The currency code (e.g., \"USD\").""" + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + +class BillingPriceResponseFee(BaseModel): + amount: int + r"""The amount in cents.""" + + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + + currency: str + r"""The currency code (e.g., \"USD\").""" + + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + +class BillingPriceResponseAnnualMonthlyFeeTypedDict(TypedDict): + amount: int + r"""The amount in cents.""" + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + currency: str + r"""The currency code (e.g., \"USD\").""" + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + +class BillingPriceResponseAnnualMonthlyFee(BaseModel): + amount: int + r"""The amount in cents.""" + + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + + currency: str + r"""The currency code (e.g., \"USD\").""" + + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + class BillingPriceResponseTypedDict(TypedDict): object: BillingPriceResponseObject r"""String representing the object's type. Objects of the same type share the same value.""" @@ -37,8 +86,8 @@ class BillingPriceResponseTypedDict(TypedDict): r"""The amount in cents for the price.""" annual_monthly_amount: int r"""The monthly amount in cents when billed annually.""" - fee: CommerceMoneyResponseTypedDict - annual_monthly_fee: CommerceMoneyResponseTypedDict + fee: Nullable[BillingPriceResponseFeeTypedDict] + annual_monthly_fee: Nullable[BillingPriceResponseAnnualMonthlyFeeTypedDict] is_default: bool r"""Whether this price is the default price for its plan.""" created_at: int @@ -72,9 +121,9 @@ class BillingPriceResponse(BaseModel): annual_monthly_amount: int r"""The monthly amount in cents when billed annually.""" - fee: CommerceMoneyResponse + fee: Nullable[BillingPriceResponseFee] - annual_monthly_fee: CommerceMoneyResponse + annual_monthly_fee: Nullable[BillingPriceResponseAnnualMonthlyFee] is_default: bool r"""Whether this price is the default price for its plan.""" @@ -88,7 +137,7 @@ class BillingPriceResponse(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["description"]) - nullable_fields = set(["description"]) + nullable_fields = set(["fee", "annual_monthly_fee", "description"]) serialized = handler(self) m = {} diff --git a/src/clerk_backend_api/models/commerceplan.py b/src/clerk_backend_api/models/commerceplan.py index 04437f23..ce7c0632 100644 --- a/src/clerk_backend_api/models/commerceplan.py +++ b/src/clerk_backend_api/models/commerceplan.py @@ -1,7 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from .commercemoneyresponse import CommerceMoneyResponse, CommerceMoneyResponseTypedDict from .commerceplanunitprice import CommercePlanUnitPrice, CommercePlanUnitPriceTypedDict from .featureresponse import FeatureResponse, FeatureResponseTypedDict from clerk_backend_api.types import BaseModel, Nullable, UNSET_SENTINEL @@ -18,6 +17,31 @@ class CommercePlanObject(str, Enum): COMMERCE_PLAN = "commerce_plan" +class FeeTypedDict(TypedDict): + amount: int + r"""The amount in cents.""" + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + currency: str + r"""The currency code (e.g., \"USD\").""" + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + +class Fee(BaseModel): + amount: int + r"""The amount in cents.""" + + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + + currency: str + r"""The currency code (e.g., \"USD\").""" + + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + class AnnualMonthlyFeeTypedDict(TypedDict): amount: int r"""The amount in cents.""" @@ -75,7 +99,7 @@ class CommercePlanTypedDict(TypedDict): r"""Unique identifier for the plan.""" name: str r"""The name of the plan.""" - fee: CommerceMoneyResponseTypedDict + fee: Nullable[FeeTypedDict] annual_monthly_fee: Nullable[AnnualMonthlyFeeTypedDict] annual_fee: Nullable[AnnualFeeTypedDict] description: Nullable[str] @@ -116,7 +140,7 @@ class CommercePlan(BaseModel): name: str r"""The name of the plan.""" - fee: CommerceMoneyResponse + fee: Nullable[Fee] annual_monthly_fee: Nullable[AnnualMonthlyFee] @@ -171,6 +195,7 @@ def serialize_model(self, handler): optional_fields = set(["features", "unit_prices"]) nullable_fields = set( [ + "fee", "annual_monthly_fee", "annual_fee", "description", diff --git a/src/clerk_backend_api/models/commercesubscriptionitem.py b/src/clerk_backend_api/models/commercesubscriptionitem.py index 6d41c6ee..3efc8630 100644 --- a/src/clerk_backend_api/models/commercesubscriptionitem.py +++ b/src/clerk_backend_api/models/commercesubscriptionitem.py @@ -114,6 +114,31 @@ class CommerceSubscriptionItemPlanObject(str, Enum): COMMERCE_PLAN = "commerce_plan" +class CommerceSubscriptionItemFeeTypedDict(TypedDict): + amount: int + r"""The amount in cents.""" + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + currency: str + r"""The currency code (e.g., \"USD\").""" + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + +class CommerceSubscriptionItemFee(BaseModel): + amount: int + r"""The amount in cents.""" + + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + + currency: str + r"""The currency code (e.g., \"USD\").""" + + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + class CommerceSubscriptionItemAnnualMonthlyFeeTypedDict(TypedDict): amount: int r"""The amount in cents.""" @@ -173,7 +198,7 @@ class PlanTypedDict(TypedDict): r"""Unique identifier for the plan.""" name: str r"""The name of the plan.""" - fee: CommerceMoneyResponseTypedDict + fee: Nullable[CommerceSubscriptionItemFeeTypedDict] annual_monthly_fee: Nullable[CommerceSubscriptionItemAnnualMonthlyFeeTypedDict] annual_fee: Nullable[CommerceSubscriptionItemAnnualFeeTypedDict] description: Nullable[str] @@ -216,7 +241,7 @@ class Plan(BaseModel): name: str r"""The name of the plan.""" - fee: CommerceMoneyResponse + fee: Nullable[CommerceSubscriptionItemFee] annual_monthly_fee: Nullable[CommerceSubscriptionItemAnnualMonthlyFee] @@ -271,6 +296,7 @@ def serialize_model(self, handler): optional_fields = set(["features", "unit_prices"]) nullable_fields = set( [ + "fee", "annual_monthly_fee", "annual_fee", "description", diff --git a/src/clerk_backend_api/models/createbillingpricerequest.py b/src/clerk_backend_api/models/createbillingpricerequest.py index 245555b4..7e2c7001 100644 --- a/src/clerk_backend_api/models/createbillingpricerequest.py +++ b/src/clerk_backend_api/models/createbillingpricerequest.py @@ -1,7 +1,13 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from clerk_backend_api.types import BaseModel, UNSET_SENTINEL +from clerk_backend_api.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -10,12 +16,12 @@ class CreateBillingPriceRequestTypedDict(TypedDict): plan_id: str r"""The ID of the plan this price belongs to.""" - amount: int - r"""The amount in cents for the price. Must be at least $1 (100 cents).""" + amount: Nullable[int] + r"""The monthly amount in cents. Must be at least $1 (100 cents) if not null.""" currency: NotRequired[str] r"""The currency code (e.g., \"USD\"). Defaults to USD.""" - annual_monthly_amount: NotRequired[int] - r"""The monthly amount in cents when billed annually. Optional.""" + annual_monthly_amount: NotRequired[Nullable[int]] + r"""The monthly amount in cents when billed annually. Must be at least $1 (100 cents) if not null.""" description: NotRequired[str] r"""An optional description for this custom price.""" @@ -24,14 +30,14 @@ class CreateBillingPriceRequest(BaseModel): plan_id: str r"""The ID of the plan this price belongs to.""" - amount: int - r"""The amount in cents for the price. Must be at least $1 (100 cents).""" + amount: Nullable[int] + r"""The monthly amount in cents. Must be at least $1 (100 cents) if not null.""" currency: Optional[str] = "USD" r"""The currency code (e.g., \"USD\"). Defaults to USD.""" - annual_monthly_amount: Optional[int] = None - r"""The monthly amount in cents when billed annually. Optional.""" + annual_monthly_amount: OptionalNullable[int] = UNSET + r"""The monthly amount in cents when billed annually. Must be at least $1 (100 cents) if not null.""" description: Optional[str] = None r"""An optional description for this custom price.""" @@ -39,15 +45,24 @@ class CreateBillingPriceRequest(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["currency", "annual_monthly_amount", "description"]) + nullable_fields = set(["amount", "annual_monthly_amount"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n val = serialized.get(k, serialized.get(n)) + is_nullable_and_explicitly_set = ( + k in nullable_fields + and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member + ) if val != UNSET_SENTINEL: - if val is not None or k not in optional_fields: + if ( + val is not None + or k not in optional_fields + or is_nullable_and_explicitly_set + ): m[k] = val return m diff --git a/src/clerk_backend_api/models/createenterpriseconnectionop.py b/src/clerk_backend_api/models/createenterpriseconnectionop.py index cc5ea6a0..9ba664c3 100644 --- a/src/clerk_backend_api/models/createenterpriseconnectionop.py +++ b/src/clerk_backend_api/models/createenterpriseconnectionop.py @@ -10,18 +10,20 @@ ) from enum import Enum from pydantic import model_serializer -from typing import List +from typing import List, Optional from typing_extensions import NotRequired, TypedDict class Provider(str, Enum): - r"""The identity provider (e.g. saml_custom, oidc_custom)""" + r"""The identity provider (e.g. saml_custom, oidc_custom, oidc_github_enterprise, oidc_gitlab)""" SAML_CUSTOM = "saml_custom" SAML_OKTA = "saml_okta" SAML_GOOGLE = "saml_google" SAML_MICROSOFT = "saml_microsoft" OIDC_CUSTOM = "oidc_custom" + OIDC_GITHUB_ENTERPRISE = "oidc_github_enterprise" + OIDC_GITLAB = "oidc_gitlab" class CreateEnterpriseConnectionAttributeMappingTypedDict(TypedDict): @@ -176,7 +178,7 @@ def serialize_model(self, handler): class OidcTypedDict(TypedDict): - r"""OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. provider is oidc_custom).""" + r"""OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. provider is oidc_custom, oidc_github_enterprise, or oidc_gitlab).""" client_id: NotRequired[Nullable[str]] r"""OIDC client ID""" @@ -195,7 +197,7 @@ class OidcTypedDict(TypedDict): class Oidc(BaseModel): - r"""OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. provider is oidc_custom).""" + r"""OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. provider is oidc_custom, oidc_github_enterprise, or oidc_gitlab).""" client_id: OptionalNullable[str] = UNSET r"""OIDC client ID""" @@ -264,15 +266,58 @@ def serialize_model(self, handler): return m +class CreateEnterpriseConnectionCustomAttributesTypedDict(TypedDict): + name: str + r"""Display name for the custom attribute""" + key: str + r"""Key used to store the attribute in the user's metadata""" + sso_path: NotRequired[str] + r"""Path to extract the attribute value from SSO claims""" + scim_path: NotRequired[str] + r"""GJSON path to extract the attribute value from SCIM user resources""" + + +class CreateEnterpriseConnectionCustomAttributes(BaseModel): + name: str + r"""Display name for the custom attribute""" + + key: str + r"""Key used to store the attribute in the user's metadata""" + + sso_path: Optional[str] = None + r"""Path to extract the attribute value from SSO claims""" + + scim_path: Optional[str] = None + r"""GJSON path to extract the attribute value from SCIM user resources""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["sso_path", "scim_path"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + class CreateEnterpriseConnectionRequestBodyTypedDict(TypedDict): name: str r"""The display name of the connection""" provider: Provider - r"""The identity provider (e.g. saml_custom, oidc_custom)""" + r"""The identity provider (e.g. saml_custom, oidc_custom, oidc_github_enterprise, oidc_gitlab)""" domains: List[str] r"""Domains associated with the enterprise connection (required; at least one). Values are normalized to lowercase. Each domain must be a valid fully qualified domain name.""" organization_id: NotRequired[Nullable[str]] r"""Organization ID when the connection is linked to an organization""" + allow_organization_account_linking: NotRequired[Nullable[bool]] + r"""Whether this connection supports account linking via organization membership""" active: NotRequired[Nullable[bool]] r"""Whether the enterprise connection is active. When true, IdP metadata must be provided via the `saml` object.""" saml: NotRequired[Nullable[CreateEnterpriseConnectionSamlTypedDict]] @@ -280,7 +325,11 @@ class CreateEnterpriseConnectionRequestBodyTypedDict(TypedDict): Use this to set IdP configuration, attribute mapping, and other SAML-specific settings at creation time. """ oidc: NotRequired[Nullable[OidcTypedDict]] - r"""OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. provider is oidc_custom).""" + r"""OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. provider is oidc_custom, oidc_github_enterprise, or oidc_gitlab).""" + custom_attributes: NotRequired[ + List[CreateEnterpriseConnectionCustomAttributesTypedDict] + ] + r"""Custom attributes to map from the IdP to the user's profile via SSO or SCIM provisioning. Requires the custom attributes feature to be enabled for the instance.""" class CreateEnterpriseConnectionRequestBody(BaseModel): @@ -288,7 +337,7 @@ class CreateEnterpriseConnectionRequestBody(BaseModel): r"""The display name of the connection""" provider: Provider - r"""The identity provider (e.g. saml_custom, oidc_custom)""" + r"""The identity provider (e.g. saml_custom, oidc_custom, oidc_github_enterprise, oidc_gitlab)""" domains: List[str] r"""Domains associated with the enterprise connection (required; at least one). Values are normalized to lowercase. Each domain must be a valid fully qualified domain name.""" @@ -296,6 +345,9 @@ class CreateEnterpriseConnectionRequestBody(BaseModel): organization_id: OptionalNullable[str] = UNSET r"""Organization ID when the connection is linked to an organization""" + allow_organization_account_linking: OptionalNullable[bool] = UNSET + r"""Whether this connection supports account linking via organization membership""" + active: OptionalNullable[bool] = UNSET r"""Whether the enterprise connection is active. When true, IdP metadata must be provided via the `saml` object.""" @@ -305,12 +357,32 @@ class CreateEnterpriseConnectionRequestBody(BaseModel): """ oidc: OptionalNullable[Oidc] = UNSET - r"""OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. provider is oidc_custom).""" + r"""OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. provider is oidc_custom, oidc_github_enterprise, or oidc_gitlab).""" + + custom_attributes: Optional[List[CreateEnterpriseConnectionCustomAttributes]] = None + r"""Custom attributes to map from the IdP to the user's profile via SSO or SCIM provisioning. Requires the custom attributes feature to be enabled for the instance.""" @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["organization_id", "active", "saml", "oidc"]) - nullable_fields = set(["organization_id", "active", "saml", "oidc"]) + optional_fields = set( + [ + "organization_id", + "allow_organization_account_linking", + "active", + "saml", + "oidc", + "custom_attributes", + ] + ) + nullable_fields = set( + [ + "organization_id", + "allow_organization_account_linking", + "active", + "saml", + "oidc", + ] + ) serialized = handler(self) m = {} diff --git a/src/clerk_backend_api/models/schemas_commerceplan.py b/src/clerk_backend_api/models/schemas_commerceplan.py index cf360a12..40f92d2d 100644 --- a/src/clerk_backend_api/models/schemas_commerceplan.py +++ b/src/clerk_backend_api/models/schemas_commerceplan.py @@ -1,7 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from .commercemoneyresponse import CommerceMoneyResponse, CommerceMoneyResponseTypedDict from .schemas_featureresponse import ( SchemasFeatureResponse, SchemasFeatureResponseTypedDict, @@ -25,6 +24,81 @@ class SchemasCommercePlanObject(str, Enum): COMMERCE_PLAN = "commerce_plan" +class SchemasCommercePlanFeeTypedDict(TypedDict): + amount: int + r"""The amount in cents.""" + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + currency: str + r"""The currency code (e.g., \"USD\").""" + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + +class SchemasCommercePlanFee(BaseModel): + amount: int + r"""The amount in cents.""" + + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + + currency: str + r"""The currency code (e.g., \"USD\").""" + + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + +class SchemasCommercePlanAnnualMonthlyFeeTypedDict(TypedDict): + amount: int + r"""The amount in cents.""" + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + currency: str + r"""The currency code (e.g., \"USD\").""" + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + +class SchemasCommercePlanAnnualMonthlyFee(BaseModel): + amount: int + r"""The amount in cents.""" + + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + + currency: str + r"""The currency code (e.g., \"USD\").""" + + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + +class SchemasCommercePlanAnnualFeeTypedDict(TypedDict): + amount: int + r"""The amount in cents.""" + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + currency: str + r"""The currency code (e.g., \"USD\").""" + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + +class SchemasCommercePlanAnnualFee(BaseModel): + amount: int + r"""The amount in cents.""" + + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + + currency: str + r"""The currency code (e.g., \"USD\").""" + + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + class SchemasCommercePlanTypedDict(TypedDict): object: SchemasCommercePlanObject r"""String representing the object's type. Objects of the same type share the same value.""" @@ -32,9 +106,9 @@ class SchemasCommercePlanTypedDict(TypedDict): r"""Unique identifier for the commerce plan.""" name: str r"""The name of the commerce plan.""" - fee: CommerceMoneyResponseTypedDict - annual_monthly_fee: CommerceMoneyResponseTypedDict - annual_fee: CommerceMoneyResponseTypedDict + fee: Nullable[SchemasCommercePlanFeeTypedDict] + annual_monthly_fee: Nullable[SchemasCommercePlanAnnualMonthlyFeeTypedDict] + annual_fee: Nullable[SchemasCommercePlanAnnualFeeTypedDict] amount: int r"""The amount in cents for the plan.""" amount_formatted: str @@ -93,11 +167,11 @@ class SchemasCommercePlan(BaseModel): name: str r"""The name of the commerce plan.""" - fee: CommerceMoneyResponse + fee: Nullable[SchemasCommercePlanFee] - annual_monthly_fee: CommerceMoneyResponse + annual_monthly_fee: Nullable[SchemasCommercePlanAnnualMonthlyFee] - annual_fee: CommerceMoneyResponse + annual_fee: Nullable[SchemasCommercePlanAnnualFee] amount: int r"""The amount in cents for the plan.""" @@ -173,7 +247,9 @@ def serialize_model(self, handler): optional_fields = set( ["period", "interval", "free_trial_enabled", "free_trial_days"] ) - nullable_fields = set(["free_trial_days"]) + nullable_fields = set( + ["fee", "annual_monthly_fee", "annual_fee", "free_trial_days"] + ) serialized = handler(self) m = {} diff --git a/src/clerk_backend_api/models/schemas_commercesubscriptionitem.py b/src/clerk_backend_api/models/schemas_commercesubscriptionitem.py index bf4b219a..ff826632 100644 --- a/src/clerk_backend_api/models/schemas_commercesubscriptionitem.py +++ b/src/clerk_backend_api/models/schemas_commercesubscriptionitem.py @@ -116,6 +116,81 @@ class SchemasCommerceSubscriptionItemPlanObject(str, Enum): COMMERCE_PLAN = "commerce_plan" +class SchemasCommerceSubscriptionItemFeeTypedDict(TypedDict): + amount: int + r"""The amount in cents.""" + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + currency: str + r"""The currency code (e.g., \"USD\").""" + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + +class SchemasCommerceSubscriptionItemFee(BaseModel): + amount: int + r"""The amount in cents.""" + + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + + currency: str + r"""The currency code (e.g., \"USD\").""" + + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + +class SchemasCommerceSubscriptionItemAnnualMonthlyFeeTypedDict(TypedDict): + amount: int + r"""The amount in cents.""" + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + currency: str + r"""The currency code (e.g., \"USD\").""" + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + +class SchemasCommerceSubscriptionItemAnnualMonthlyFee(BaseModel): + amount: int + r"""The amount in cents.""" + + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + + currency: str + r"""The currency code (e.g., \"USD\").""" + + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + +class SchemasCommerceSubscriptionItemAnnualFeeTypedDict(TypedDict): + amount: int + r"""The amount in cents.""" + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + currency: str + r"""The currency code (e.g., \"USD\").""" + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + +class SchemasCommerceSubscriptionItemAnnualFee(BaseModel): + amount: int + r"""The amount in cents.""" + + amount_formatted: str + r"""The formatted amount as a string (e.g., \"$49.99\").""" + + currency: str + r"""The currency code (e.g., \"USD\").""" + + currency_symbol: str + r"""The currency symbol (e.g., \"$\").""" + + class SchemasCommerceSubscriptionItemPlanTypedDict(TypedDict): r"""The associated commerce plan.""" @@ -125,9 +200,11 @@ class SchemasCommerceSubscriptionItemPlanTypedDict(TypedDict): r"""Unique identifier for the commerce plan.""" name: str r"""The name of the commerce plan.""" - fee: CommerceMoneyResponseTypedDict - annual_monthly_fee: CommerceMoneyResponseTypedDict - annual_fee: CommerceMoneyResponseTypedDict + fee: Nullable[SchemasCommerceSubscriptionItemFeeTypedDict] + annual_monthly_fee: Nullable[ + SchemasCommerceSubscriptionItemAnnualMonthlyFeeTypedDict + ] + annual_fee: Nullable[SchemasCommerceSubscriptionItemAnnualFeeTypedDict] amount: int r"""The amount in cents for the plan.""" amount_formatted: str @@ -188,11 +265,11 @@ class SchemasCommerceSubscriptionItemPlan(BaseModel): name: str r"""The name of the commerce plan.""" - fee: CommerceMoneyResponse + fee: Nullable[SchemasCommerceSubscriptionItemFee] - annual_monthly_fee: CommerceMoneyResponse + annual_monthly_fee: Nullable[SchemasCommerceSubscriptionItemAnnualMonthlyFee] - annual_fee: CommerceMoneyResponse + annual_fee: Nullable[SchemasCommerceSubscriptionItemAnnualFee] amount: int r"""The amount in cents for the plan.""" @@ -268,7 +345,9 @@ def serialize_model(self, handler): optional_fields = set( ["period", "interval", "free_trial_enabled", "free_trial_days"] ) - nullable_fields = set(["free_trial_days"]) + nullable_fields = set( + ["fee", "annual_monthly_fee", "annual_fee", "free_trial_days"] + ) serialized = handler(self) m = {} diff --git a/src/clerk_backend_api/models/schemas_enterpriseconnection.py b/src/clerk_backend_api/models/schemas_enterpriseconnection.py index 9519df3d..144dda17 100644 --- a/src/clerk_backend_api/models/schemas_enterpriseconnection.py +++ b/src/clerk_backend_api/models/schemas_enterpriseconnection.py @@ -13,6 +13,47 @@ from typing_extensions import NotRequired, TypedDict +class CustomAttributesTypedDict(TypedDict): + name: str + r"""Display name for the custom attribute""" + key: str + r"""Key used to store the attribute in the user's public/private/unsafe metadata""" + sso_path: NotRequired[str] + r"""Path to extract the attribute value from SSO claims (SAML assertions or OIDC claims)""" + scim_path: NotRequired[str] + r"""GJSON path to extract the attribute value from SCIM user resources""" + + +class CustomAttributes(BaseModel): + name: str + r"""Display name for the custom attribute""" + + key: str + r"""Key used to store the attribute in the user's public/private/unsafe metadata""" + + sso_path: Optional[str] = None + r"""Path to extract the attribute value from SSO claims (SAML assertions or OIDC claims)""" + + scim_path: Optional[str] = None + r"""GJSON path to extract the attribute value from SCIM user resources""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["sso_path", "scim_path"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + class SchemasEnterpriseConnectionSamlConnectionTypedDict(TypedDict): r"""Present when the enterprise connection uses SAML""" @@ -139,7 +180,7 @@ class OauthConfigTypedDict(TypedDict): name: NotRequired[str] r"""Custom OIDC provider display name""" provider_key: NotRequired[str] - r"""OAuth provider key (e.g. oidc_custom)""" + r"""OAuth provider key (e.g. oidc_custom, oidc_ghe_*, oidc_gitlab_ent_*)""" client_id: NotRequired[Nullable[str]] r"""OAuth client ID""" discovery_url: NotRequired[Nullable[str]] @@ -162,7 +203,7 @@ class OauthConfig(BaseModel): r"""Custom OIDC provider display name""" provider_key: Optional[str] = None - r"""OAuth provider key (e.g. oidc_custom)""" + r"""OAuth provider key (e.g. oidc_custom, oidc_ghe_*, oidc_gitlab_ent_*)""" client_id: OptionalNullable[str] = UNSET r"""OAuth client ID""" @@ -235,6 +276,10 @@ class SchemasEnterpriseConnectionTypedDict(TypedDict): r"""Controls whether to update the user's attributes on each sign-in""" disable_additional_identifications: NotRequired[bool] r"""When true, users cannot add additional identifications when using this connection""" + allow_organization_account_linking: NotRequired[bool] + r"""Whether this connection supports account linking via organization membership""" + custom_attributes: NotRequired[List[CustomAttributesTypedDict]] + r"""Custom attributes to map from the IdP to the user's profile via SSO or SCIM provisioning""" saml_connection: NotRequired[ Nullable[SchemasEnterpriseConnectionSamlConnectionTypedDict] ] @@ -271,6 +316,12 @@ class SchemasEnterpriseConnection(BaseModel): disable_additional_identifications: Optional[bool] = None r"""When true, users cannot add additional identifications when using this connection""" + allow_organization_account_linking: Optional[bool] = None + r"""Whether this connection supports account linking via organization membership""" + + custom_attributes: Optional[List[CustomAttributes]] = None + r"""Custom attributes to map from the IdP to the user's profile via SSO or SCIM provisioning""" + saml_connection: OptionalNullable[SchemasEnterpriseConnectionSamlConnection] = UNSET r"""Present when the enterprise connection uses SAML""" @@ -284,6 +335,8 @@ def serialize_model(self, handler): "organization_id", "sync_user_attributes", "disable_additional_identifications", + "allow_organization_account_linking", + "custom_attributes", "saml_connection", "oauth_config", ] diff --git a/src/clerk_backend_api/models/schemas_samlconnection.py b/src/clerk_backend_api/models/schemas_samlconnection.py index af1015ff..84e2dd4a 100644 --- a/src/clerk_backend_api/models/schemas_samlconnection.py +++ b/src/clerk_backend_api/models/schemas_samlconnection.py @@ -41,6 +41,7 @@ class TwoTypedDict(TypedDict): allow_subdomains: bool allow_idp_initiated: bool disable_additional_identifications: bool + allow_organization_account_linking: bool force_authn: bool r"""Enable or deactivate ForceAuthn""" created_at: int @@ -94,6 +95,8 @@ class Two(BaseModel): disable_additional_identifications: bool + allow_organization_account_linking: bool + force_authn: bool r"""Enable or deactivate ForceAuthn""" @@ -191,6 +194,7 @@ class OneTypedDict(TypedDict): allow_subdomains: bool allow_idp_initiated: bool disable_additional_identifications: bool + allow_organization_account_linking: bool force_authn: bool r"""Enable or deactivate ForceAuthn""" created_at: int @@ -249,6 +253,8 @@ class One(BaseModel): disable_additional_identifications: bool + allow_organization_account_linking: bool + force_authn: bool r"""Enable or deactivate ForceAuthn""" diff --git a/src/clerk_backend_api/models/updateenterpriseconnectionop.py b/src/clerk_backend_api/models/updateenterpriseconnectionop.py index 48deb593..b7e1a40c 100644 --- a/src/clerk_backend_api/models/updateenterpriseconnectionop.py +++ b/src/clerk_backend_api/models/updateenterpriseconnectionop.py @@ -10,7 +10,7 @@ ) from clerk_backend_api.utils import FieldMetadata, PathParamMetadata, RequestMetadata from pydantic import model_serializer -from typing import List +from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -173,7 +173,7 @@ def serialize_model(self, handler): class UpdateEnterpriseConnectionOidcTypedDict(TypedDict): - r"""OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC.""" + r"""OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. oidc_custom, oidc_github_enterprise, or oidc_gitlab).""" client_id: NotRequired[Nullable[str]] r"""OIDC client ID""" @@ -192,7 +192,7 @@ class UpdateEnterpriseConnectionOidcTypedDict(TypedDict): class UpdateEnterpriseConnectionOidc(BaseModel): - r"""OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC.""" + r"""OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. oidc_custom, oidc_github_enterprise, or oidc_gitlab).""" client_id: OptionalNullable[str] = UNSET r"""OIDC client ID""" @@ -261,6 +261,47 @@ def serialize_model(self, handler): return m +class UpdateEnterpriseConnectionCustomAttributesTypedDict(TypedDict): + name: str + r"""Display name for the custom attribute""" + key: str + r"""Key used to store the attribute in the user's metadata""" + sso_path: NotRequired[str] + r"""Path to extract the attribute value from SSO claims""" + scim_path: NotRequired[str] + r"""GJSON path to extract the attribute value from SCIM user resources""" + + +class UpdateEnterpriseConnectionCustomAttributes(BaseModel): + name: str + r"""Display name for the custom attribute""" + + key: str + r"""Key used to store the attribute in the user's metadata""" + + sso_path: Optional[str] = None + r"""Path to extract the attribute value from SSO claims""" + + scim_path: Optional[str] = None + r"""GJSON path to extract the attribute value from SCIM user resources""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["sso_path", "scim_path"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + class UpdateEnterpriseConnectionRequestBodyTypedDict(TypedDict): name: NotRequired[Nullable[str]] r"""The display name of the enterprise connection""" @@ -274,6 +315,8 @@ class UpdateEnterpriseConnectionRequestBodyTypedDict(TypedDict): r"""Whether to sync user attributes on sign-in""" disable_additional_identifications: NotRequired[Nullable[bool]] r"""Whether to disable additional identifications""" + allow_organization_account_linking: NotRequired[Nullable[bool]] + r"""Whether this connection supports account linking via organization membership""" organization_id: NotRequired[Nullable[str]] r"""Organization ID to link to this enterprise connection. Only linking is supported; sending this field sets or changes the linked organization. There is no way to unlink an organization once linked.""" saml: NotRequired[Nullable[UpdateEnterpriseConnectionSamlTypedDict]] @@ -281,7 +324,11 @@ class UpdateEnterpriseConnectionRequestBodyTypedDict(TypedDict): Use this to update IdP configuration, attribute mapping, and other SAML-specific settings. """ oidc: NotRequired[Nullable[UpdateEnterpriseConnectionOidcTypedDict]] - r"""OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC.""" + r"""OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. oidc_custom, oidc_github_enterprise, or oidc_gitlab).""" + custom_attributes: NotRequired[ + Nullable[List[UpdateEnterpriseConnectionCustomAttributesTypedDict]] + ] + r"""Custom attributes to map from the IdP to the user's profile via SSO or SCIM provisioning. Requires the custom attributes feature to be enabled for the instance.""" class UpdateEnterpriseConnectionRequestBody(BaseModel): @@ -302,6 +349,9 @@ class UpdateEnterpriseConnectionRequestBody(BaseModel): disable_additional_identifications: OptionalNullable[bool] = UNSET r"""Whether to disable additional identifications""" + allow_organization_account_linking: OptionalNullable[bool] = UNSET + r"""Whether this connection supports account linking via organization membership""" + organization_id: OptionalNullable[str] = UNSET r"""Organization ID to link to this enterprise connection. Only linking is supported; sending this field sets or changes the linked organization. There is no way to unlink an organization once linked.""" @@ -311,7 +361,12 @@ class UpdateEnterpriseConnectionRequestBody(BaseModel): """ oidc: OptionalNullable[UpdateEnterpriseConnectionOidc] = UNSET - r"""OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC.""" + r"""OIDC connection-specific properties. Only applied when the enterprise connection uses OIDC (e.g. oidc_custom, oidc_github_enterprise, or oidc_gitlab).""" + + custom_attributes: OptionalNullable[ + List[UpdateEnterpriseConnectionCustomAttributes] + ] = UNSET + r"""Custom attributes to map from the IdP to the user's profile via SSO or SCIM provisioning. Requires the custom attributes feature to be enabled for the instance.""" @model_serializer(mode="wrap") def serialize_model(self, handler): @@ -322,9 +377,11 @@ def serialize_model(self, handler): "active", "sync_user_attributes", "disable_additional_identifications", + "allow_organization_account_linking", "organization_id", "saml", "oidc", + "custom_attributes", ] ) nullable_fields = set( @@ -334,9 +391,11 @@ def serialize_model(self, handler): "active", "sync_user_attributes", "disable_additional_identifications", + "allow_organization_account_linking", "organization_id", "saml", "oidc", + "custom_attributes", ] ) serialized = handler(self) diff --git a/src/clerk_backend_api/models/updatesamlconnectionop.py b/src/clerk_backend_api/models/updatesamlconnectionop.py index 87abc42e..f4beef01 100644 --- a/src/clerk_backend_api/models/updatesamlconnectionop.py +++ b/src/clerk_backend_api/models/updatesamlconnectionop.py @@ -83,6 +83,8 @@ class UpdateSAMLConnectionRequestBodyTypedDict(TypedDict): r"""Enable or deactivate IdP-initiated flows""" disable_additional_identifications: NotRequired[Nullable[bool]] r"""Enable or deactivate additional identifications""" + allow_organization_account_linking: NotRequired[Nullable[bool]] + r"""Whether this connection supports account linking via organization membership""" force_authn: NotRequired[bool] r"""Enable or deactivate ForceAuthn""" consent_verified_domains_deletion: NotRequired[Nullable[bool]] @@ -140,6 +142,9 @@ class UpdateSAMLConnectionRequestBody(BaseModel): disable_additional_identifications: OptionalNullable[bool] = UNSET r"""Enable or deactivate additional identifications""" + allow_organization_account_linking: OptionalNullable[bool] = UNSET + r"""Whether this connection supports account linking via organization membership""" + force_authn: Optional[bool] = None r"""Enable or deactivate ForceAuthn""" @@ -165,6 +170,7 @@ def serialize_model(self, handler): "allow_subdomains", "allow_idp_initiated", "disable_additional_identifications", + "allow_organization_account_linking", "force_authn", "consent_verified_domains_deletion", ] @@ -186,6 +192,7 @@ def serialize_model(self, handler): "allow_subdomains", "allow_idp_initiated", "disable_additional_identifications", + "allow_organization_account_linking", "consent_verified_domains_deletion", ] ) diff --git a/src/clerk_backend_api/samlconnections_sdk.py b/src/clerk_backend_api/samlconnections_sdk.py index 518894e5..2a17c698 100644 --- a/src/clerk_backend_api/samlconnections_sdk.py +++ b/src/clerk_backend_api/samlconnections_sdk.py @@ -680,6 +680,7 @@ def update( allow_subdomains: OptionalNullable[bool] = UNSET, allow_idp_initiated: OptionalNullable[bool] = UNSET, disable_additional_identifications: OptionalNullable[bool] = UNSET, + allow_organization_account_linking: OptionalNullable[bool] = UNSET, force_authn: Optional[bool] = None, consent_verified_domains_deletion: OptionalNullable[bool] = UNSET, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -708,6 +709,7 @@ def update( :param allow_subdomains: Allow users with an email address subdomain to use this connection in order to authenticate :param allow_idp_initiated: Enable or deactivate IdP-initiated flows :param disable_additional_identifications: Enable or deactivate additional identifications + :param allow_organization_account_linking: Whether this connection supports account linking via organization membership :param force_authn: Enable or deactivate ForceAuthn :param consent_verified_domains_deletion: When enabling the connection, controls behavior when verified domains used for enrollment modes like automatic invitation or automatic suggestion already exist for the same domain. If true, those verified domains are removed and the connection is enabled. If false or omitted, the request fails when any such verified domain exists. :param retries: Override the default retry configuration for this method @@ -745,6 +747,7 @@ def update( allow_subdomains=allow_subdomains, allow_idp_initiated=allow_idp_initiated, disable_additional_identifications=disable_additional_identifications, + allow_organization_account_linking=allow_organization_account_linking, force_authn=force_authn, consent_verified_domains_deletion=consent_verified_domains_deletion, ), @@ -840,6 +843,7 @@ async def update_async( allow_subdomains: OptionalNullable[bool] = UNSET, allow_idp_initiated: OptionalNullable[bool] = UNSET, disable_additional_identifications: OptionalNullable[bool] = UNSET, + allow_organization_account_linking: OptionalNullable[bool] = UNSET, force_authn: Optional[bool] = None, consent_verified_domains_deletion: OptionalNullable[bool] = UNSET, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -868,6 +872,7 @@ async def update_async( :param allow_subdomains: Allow users with an email address subdomain to use this connection in order to authenticate :param allow_idp_initiated: Enable or deactivate IdP-initiated flows :param disable_additional_identifications: Enable or deactivate additional identifications + :param allow_organization_account_linking: Whether this connection supports account linking via organization membership :param force_authn: Enable or deactivate ForceAuthn :param consent_verified_domains_deletion: When enabling the connection, controls behavior when verified domains used for enrollment modes like automatic invitation or automatic suggestion already exist for the same domain. If true, those verified domains are removed and the connection is enabled. If false or omitted, the request fails when any such verified domain exists. :param retries: Override the default retry configuration for this method @@ -905,6 +910,7 @@ async def update_async( allow_subdomains=allow_subdomains, allow_idp_initiated=allow_idp_initiated, disable_additional_identifications=disable_additional_identifications, + allow_organization_account_linking=allow_organization_account_linking, force_authn=force_authn, consent_verified_domains_deletion=consent_verified_domains_deletion, ), diff --git a/src/clerk_backend_api/utils/metadata.py b/src/clerk_backend_api/utils/metadata.py index 173b3e5c..5abddd58 100644 --- a/src/clerk_backend_api/utils/metadata.py +++ b/src/clerk_backend_api/utils/metadata.py @@ -15,6 +15,7 @@ class SecurityMetadata: scheme_type: Optional[str] = None sub_type: Optional[str] = None field_name: Optional[str] = None + composite: bool = False def get_field_name(self, default: str) -> str: return self.field_name or default diff --git a/src/clerk_backend_api/utils/security.py b/src/clerk_backend_api/utils/security.py index 17996bd5..42d8d78e 100644 --- a/src/clerk_backend_api/utils/security.py +++ b/src/clerk_backend_api/utils/security.py @@ -5,6 +5,7 @@ Any, Dict, List, + Optional, Tuple, ) from pydantic import BaseModel @@ -16,7 +17,9 @@ ) -def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]: +def get_security( + security: Any, allowed_fields: Optional[List[str]] = None +) -> Tuple[Dict[str, str], Dict[str, List[str]]]: headers: Dict[str, str] = {} query_params: Dict[str, List[str]] = {} @@ -27,7 +30,14 @@ def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]: raise TypeError("security must be a pydantic model") sec_fields: Dict[str, FieldInfo] = security.__class__.model_fields - for name in sec_fields: + sec_field_names = ( + list(sec_fields.keys()) if allowed_fields is None else allowed_fields + ) + + for name in sec_field_names: + if name not in sec_fields: + continue + sec_field = sec_fields[name] value = getattr(security, name) @@ -49,6 +59,9 @@ def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]: else: _parse_security_scheme(headers, query_params, metadata, name, value) + if not metadata.composite: + return headers, query_params + return headers, query_params @@ -59,15 +72,24 @@ def _parse_security_option( raise TypeError("security option must be a pydantic model") opt_fields: Dict[str, FieldInfo] = option.__class__.model_fields + for name in opt_fields: opt_field = opt_fields[name] metadata = find_field_metadata(opt_field, SecurityMetadata) if metadata is None or not metadata.scheme: continue - _parse_security_scheme( - headers, query_params, metadata, name, getattr(option, name) - ) + + value = getattr(option, name) + if ( + metadata.scheme_type == "http" + and metadata.sub_type == "basic" + and not isinstance(value, BaseModel) + ): + _parse_basic_auth_scheme(headers, option) + return + + _parse_security_scheme(headers, query_params, metadata, name, value) def _parse_security_scheme( diff --git a/src/clerk_backend_api/utils/serializers.py b/src/clerk_backend_api/utils/serializers.py index 14321eb4..d2149f8b 100644 --- a/src/clerk_backend_api/utils/serializers.py +++ b/src/clerk_backend_api/utils/serializers.py @@ -17,8 +17,7 @@ def serialize_decimal(as_str: bool): def serialize(d): - # Optional[T] is a Union[T, None] - if is_union(type(d)) and type(None) in get_args(type(d)) and d is None: + if d is None: return None if isinstance(d, Unset): return d @@ -46,8 +45,7 @@ def validate_decimal(d): def serialize_float(as_str: bool): def serialize(f): - # Optional[T] is a Union[T, None] - if is_union(type(f)) and type(None) in get_args(type(f)) and f is None: + if f is None: return None if isinstance(f, Unset): return f @@ -75,8 +73,7 @@ def validate_float(f): def serialize_int(as_str: bool): def serialize(i): - # Optional[T] is a Union[T, None] - if is_union(type(i)) and type(None) in get_args(type(i)) and i is None: + if i is None: return None if isinstance(i, Unset): return i @@ -104,8 +101,7 @@ def validate_int(b): def validate_const(v): def validate(c): - # Optional[T] is a Union[T, None] - if is_union(type(c)) and type(None) in get_args(type(c)) and c is None: + if c is None: return None if v != c: