diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index c702c9fe5..0567b0f97 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,19 +1,19 @@ lockVersion: 2.0.0 id: c48cf606-fb42-4a45-9c23-8f0555307828 management: - docChecksum: 28a5356cf80ae46bf5f2f1de14bbc9ec + docChecksum: 565c94d309517febad862f36e872e29d docVersion: 1.0.0 speakeasyVersion: 1.787.0 generationVersion: 2.914.0 - releaseVersion: 1.3.69 - configChecksum: 23951ebee498b3aa73cd7ed26074ac26 + releaseVersion: 1.3.70 + configChecksum: 0a4950b2e092fef1a724f0edd446ed0d repoURL: https://github.com/OpenRouterTeam/python-sdk.git installationURL: https://github.com/OpenRouterTeam/python-sdk.git published: true persistentEdits: - generation_id: 1e1ea8d5-af68-456e-a7a0-92205f110359 - pristine_commit_hash: 2a03464d045090b64f99735eb054e8338cc9a8f3 - pristine_tree_hash: 25e68583735b3baf9c965dac3d52e95a19ee6e4c + generation_id: 9df4e84d-d967-4e61-a71e-f916f8eb44f7 + pristine_commit_hash: 850251964ed53cc1d4fde846fe24633a7bf8fcb5 + pristine_tree_hash: 1c7875742600ca4d91640240333f06f7a75cfef5 features: python: acceptHeaders: 3.0.0 @@ -2562,10 +2562,10 @@ trackedFiles: id: 73f247dc0e33 last_write_checksum: sha1:b3215e9efd44e81e7986dc22cbdcf05aa50a4a22 pristine_git_object: 4da6fbee689d2362efb2470e07eedabdb2cb5d90 - docs/components/createenduserrequest.mdx: - id: e82c759c8be2 - last_write_checksum: sha1:44cd7f3e8324d92154c2d2706f94ecf23efd1582 - pristine_git_object: 9d28e4c7e863cf97b10b6415b1525aa8871800e2 + docs/components/createexternaluserrequest.mdx: + id: 10d107b37a9d + last_write_checksum: sha1:30a53d35378d750f24f9f99dd2c253791a211177 + pristine_git_object: eb40e769b6344e2f0bf6432dc726754b072da6a7 docs/components/createguardrailrequest.mdx: id: c1a768f054c0 last_write_checksum: sha1:a8119bc205b2be6813253126ce9228f570d1a046 @@ -3038,14 +3038,6 @@ trackedFiles: id: 5e4fa96c840d last_write_checksum: sha1:4d2ccb7fc0d20c8a0b72db3a55a8228169891b6a pristine_git_object: 72c5b4fb8441c2a4337dc9906fa81b01bb92f126 - docs/components/enduser.mdx: - id: a690fe4da7fa - last_write_checksum: sha1:71ba5b6752f46e9bc1570453d67ddcaeec79e7a3 - pristine_git_object: 27621b0e603d4b102797d6ff00b37aab255253fa - docs/components/enduserresponse.mdx: - id: e340b96bf3b4 - last_write_checksum: sha1:83fbaf74d163f2498007397e3c37f06db8086c0a - pristine_git_object: 4b605db127b9e50464b42c8e9650b84f6b36c101 docs/components/enumcapability.mdx: id: 33c7a0f315d5 last_write_checksum: sha1:08338d742893cb3966cd12cee49a5d80748b3d63 @@ -3074,6 +3066,14 @@ trackedFiles: id: b365b7815bf8 last_write_checksum: sha1:65fe2b66aeb7f8e46a4c1a1e6ee826495fc86b71 pristine_git_object: ffc147c8c082c000a355063292275d381b130b42 + docs/components/externaluser.mdx: + id: 7a1a923e3215 + last_write_checksum: sha1:adb81ab5d86d18a861f98d46630a5f0b25df43b8 + pristine_git_object: 03be62c81d7d8670bf396a9ff27c837bb8944272 + docs/components/externaluserresponse.mdx: + id: 1375aa431642 + last_write_checksum: sha1:c9bf70db6a4b66f76890cd5fb2741d851bbe1e8c + pristine_git_object: cf512669173c561211bf787b88ed57b158d4839d docs/components/failabletoolcallstatus.mdx: id: 66c801061bd7 last_write_checksum: sha1:3beed4470126b7cc6bf271423ad03db0163d7bd0 @@ -4270,10 +4270,10 @@ trackedFiles: id: 1aeb90d09e63 last_write_checksum: sha1:b5d3535ac0e30e1ac1f4f44f3dd17fc8d07aeaff pristine_git_object: 2df1189da38f979e3ce2bc39c62eb5b79aec3060 - docs/components/listendusersresponse.mdx: - id: 83bf1b522c37 - last_write_checksum: sha1:0c009062976d9dd800d8e592b85a5796398fd456 - pristine_git_object: b95cdd819dc02959feefbabf9371ea961ef47175 + docs/components/listexternalusersresponse.mdx: + id: c149f176ebb9 + last_write_checksum: sha1:61b12ee52644cf6c6e3f6fed7e1b6cc8be184ad4 + pristine_git_object: eb72a77f7ef995c96a09d301a333e50c1692a060 docs/components/listguardrailsresponse.mdx: id: ba740952e77b last_write_checksum: sha1:5a75d264da7e1074ccb5529bf06dce343db5a8da @@ -7838,10 +7838,10 @@ trackedFiles: id: 9b4490c340b4 last_write_checksum: sha1:77d6684dbbcf79cd2cef6cf2a87f44bd17892012 pristine_git_object: b1eafbef06168c35b057c5d53749f255303a6164 - docs/components/updateenduserrequest.mdx: - id: 42e918f01861 - last_write_checksum: sha1:cfc96316a62b5df60663ccec298ad23b33c93876 - pristine_git_object: 72a1c5ade4703a295e533f6e12733f464a21ff65 + docs/components/updateexternaluserrequest.mdx: + id: 3b80312f3719 + last_write_checksum: sha1:ab11c6eb4401fa8c4699bbb6252191890626f455 + pristine_git_object: 786d70e7d86e76b820f222c63993ce80150614a0 docs/components/updateguardrailrequest.mdx: id: 450912b18db6 last_write_checksum: sha1:06d188e2836d12a14af08453a4e460cd9a386294 @@ -8554,14 +8554,14 @@ trackedFiles: id: 4f9205ca2bb9 last_write_checksum: sha1:8156e256387b12cc08a5a92f9e9332ec2b35a2af pristine_git_object: 1218cf960cbc2285120cb399596e0bc73b44aa9f - docs/operations/createenduserglobals.mdx: - id: edb6cb53a590 - last_write_checksum: sha1:1ab6518cccfb2d8d62fc3378bb5ccf19f07c8530 - pristine_git_object: e420bbbee81a1d9392f5249150e4d6823b7bc360 - docs/operations/createenduserrequest.mdx: - id: 36afb465cbb1 - last_write_checksum: sha1:dd01057e3c354507a3880814b7e12937ad1c143d - pristine_git_object: 9448f50842deb5c7b5dcf4c2d5f022a3d43d20d8 + docs/operations/createexternaluserglobals.mdx: + id: db8ce2bf7373 + last_write_checksum: sha1:4c581229120e860970302e535b3491e6e4842a53 + pristine_git_object: b0f84466a66c7f8da66ef08030ebffdca95b59c0 + docs/operations/createexternaluserrequest.mdx: + id: 78709d29d8d4 + last_write_checksum: sha1:1b647922f747489cab87f56b3b74ed964139c132 + pristine_git_object: f9934bc264d45e7adc216f62426e99a4caa1f04e docs/operations/createguardrailglobals.mdx: id: ce6e792df15c last_write_checksum: sha1:6542508eed5dbd74bf6812b8cc0cc9cfd3157d06 @@ -8778,14 +8778,14 @@ trackedFiles: id: 5f6e81896314 last_write_checksum: sha1:2927f00b81e9bccb0d19ce46dfd3fdc23475eb4c pristine_git_object: 7fdac9559bfcf2860dbd533e0d3ae974ab26f193 - docs/operations/deleteenduserglobals.mdx: - id: 17d644a655d0 - last_write_checksum: sha1:7512fbfbf270ee7c9cff32787917d8a81d05c357 - pristine_git_object: 07094eff6bf7c06a69ac4181ae000c55a9482dc0 - docs/operations/deleteenduserrequest.mdx: - id: 5033dca978c6 - last_write_checksum: sha1:7e316723ba8d8d6575b5c1567e421670a1188f78 - pristine_git_object: 39556c28d38694191f1dae3dfe033d84d8afe7f8 + docs/operations/deleteexternaluserglobals.mdx: + id: 21570552af46 + last_write_checksum: sha1:51422eb1f368649a8562adeb4a177ef0eba19fcf + pristine_git_object: 8e1ce2e2ac720502c259ce9103e9f2742a2f6d8d + docs/operations/deleteexternaluserrequest.mdx: + id: b6ecca22699d + last_write_checksum: sha1:b5dd5c468034f0860854746c939f476b8ce8f14b + pristine_git_object: f3c1b3b6bd5c945562c83edb0e634fa028d6eb0c docs/operations/deletefileglobals.mdx: id: b95c49d91968 last_write_checksum: sha1:1eaa5442be2df2702baf53f5dddedd40ce930fcc @@ -9078,14 +9078,14 @@ trackedFiles: id: 8b6709d01b8b last_write_checksum: sha1:f36941afa74bfd47c5367f135ca5c570dcee4494 pristine_git_object: bf0f6a34d5b78919f806c5a167a7af7e13c421ca - docs/operations/getenduserglobals.mdx: - id: e8c43375935a - last_write_checksum: sha1:254de886f9c34765bce15368509f1fba2b68d5ae - pristine_git_object: 9ec66ba16256d22f51356ac3ac0b2195a454f121 - docs/operations/getenduserrequest.mdx: - id: 19de93747569 - last_write_checksum: sha1:58dadfa90b5c6ecb3db474193d0b7836451d264b - pristine_git_object: 1e234b288b192c1ef9eba64af8d6d9fa29f86ff5 + docs/operations/getexternaluserglobals.mdx: + id: 2df7e6cd9ef6 + last_write_checksum: sha1:99876281b9f97218c1127a175380f26b93055784 + pristine_git_object: ded2761fffe794317c97bcdd30b72973bbdd3691 + docs/operations/getexternaluserrequest.mdx: + id: c1d5e11d45d9 + last_write_checksum: sha1:228270d5e76f5df449873e5d1c4d33cbd9f4ae90 + pristine_git_object: 5e26222ab74b3823fa853460759efbe8af99a411 docs/operations/getfilemetadataglobals.mdx: id: e4f16f1ce98e last_write_checksum: sha1:f736518bdebac4aa8c9caf9071e0670885bd83b3 @@ -9138,10 +9138,6 @@ trackedFiles: id: bbe139c71b51 last_write_checksum: sha1:40fb590d80dac97224b8309e80a2984026e39972 pristine_git_object: c55add4d062c1129570cb9f69404ae09253d21c6 - docs/operations/getinterniconresponse.mdx: - id: 004f6af691c2 - last_write_checksum: sha1:7ac81f37402cebd6b37a3126f298dcb26ab5363d - pristine_git_object: 24a2ce7247639a56341698fc7b1a4c3809d76d68 docs/operations/getinternrequest.mdx: id: 6e44684f038a last_write_checksum: sha1:e3b38672e96405461ef3069043f981eb45730bc1 @@ -9454,18 +9450,18 @@ trackedFiles: id: f8d0c52ac714 last_write_checksum: sha1:259ccd67ebae39f4ab027939482c3e337ba37312 pristine_git_object: 31012e2cfce20ea33c3e4781f8db798e4f33d867 - docs/operations/listendusersglobals.mdx: - id: caf708972b97 - last_write_checksum: sha1:80d09dcebee7f87784859d0462b2efc3d26fbe95 - pristine_git_object: 3b3fecc1e477bafabe93350df4bec82cad5ebfe3 - docs/operations/listendusersrequest.mdx: - id: 07d0f1292e9c - last_write_checksum: sha1:466d28dea033aa91d107876ed52c3ef569b508c2 - pristine_git_object: a115cdba4475eb799c82260c33424979c4f6139e - docs/operations/listendusersresponse.mdx: - id: c939c37b2eb5 - last_write_checksum: sha1:b27d7044dd883f11fcd98d67b234120b13364c81 - pristine_git_object: d8ac526225636dfdccb8536fd7cd4e1ad4a4afde + docs/operations/listexternalusersglobals.mdx: + id: 3e2e62682167 + last_write_checksum: sha1:0f6dde74774b7c53ecc7c253c37de41c6dcd7983 + pristine_git_object: 329b7871c3db8942b8425a88074aeaf5caaa4488 + docs/operations/listexternalusersrequest.mdx: + id: e2665ec40691 + last_write_checksum: sha1:ce1e9f7aaf537f027e2767a672153c1feb669e6a + pristine_git_object: d77a851788a4ea2b80b43cbecc571c5d83af87aa + docs/operations/listexternalusersresponse.mdx: + id: 130c8be3532e + last_write_checksum: sha1:0998fdbd32ddc9195f9a9134dc2a44300732e8ea + pristine_git_object: fad349bda8a630954918665077f6e8899c4762d1 docs/operations/listfilesglobals.mdx: id: 1674db6bdeb2 last_write_checksum: sha1:e387e5f7c8e60d7b5f47d84ccdc1132cc0efc45a @@ -10046,14 +10042,14 @@ trackedFiles: id: cef280b21ee9 last_write_checksum: sha1:86da6f664f74203209024032ed6c1281cb696757 pristine_git_object: 546e001df35e2526f0e8bd92a6836be03cf7cc5d - docs/operations/updateenduserglobals.mdx: - id: 3eab3e5b90d4 - last_write_checksum: sha1:6f49a3b900d1c12830bda99251ae36da5df7db72 - pristine_git_object: de504b1ca4a7fee6076860abdc5c200708c68b0f - docs/operations/updateenduserrequest.mdx: - id: c61c7edc838b - last_write_checksum: sha1:db3527b11dfa692fbf4701892baeee2d521ec9de - pristine_git_object: 6ff8bd561fc4529968569115abd89c80e8496e48 + docs/operations/updateexternaluserglobals.mdx: + id: e1b817957857 + last_write_checksum: sha1:7d01473bee34f8b7b99028d14bce65c8754f8168 + pristine_git_object: 3b62dac39b05eee7ace08dcc46483929a851181c + docs/operations/updateexternaluserrequest.mdx: + id: be0546351a05 + last_write_checksum: sha1:955b73df0424e74edb1c1b782e652f065a0294af + pristine_git_object: 9f31d8f65a20a12353e1c24234a7e3c9d8061fa6 docs/operations/updateguardrailglobals.mdx: id: e3ce035d5a7c last_write_checksum: sha1:6dc745162b36e08d38d6ea094282f5c45baf71f2 @@ -10262,10 +10258,10 @@ trackedFiles: id: 62dfac9f7b71 last_write_checksum: sha1:db7ed18401bcd4afa7382a9793c9ccafb5220497 pristine_git_object: f8cebc2061d7428904766956be45ca70e5519be4 - docs/sdks/endusers/README.mdx: - id: ba369f05185b - last_write_checksum: sha1:be9024bf28ffb333df23ee77a212a20035f14391 - pristine_git_object: a586a1d471685c8a58d221849133875a9937a582 + docs/sdks/externalusers/README.mdx: + id: 16a97e1de35f + last_write_checksum: sha1:70d85a7a62f388d7d48df6d1b49c466a1b88ac68 + pristine_git_object: ff6066edfc9055d8e2d9f3c6597c7c9e9015fefd docs/sdks/files/README.mdx: id: 1a0c257e330c last_write_checksum: sha1:cdc184e049de510b33bb1ceb5f88c33d7da2ae5c @@ -10284,8 +10280,8 @@ trackedFiles: pristine_git_object: 08c687694efbecf50406ae7929029d39fb121295 docs/sdks/interns/README.mdx: id: 2f8a053ffe78 - last_write_checksum: sha1:ebe5b0208ea925f4336b1620662fdc116de4e065 - pristine_git_object: a64bdbacaade03b943c76a4cda4a7a951af27347 + last_write_checksum: sha1:f1e490ca33862aa586705377035d9d1734380ab0 + pristine_git_object: 77e9f4acc46c4486ad25b879b0159f0ae6f515e9 docs/sdks/models/README.mdx: id: 58f1ca464e0b last_write_checksum: sha1:aab5b254f0a6dc7ab7c6d543b20c889113cc0dc9 @@ -10360,8 +10356,8 @@ trackedFiles: pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544 pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:03e22e23a3307124b2ec343155802015d6e8c5f0 - pristine_git_object: 81484e69ccad7cffc2737f969880102d6298b9d4 + last_write_checksum: sha1:ab303bf1e4d1fa45bea946f96d69988bf7fe8b95 + pristine_git_object: f8faac5537dee38ed0d1867392cb665cac20820f scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:77f44b60b98bc126557ec27391f91dfba764bb54 @@ -10388,8 +10384,8 @@ trackedFiles: pristine_git_object: 86713cfea633e09d33b3d4e65281071fe20e6137 src/openrouter/_version.py: id: d8d15ad6c586 - last_write_checksum: sha1:4dde9fcddbd799755f30cce2d2a45c52a6a1a8dd - pristine_git_object: e987c4cbc56cf75186ede2ccd45e43a0180f4e0a + last_write_checksum: sha1:290c12212e53ce6494ee0fe34e171ac79427b38a + pristine_git_object: e233904d27ca8f57bd6c415ec622a2c1a2bb9e09 src/openrouter/alpha.py: id: 306c4d93308d last_write_checksum: sha1:30f55a360f41376ab194b9ea725fe4e001a5ae1a @@ -10436,8 +10432,8 @@ trackedFiles: pristine_git_object: ad3d247954547814054c01989a2dff3d12b3e4e1 src/openrouter/components/__init__.py: id: 81754e97b3f4 - last_write_checksum: sha1:7b928639267c6cc16d05a08d4b77811103e843d6 - pristine_git_object: bc3bdb912faf2fdc73bbe4c57028467819b664a6 + last_write_checksum: sha1:fa2f9c974eaa8f9feb366b843d648209f045b422 + pristine_git_object: 36f891de4aefeaa4c5ee5ed277ab72329496ae35 src/openrouter/components/aabenchmarkentry.py: id: e2e0f0b48c82 last_write_checksum: sha1:fab4d9a24d2cea937bb749d46c5f83941e99d65c @@ -11522,10 +11518,10 @@ trackedFiles: id: 2b6c5e13270a last_write_checksum: sha1:a7a2a40b9ac16a975a4c5ecc8802fc0b7785691c pristine_git_object: fcfd9d646f216fdbb715cbbaefa4382d75750b79 - src/openrouter/components/createenduserrequest.py: - id: 68e7dcf03498 - last_write_checksum: sha1:24f5f96795a7f0fb068a6fa7e190efe21742031a - pristine_git_object: be0ce3784071a98e96fe996eb9da24455af72ac8 + src/openrouter/components/createexternaluserrequest.py: + id: 34c26d8d246d + last_write_checksum: sha1:5e1419d56df9bbb0003fa01bec9e19657f6ab1ae + pristine_git_object: c575c3dbc1aeeb262172f88c60d0e4eddddf5e21 src/openrouter/components/createguardrailrequest.py: id: 34d69149fb33 last_write_checksum: sha1:27e7f5d3c168e26855988ff24ce8d25ce39a9d82 @@ -11734,14 +11730,6 @@ trackedFiles: id: e935c578fce8 last_write_checksum: sha1:8a9c8184852faf1e3ca9a478e48df41ccac6fc33 pristine_git_object: ed5f8af0c599b1e55bb1939bc1d2aff0aeef610d - src/openrouter/components/enduser.py: - id: 1fad1ecc5e12 - last_write_checksum: sha1:657e97e403ec637a65660ee9ab910dc964d16999 - pristine_git_object: 8fb0d41a1140171b1b7cb768ae213352b3b374c0 - src/openrouter/components/enduserresponse.py: - id: 3da82145da68 - last_write_checksum: sha1:794963d7fadbbaf7bfb91983d83bec71c9a10556 - pristine_git_object: 04707ad9a1ba9613db756ec89632d85d836c91d4 src/openrouter/components/enumcapability.py: id: 1eddd72a17a5 last_write_checksum: sha1:09e366c414f84edb166eeb8e9091e278c15136d6 @@ -11750,6 +11738,14 @@ trackedFiles: id: 8e87043bec43 last_write_checksum: sha1:a8930d46fd48231b5350bc284c138c9264638fad pristine_git_object: 0b90b1c374c54aba3b1129f296456dc301ccb185 + src/openrouter/components/externaluser.py: + id: d1757b316a3e + last_write_checksum: sha1:f9fdc0f3eb752070f903f0f376fd64f08883ec6a + pristine_git_object: c9a7bfa7c66b1721a0608b5281faafa97593bed7 + src/openrouter/components/externaluserresponse.py: + id: c380cfecd177 + last_write_checksum: sha1:06d354a069eb17d3cbd13932e0258dc1d3ea6f9f + pristine_git_object: cb4e716656633b8d070646198b4fe0f560ee94d0 src/openrouter/components/failabletoolcallstatus.py: id: 9d8a9ed81db6 last_write_checksum: sha1:8b044a17497f3674f16642f17634e633f5d95df2 @@ -12290,10 +12286,10 @@ trackedFiles: id: 7662d5774bdb last_write_checksum: sha1:8645389f8ca0cc28969d27c99c3ef6dd6a2fe3d3 pristine_git_object: f62b08917378eab6603f9b780c31a0e561329dc4 - src/openrouter/components/listendusersresponse.py: - id: f4e3d2a1226b - last_write_checksum: sha1:131ed7ad8729d2dded869a84ddf83dfd067b06f0 - pristine_git_object: b2fade2a32b04be83817295407a6b9a43473a81e + src/openrouter/components/listexternalusersresponse.py: + id: 65372bd3167b + last_write_checksum: sha1:26d30afa688faa147fbef1af57f3d1a193f80b4a + pristine_git_object: d162c38be87d725650080f333903481410aea049 src/openrouter/components/listguardrailsresponse.py: id: 78fbd2689b5d last_write_checksum: sha1:d3103f2ff7aa2be788ef4aacf6a068497779cca1 @@ -13682,10 +13678,10 @@ trackedFiles: id: 31338080f7cc last_write_checksum: sha1:794d77355ae37451076a6b5754c6c8cc77063047 pristine_git_object: a3664695c9722c531f7694851da76e51c2efe4fb - src/openrouter/components/updateenduserrequest.py: - id: 5613bf6e335a - last_write_checksum: sha1:5c92ef6ab64b445ed6c855dc7e06e8df54a1e4bf - pristine_git_object: 0a8dcb3fb8d9c0c80159a622246dff4a3110bb1b + src/openrouter/components/updateexternaluserrequest.py: + id: 3ddaf4647482 + last_write_checksum: sha1:2d9f0b3094152252c7c2699d84aa75ecc84ce974 + pristine_git_object: 012b3aaddaeaedda9fc99afa4a817c10fe49239b src/openrouter/components/updateguardrailrequest.py: id: 6a557cd822a0 last_write_checksum: sha1:a22716af2dc5e2cea5413b44e24146d136b98b2e @@ -13922,10 +13918,6 @@ trackedFiles: id: 0374ace39067 last_write_checksum: sha1:3c45cacab1080f90f0a01e4923fd3bc5c8e9c281 pristine_git_object: 71d905b15e0a7b3c140823ddb45fb34b239fe021 - src/openrouter/end_users.py: - id: d6787489a521 - last_write_checksum: sha1:eeecf6f03761a421f6eb5d0e83e1ae2fbf897658 - pristine_git_object: 79f82063362a766941cb98f6eb1b52b07f47095b src/openrouter/endpoints.py: id: 465bbf2b7939 last_write_checksum: sha1:a04548ad80c9b1cf8ae1f5dde2e24774865c1eb8 @@ -14050,6 +14042,10 @@ trackedFiles: id: fac4aa89599e last_write_checksum: sha1:40ac0af253e94915c01c5526be71bc87587050f9 pristine_git_object: 51b56d9ca5e27c49a98d05f0414573ac5243c580 + src/openrouter/externalusers.py: + id: cc70585846df + last_write_checksum: sha1:a6acd4d2edbc07dc1cf05f16faf613654d0a27d3 + pristine_git_object: 69769bc3d2d1655af399f7db438b299f3b8a9295 src/openrouter/files.py: id: 7baf7ee1f5b3 last_write_checksum: sha1:a780217e0d86c5893c5df4877b5451385144e876 @@ -14072,8 +14068,8 @@ trackedFiles: pristine_git_object: 50643a126668498dd668c7cceb9f78c03d413d32 src/openrouter/interns.py: id: d18df05c5c6d - last_write_checksum: sha1:3fec15dfd9ba8948e454e4f7ed72bc432e50298a - pristine_git_object: 19f2e8da8c8b9042c2a0db8e65d67f0419e13ba7 + last_write_checksum: sha1:576e427059ba5b814a84a7d227e642343fcb9711 + pristine_git_object: 49185f472377ba6b9d13f7475221a5f9b0215700 src/openrouter/models/__init__.py: id: ed73b93abb3f last_write_checksum: sha1:932a790ae66ccd7d7022b39c659bcf72a664ebea @@ -14100,8 +14096,8 @@ trackedFiles: pristine_git_object: f01a5ab1865b16939c092d854fe8a7145c327058 src/openrouter/operations/__init__.py: id: 9afcea1e7161 - last_write_checksum: sha1:146b043847d9ecac862a002d90d355036100a2c5 - pristine_git_object: 265b76bdc1d266256302e03b6e6130b46e2b76cb + last_write_checksum: sha1:c6accf39fc79bfdb4eb59cdafd6817a2822de1d4 + pristine_git_object: 80fde27cb554d651c0cb03f75f64b1d7bf91f5b1 src/openrouter/operations/activateprivateendpoint.py: id: 3b39eec5d66f last_write_checksum: sha1:9406e6b3d38c82895fd795f637702ef579cc6d36 @@ -14166,10 +14162,10 @@ trackedFiles: id: fe1160a960e9 last_write_checksum: sha1:c1e7ac31c6ed358390feeef03d91e5917e57d5de pristine_git_object: 480596964d35ec389350b19b2bf56ac1877960ce - src/openrouter/operations/createenduser.py: - id: 36f457e15ca4 - last_write_checksum: sha1:dc2efc0d9bc08d4f397412b232bd1f3f3943646a - pristine_git_object: 9a40dbfcc416018a82011457c1f795a671f6d642 + src/openrouter/operations/createexternaluser.py: + id: 6bb4aa63cf35 + last_write_checksum: sha1:d114e83b15d1b4eefb6e0d948b59124379813101 + pristine_git_object: 27b30cebca01acfeb6295554740d578b5af276d1 src/openrouter/operations/createguardrail.py: id: 52ed4b2f5903 last_write_checksum: sha1:d4351fdd66f1fa2bedcfc9a974c7f4ff6c68a6bc @@ -14250,10 +14246,10 @@ trackedFiles: id: b1b2c6b06913 last_write_checksum: sha1:90aad5198d43e289d99c7b2eb66353de7593a68b pristine_git_object: 2148ca98c6cde1506783e9c5f2f522226a27e428 - src/openrouter/operations/deleteenduser.py: - id: f17d13ce6e08 - last_write_checksum: sha1:df545775816b99555a52d3c2a2f83099d67c433a - pristine_git_object: 9f5bf991fe204b4f1bcc1c565695821e0503d4b0 + src/openrouter/operations/deleteexternaluser.py: + id: 0e2de6c39fa4 + last_write_checksum: sha1:c7907541db7db37772636d634903429796cf9922 + pristine_git_object: 10080bd255adc85dd226e7707568366d61e1a202 src/openrouter/operations/deletefile.py: id: 7035af059141 last_write_checksum: sha1:9eef35ceee470a0dceb64d463ec499a2e8bad9b5 @@ -14350,10 +14346,10 @@ trackedFiles: id: baf3e38db22c last_write_checksum: sha1:f90330b836181b6ae0e12dc1586a8b5bacb61b75 pristine_git_object: e60477efea3aafc04a9756ff15c08a1657f98c29 - src/openrouter/operations/getenduser.py: - id: d20b891f0b70 - last_write_checksum: sha1:59cc03ff95d5c7e9afa42f7beeaceca7cd8e0d78 - pristine_git_object: 6045517c861f9f6b86e679949f20e4e2079914b2 + src/openrouter/operations/getexternaluser.py: + id: eb0c793346fd + last_write_checksum: sha1:1e38e705a58411b0f2907546a09c6bf8cd99fd52 + pristine_git_object: 92343ae40cab4a8e5f4da405ab05657f789e6832 src/openrouter/operations/getfilemetadata.py: id: 408c34486769 last_write_checksum: sha1:592b6646b4ff082d8427ea08e79e6b34be490857 @@ -14380,8 +14376,8 @@ trackedFiles: pristine_git_object: 6632fbbbe4e59918369b70cf2a365880f2d315d6 src/openrouter/operations/getinternicon.py: id: 2d450ce18c27 - last_write_checksum: sha1:3a38094aaf42a84d058a7b79dfd07b4de54af134 - pristine_git_object: 77a979126ab6dcc56b5536d3b295191c2589103c + last_write_checksum: sha1:79680571aeeeee2d39abf834415519b22640070d + pristine_git_object: ecda3acddbf6a798b78354c25e472093d08bb79e src/openrouter/operations/getkey.py: id: d9769da90865 last_write_checksum: sha1:63a27034e350b578b6d5f29d6568111bc14c75c1 @@ -14486,10 +14482,10 @@ trackedFiles: id: 588bf206e92f last_write_checksum: sha1:dd1cc08d8779d71a9ad80e0ad764fea72b3fb846 pristine_git_object: f5bd1f67dc835230e6d282e0500cbf3b5781eab4 - src/openrouter/operations/listendusers.py: - id: 5a2a070b97a4 - last_write_checksum: sha1:d9194b8534fd8676bd414c893a812bc21d76a598 - pristine_git_object: 324d796df4da5b32aae811275fb74df7e15d8644 + src/openrouter/operations/listexternalusers.py: + id: 01bd7badf844 + last_write_checksum: sha1:05108a63aa626128619f0277f4f61b7c4590ec6a + pristine_git_object: 2df69992a811aace6a44c6f9fa04645f1c861a33 src/openrouter/operations/listfiles.py: id: fd89527f4236 last_write_checksum: sha1:b4a0b5c4b4152ed8c2766afbaf9d9557ceb347f3 @@ -14658,10 +14654,10 @@ trackedFiles: id: 486f4ea60120 last_write_checksum: sha1:a170382e38c66128bddbe8ea18c034d1350910da pristine_git_object: cf8b4ee9febb198afe12c27d03c72902eaa8baf0 - src/openrouter/operations/updateenduser.py: - id: 62d2ff1bbd3e - last_write_checksum: sha1:9d281239d168158a33f27a9c5047729680723c97 - pristine_git_object: 9249d1f01d95aa8375aa7e69e5c9ffe122ba9128 + src/openrouter/operations/updateexternaluser.py: + id: 270d32c666fe + last_write_checksum: sha1:483493cef9d48056eec2cb48774aacfdeaedad14 + pristine_git_object: 11cc7d6ff8e3473fcaf775912060d0da38869075 src/openrouter/operations/updateguardrail.py: id: 6cfb33d7d40c last_write_checksum: sha1:bf4f6b9899c176fa012acc607556a66d6e85a51b @@ -14744,8 +14740,8 @@ trackedFiles: pristine_git_object: a28df9a26e2dd834e5bc8974c3a61d18609c79c0 src/openrouter/sdk.py: id: ee9846c4c9c5 - last_write_checksum: sha1:da0be6fb98b533d46bc081ad07a051dc0b4df355 - pristine_git_object: 8d7b90d73d3870661ef59982a25f34219d48dd2e + last_write_checksum: sha1:77ba201e90ea7357c69be7f049c8b2f4366bd19f + pristine_git_object: 610c2f778fa06707eacf88c68ea5234ec406e651 src/openrouter/sdkconfiguration.py: id: 55773bb98d7c last_write_checksum: sha1:c01826125c31a8b8bc99d9d679782c8758fae001 @@ -19014,9 +19010,105 @@ examples: "200": image/jpeg: "x-file: example.file" image/png: "x-file: example.file" + image/*: "x-file: example.file" "401": application/json: {"error": {"code": 404, "message": "Intern not found"}} "500": application/json: {"error": {"code": 404, "message": "Intern not found"}} + listExternalUsers: + speakeasy-default-list-external-users: + parameters: + query: + offset: 0 + limit: 50 + include_inactive: false + responses: + "200": + application/json: {"data": [{"created_at": "2026-09-16T12:00:00Z", "is_active": true, "updated_at": "2026-09-16T12:00:00Z", "user": "employee_123"}], "total_count": 1} + "400": + application/json: {"error": {"code": 400, "message": "Invalid request parameters"}} + "401": + application/json: {"error": {"code": 401, "message": "Missing Authentication header"}} + "404": + application/json: {"error": {"code": 404, "message": "Resource not found"}} + "500": + application/json: {"error": {"code": 500, "message": "Internal Server Error"}} + createExternalUser: + speakeasy-default-create-external-user: + requestBody: + application/json: {"user": "employee_123"} + responses: + "201": + application/json: {"data": {"created_at": "2026-09-16T12:00:00Z", "is_active": true, "updated_at": "2026-09-16T12:00:00Z", "user": "employee_123"}} + "400": + application/json: {"error": {"code": 400, "message": "Invalid request parameters"}} + "401": + application/json: {"error": {"code": 401, "message": "Missing Authentication header"}} + "404": + application/json: {"error": {"code": 404, "message": "Resource not found"}} + "409": + application/json: {"error": {"code": 409, "message": "Resource conflict. Please try again later."}} + "500": + application/json: {"error": {"code": 500, "message": "Internal Server Error"}} + deleteExternalUser: + speakeasy-default-delete-external-user: + parameters: + path: + user: "employee_123" + responses: + "400": + application/json: {"error": {"code": 400, "message": "Invalid request parameters"}} + "401": + application/json: {"error": {"code": 401, "message": "Missing Authentication header"}} + "404": + application/json: {"error": {"code": 404, "message": "Resource not found"}} + "500": + application/json: {"error": {"code": 500, "message": "Internal Server Error"}} + getExternalUser: + speakeasy-default-get-external-user: + parameters: + path: + user: "employee_123" + responses: + "200": + application/json: {"data": {"created_at": "2026-09-16T12:00:00Z", "is_active": true, "updated_at": "2026-09-16T12:00:00Z", "user": "employee_123"}} + "400": + application/json: {"error": {"code": 400, "message": "Invalid request parameters"}} + "401": + application/json: {"error": {"code": 401, "message": "Missing Authentication header"}} + "404": + application/json: {"error": {"code": 404, "message": "Resource not found"}} + "500": + application/json: {"error": {"code": 500, "message": "Internal Server Error"}} + updateExternalUser: + speakeasy-default-update-external-user: + parameters: + path: + user: "employee_123" + requestBody: + application/json: {"is_active": true} + responses: + "200": + application/json: {"data": {"created_at": "2026-09-16T12:00:00Z", "is_active": true, "updated_at": "2026-09-16T12:00:00Z", "user": "employee_123"}} + "400": + application/json: {"error": {"code": 400, "message": "Invalid request parameters"}} + "401": + application/json: {"error": {"code": 401, "message": "Missing Authentication header"}} + "404": + application/json: {"error": {"code": 404, "message": "Resource not found"}} + "500": + application/json: {"error": {"code": 500, "message": "Internal Server Error"}} examplesVersion: 1.0.2 -releaseNotes: "## Python SDK Changes:\n* `open_router.alpha.decisions.create()`: `request.provider` **Changed**\n* `open_router.tts.create_speech()`: \n * `request.provider.options.pareto_alpha` **Added**\n* `open_router.stt.create_transcription()`: \n * `request.provider.options.pareto_alpha` **Added**\n* `open_router.batch.create_batches()`: \n * `request.provider.only[].union(ProviderName).enum(pareto_alpha)` **Added**\n* `open_router.byok.list()`: \n * `request.provider` **Changed**\n * `response.data[].provider.enum(pareto_alpha)` **Added**\n* `open_router.byok.create()`: \n * `request.provider.enum(pareto_alpha)` **Added**\n * `response.data.provider.enum(pareto_alpha)` **Added**\n* `open_router.byok.get()`: `response.data.provider.enum(pareto_alpha)` **Added**\n* `open_router.byok.update()`: `response.data.provider.enum(pareto_alpha)` **Added**\n* `open_router.chat.send()`: `request.provider` **Changed**\n* `open_router.embeddings.generate()`: `request.provider` **Changed**\n* `open_router.endpoints.list_zdr_endpoints()`: `response.data[].provider_name.enum(pareto_alpha)` **Added**\n* `open_router.endpoints.list()`: `response.data.endpoints[].provider_name.enum(pareto_alpha)` **Added**\n* `open_router.generations.get_generation()`: `response.data.provider_responses[].provider_name.enum(pareto_alpha)` **Added**\n* `open_router.images.generate()`: `request.provider` **Changed**\n* `open_router.presets.create_presets_chat_completions()`: `request.provider` **Changed**\n* `open_router.presets.create_presets_messages()`: `request.provider` **Changed**\n* `open_router.presets.create_presets_responses()`: `request.provider` **Changed**\n* `open_router.rerank.rerank()`: `request.provider` **Changed**\n* `open_router.responses.send()`: `request.provider` **Changed**\n* `open_router.beta.responses.send()`: `request.provider` **Changed**\n* `open_router.system_one.create()`: `request.provider` **Changed**\n* `open_router.video_generation.generate()`: \n * `request.provider.options.pareto_alpha` **Added**\n" +releaseNotes: | + ## Python SDK Changes: + * `open_router.interns.get_intern_icon()`: `response.status[200]` **Changed** (Breaking ⚠️) + * `open_router.external_users.list()`: **Added** + * `open_router.external_users.create()`: **Added** + * `open_router.external_users.delete()`: **Added** + * `open_router.external_users.get()`: **Added** + * `open_router.external_users.update()`: **Added** + * `open_router.end_users.list()`: **Removed** (Breaking ⚠️) + * `open_router.end_users.create()`: **Removed** (Breaking ⚠️) + * `open_router.end_users.delete()`: **Removed** (Breaking ⚠️) + * `open_router.end_users.get()`: **Removed** (Breaking ⚠️) + * `open_router.end_users.update()`: **Removed** (Breaking ⚠️) diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 62aaaea64..7bbfd735f 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -36,7 +36,7 @@ generation: documentation: mintlify preApplyUnionDiscriminators: true python: - version: 1.3.69 + version: 1.3.70 additionalDependencies: dev: {} main: {} diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml index 500eb7c7a..f5915ad75 100644 --- a/.speakeasy/out.openapi.yaml +++ b/.speakeasy/out.openapi.yaml @@ -9802,7 +9802,7 @@ components: - 'response' - 'sequence_number' type: 'object' - CreateEndUserRequest: + CreateExternalUserRequest: additionalProperties: false example: user: 'employee_123' @@ -11475,7 +11475,40 @@ components: example: 0 type: 'integer' x-speakeasy-unknown-values: allow - EndUser: + EnumCapability: + description: 'A parameter that accepts one of a discrete set of string values.' + example: + type: 'enum' + values: + - '1K' + - '2K' + - '4K' + properties: + type: + enum: + - 'enum' + type: 'string' + values: + items: + type: 'string' + type: 'array' + required: + - 'type' + - 'values' + type: 'object' + ErrorEvent: + allOf: + - $ref: '#/components/schemas/BaseErrorEvent' + - properties: {} + type: 'object' + description: 'Event emitted when an error occurs during streaming' + example: + code: 'rate_limit_exceeded' + message: 'Rate limit exceeded. Please try again later.' + param: null + sequence_number: 2 + type: 'error' + ExternalUser: additionalProperties: false example: created_at: '2026-09-16T12:00:00Z' @@ -11510,7 +11543,7 @@ components: - 'created_at' - 'updated_at' type: 'object' - EndUserResponse: + ExternalUserResponse: example: data: created_at: '2026-09-16T12:00:00Z' @@ -11519,43 +11552,10 @@ components: user: 'employee_123' properties: data: - $ref: '#/components/schemas/EndUser' + $ref: '#/components/schemas/ExternalUser' required: - 'data' type: 'object' - EnumCapability: - description: 'A parameter that accepts one of a discrete set of string values.' - example: - type: 'enum' - values: - - '1K' - - '2K' - - '4K' - properties: - type: - enum: - - 'enum' - type: 'string' - values: - items: - type: 'string' - type: 'array' - required: - - 'type' - - 'values' - type: 'object' - ErrorEvent: - allOf: - - $ref: '#/components/schemas/BaseErrorEvent' - - properties: {} - type: 'object' - description: 'Event emitted when an error occurs during streaming' - example: - code: 'rate_limit_exceeded' - message: 'Rate limit exceeded. Please try again later.' - param: null - sequence_number: 2 - type: 'error' FailableToolCallStatus: enum: - 'in_progress' @@ -16420,7 +16420,7 @@ components: - 'architecture' - 'endpoints' type: 'object' - ListEndUsersResponse: + ListExternalUsersResponse: example: data: - created_at: '2026-09-16T12:00:00Z' @@ -16431,7 +16431,7 @@ components: properties: data: items: - $ref: '#/components/schemas/EndUser' + $ref: '#/components/schemas/ExternalUser' type: 'array' total_count: description: 'Number of registrations matching the filters before pagination.' @@ -32531,7 +32531,7 @@ components: required: - 'data' type: 'object' - UpdateEndUserRequest: + UpdateExternalUserRequest: additionalProperties: false example: is_active: true @@ -39303,10 +39303,135 @@ paths: - $ref: "#/components/parameters/AppIdentifier" - $ref: "#/components/parameters/AppDisplayName" - $ref: "#/components/parameters/AppCategories" - /end-users: + /endpoints/zdr: + get: + operationId: 'listEndpointsZdr' + responses: + '200': + content: + application/json: + example: + data: + - context_length: 8192 + latency_last_30m: + p50: 0.25 + p75: 0.35 + p90: 0.48 + p99: 0.85 + max_completion_tokens: 4096 + max_prompt_tokens: 8192 + model_id: 'openai/gpt-4' + model_name: 'GPT-4' + name: 'OpenAI: GPT-4' + native_tools: {} + pricing: + completion: '0.00006' + image: '0' + prompt: '0.00003' + request: '0' + provider_name: 'OpenAI' + quantization: 'fp16' + status: 0 + supported_parameters: + - 'temperature' + - 'top_p' + - 'max_tokens' + supports_diarization: false + supports_image_reference: false + supports_implicit_caching: true + supports_multiple_audio_references: false + supports_voice_cloning: false + tag: 'openai' + throughput_last_30m: + p50: 45.2 + p75: 38.5 + p90: 28.3 + p99: 15.1 + uptime_last_1d: 99.8 + uptime_last_30m: 99.5 + uptime_last_5m: 100 + schema: + example: + data: + - context_length: 8192 + latency_last_30m: + p50: 0.25 + p75: 0.35 + p90: 0.48 + p99: 0.85 + max_completion_tokens: 4096 + max_prompt_tokens: 8192 + model_id: 'openai/gpt-4' + model_name: 'GPT-4' + name: 'OpenAI: GPT-4' + native_tools: {} + pricing: + completion: '0.00006' + image: '0' + prompt: '0.00003' + request: '0' + provider_name: 'OpenAI' + quantization: 'fp16' + status: 0 + supported_parameters: + - 'temperature' + - 'top_p' + - 'max_tokens' + supports_diarization: false + supports_image_reference: false + supports_implicit_caching: true + supports_multiple_audio_references: false + supports_voice_cloning: false + tag: 'openai' + throughput_last_30m: + p50: 45.2 + p75: 38.5 + p90: 28.3 + p99: 15.1 + uptime_last_1d: 99.8 + uptime_last_30m: 99.5 + uptime_last_5m: 100 + properties: + data: + items: + $ref: '#/components/schemas/PublicEndpoint' + type: 'array' + required: + - 'data' + type: 'object' + description: 'Returns a list of endpoints' + '403': + content: + application/json: + example: + error: + code: 403 + message: 'Only management keys can perform this operation' + schema: + $ref: '#/components/schemas/ForbiddenResponse' + description: 'Forbidden - Authentication successful but insufficient permissions' + '500': + content: + application/json: + example: + error: + code: 500 + message: 'Internal Server Error' + schema: + $ref: '#/components/schemas/InternalServerResponse' + description: 'Internal Server Error - Unexpected server error' + summary: 'Preview the impact of ZDR on the available endpoints' + tags: + - 'Endpoints' + x-speakeasy-name-override: 'listZdrEndpoints' + parameters: + - $ref: "#/components/parameters/AppIdentifier" + - $ref: "#/components/parameters/AppDisplayName" + - $ref: "#/components/parameters/AppCategories" + /external-users: get: description: 'List registrations belonging to the authenticated organization. Inactive registrations are excluded by default. [Management key](/docs/guides/overview/auth/management-api-keys) required.' - operationId: 'listEndUsers' + operationId: 'listExternalUsers' parameters: - description: 'Number of records to skip for pagination' in: 'query' @@ -39364,7 +39489,7 @@ paths: user: 'employee_123' total_count: 1 schema: - $ref: '#/components/schemas/ListEndUsersResponse' + $ref: '#/components/schemas/ListExternalUsersResponse' description: 'Matching registrations and their total count.' '400': content: @@ -39406,9 +39531,10 @@ paths: schema: $ref: '#/components/schemas/InternalServerResponse' description: 'Internal Server Error - Unexpected server error' - summary: 'List registered end users' + summary: 'List registered external users' tags: - - 'End Users' + - 'External Users' + x-speakeasy-group: 'externalUsers' x-speakeasy-name-override: 'list' x-speakeasy-pagination: inputs: @@ -39423,14 +39549,14 @@ paths: type: 'offsetLimit' post: description: 'Register a caller-supplied tracking ID under the authenticated organization. No login account, policy, or credentials are created. [Management key](/docs/guides/overview/auth/management-api-keys) required.' - operationId: 'createEndUser' + operationId: 'createExternalUser' requestBody: content: application/json: example: user: 'employee_123' schema: - $ref: '#/components/schemas/CreateEndUserRequest' + $ref: '#/components/schemas/CreateExternalUserRequest' required: true responses: '201': @@ -39443,8 +39569,8 @@ paths: updated_at: '2026-09-16T12:00:00Z' user: 'employee_123' schema: - $ref: '#/components/schemas/EndUserResponse' - description: 'The registered end user. No generated public identifier is returned.' + $ref: '#/components/schemas/ExternalUserResponse' + description: 'The registered external user. No generated public identifier is returned.' '400': content: application/json: @@ -39495,18 +39621,19 @@ paths: schema: $ref: '#/components/schemas/InternalServerResponse' description: 'Internal Server Error - Unexpected server error' - summary: 'Register an end user' + summary: 'Register an external user' tags: - - 'End Users' + - 'External Users' + x-speakeasy-group: 'externalUsers' x-speakeasy-name-override: 'create' parameters: - $ref: "#/components/parameters/AppIdentifier" - $ref: "#/components/parameters/AppDisplayName" - $ref: "#/components/parameters/AppCategories" - /end-users/{user}: + /external-users/{user}: delete: description: 'Soft-deactivate a registration while retaining its tracking ID. Repeat deactivation succeeds. This does not block inference; reactivate through PATCH. [Management key](/docs/guides/overview/auth/management-api-keys) required.' - operationId: 'deleteEndUser' + operationId: 'deleteExternalUser' parameters: - description: 'Immutable case-sensitive tracking string supplied as user on inference requests or as external.user on API keys: 1 to 512 characters, well-formed Unicode, no NUL, no surrounding whitespace. URL-encode it in resource paths; an ID of `.` or `..` cannot be addressed by path, so look it up with the list filter.' in: 'path' @@ -39562,13 +39689,14 @@ paths: schema: $ref: '#/components/schemas/InternalServerResponse' description: 'Internal Server Error - Unexpected server error' - summary: 'Deactivate a registered end user' + summary: 'Deactivate a registered external user' tags: - - 'End Users' + - 'External Users' + x-speakeasy-group: 'externalUsers' x-speakeasy-name-override: 'delete' get: description: 'Retrieve an active or inactive registration by its URL-encoded, caller-supplied tracking ID. [Management key](/docs/guides/overview/auth/management-api-keys) required.' - operationId: 'getEndUser' + operationId: 'getExternalUser' parameters: - description: 'Immutable case-sensitive tracking string supplied as user on inference requests or as external.user on API keys: 1 to 512 characters, well-formed Unicode, no NUL, no surrounding whitespace. URL-encode it in resource paths; an ID of `.` or `..` cannot be addressed by path, so look it up with the list filter.' in: 'path' @@ -39592,8 +39720,8 @@ paths: updated_at: '2026-09-16T12:00:00Z' user: 'employee_123' schema: - $ref: '#/components/schemas/EndUserResponse' - description: 'The registered end user. No generated public identifier is returned.' + $ref: '#/components/schemas/ExternalUserResponse' + description: 'The registered external user. No generated public identifier is returned.' '400': content: application/json: @@ -39634,13 +39762,14 @@ paths: schema: $ref: '#/components/schemas/InternalServerResponse' description: 'Internal Server Error - Unexpected server error' - summary: 'Get a registered end user' + summary: 'Get a registered external user' tags: - - 'End Users' + - 'External Users' + x-speakeasy-group: 'externalUsers' x-speakeasy-name-override: 'get' patch: description: 'Update registration state without changing identity. State changes do not enforce inference access. [Management key](/docs/guides/overview/auth/management-api-keys) required.' - operationId: 'updateEndUser' + operationId: 'updateExternalUser' parameters: - description: 'Immutable case-sensitive tracking string supplied as user on inference requests or as external.user on API keys: 1 to 512 characters, well-formed Unicode, no NUL, no surrounding whitespace. URL-encode it in resource paths; an ID of `.` or `..` cannot be addressed by path, so look it up with the list filter.' in: 'path' @@ -39659,7 +39788,7 @@ paths: example: is_active: true schema: - $ref: '#/components/schemas/UpdateEndUserRequest' + $ref: '#/components/schemas/UpdateExternalUserRequest' required: true responses: '200': @@ -39672,8 +39801,8 @@ paths: updated_at: '2026-09-16T12:00:00Z' user: 'employee_123' schema: - $ref: '#/components/schemas/EndUserResponse' - description: 'The registered end user. No generated public identifier is returned.' + $ref: '#/components/schemas/ExternalUserResponse' + description: 'The registered external user. No generated public identifier is returned.' '400': content: application/json: @@ -39714,139 +39843,15 @@ paths: schema: $ref: '#/components/schemas/InternalServerResponse' description: 'Internal Server Error - Unexpected server error' - summary: 'Update a registered end user' + summary: 'Update a registered external user' tags: - - 'End Users' + - 'External Users' + x-speakeasy-group: 'externalUsers' x-speakeasy-name-override: 'update' parameters: - $ref: "#/components/parameters/AppIdentifier" - $ref: "#/components/parameters/AppDisplayName" - $ref: "#/components/parameters/AppCategories" - /endpoints/zdr: - get: - operationId: 'listEndpointsZdr' - responses: - '200': - content: - application/json: - example: - data: - - context_length: 8192 - latency_last_30m: - p50: 0.25 - p75: 0.35 - p90: 0.48 - p99: 0.85 - max_completion_tokens: 4096 - max_prompt_tokens: 8192 - model_id: 'openai/gpt-4' - model_name: 'GPT-4' - name: 'OpenAI: GPT-4' - native_tools: {} - pricing: - completion: '0.00006' - image: '0' - prompt: '0.00003' - request: '0' - provider_name: 'OpenAI' - quantization: 'fp16' - status: 0 - supported_parameters: - - 'temperature' - - 'top_p' - - 'max_tokens' - supports_diarization: false - supports_image_reference: false - supports_implicit_caching: true - supports_multiple_audio_references: false - supports_voice_cloning: false - tag: 'openai' - throughput_last_30m: - p50: 45.2 - p75: 38.5 - p90: 28.3 - p99: 15.1 - uptime_last_1d: 99.8 - uptime_last_30m: 99.5 - uptime_last_5m: 100 - schema: - example: - data: - - context_length: 8192 - latency_last_30m: - p50: 0.25 - p75: 0.35 - p90: 0.48 - p99: 0.85 - max_completion_tokens: 4096 - max_prompt_tokens: 8192 - model_id: 'openai/gpt-4' - model_name: 'GPT-4' - name: 'OpenAI: GPT-4' - native_tools: {} - pricing: - completion: '0.00006' - image: '0' - prompt: '0.00003' - request: '0' - provider_name: 'OpenAI' - quantization: 'fp16' - status: 0 - supported_parameters: - - 'temperature' - - 'top_p' - - 'max_tokens' - supports_diarization: false - supports_image_reference: false - supports_implicit_caching: true - supports_multiple_audio_references: false - supports_voice_cloning: false - tag: 'openai' - throughput_last_30m: - p50: 45.2 - p75: 38.5 - p90: 28.3 - p99: 15.1 - uptime_last_1d: 99.8 - uptime_last_30m: 99.5 - uptime_last_5m: 100 - properties: - data: - items: - $ref: '#/components/schemas/PublicEndpoint' - type: 'array' - required: - - 'data' - type: 'object' - description: 'Returns a list of endpoints' - '403': - content: - application/json: - example: - error: - code: 403 - message: 'Only management keys can perform this operation' - schema: - $ref: '#/components/schemas/ForbiddenResponse' - description: 'Forbidden - Authentication successful but insufficient permissions' - '500': - content: - application/json: - example: - error: - code: 500 - message: 'Internal Server Error' - schema: - $ref: '#/components/schemas/InternalServerResponse' - description: 'Internal Server Error - Unexpected server error' - summary: 'Preview the impact of ZDR on the available endpoints' - tags: - - 'Endpoints' - x-speakeasy-name-override: 'listZdrEndpoints' - parameters: - - $ref: "#/components/parameters/AppIdentifier" - - $ref: "#/components/parameters/AppDisplayName" - - $ref: "#/components/parameters/AppCategories" /files: get: description: 'Lists files belonging to the workspace of the authenticating API key.' @@ -43998,11 +44003,7 @@ paths: responses: '200': content: - image/jpeg: - schema: - format: 'binary' - type: 'string' - image/png: + image/*: schema: format: 'binary' type: 'string' @@ -55781,10 +55782,10 @@ tags: name: 'Datasets' - description: 'Text embedding endpoints' name: 'Embeddings' - - description: 'End Users endpoints' - name: 'End Users' - description: 'Endpoint information' name: 'Endpoints' + - description: 'External Users endpoints' + name: 'External Users' - description: 'Files endpoints' name: 'Files' - description: 'Generation history endpoints' diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index acc366213..394d4cc5e 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -2,8 +2,8 @@ speakeasyVersion: 1.787.0 sources: OpenRouter API: sourceNamespace: open-router-chat-completions-api - sourceRevisionDigest: sha256:7b0d48cf80fb03ac7d850f6d6330f29bebc0d5eea023dba9580e660ab9788625 - sourceBlobDigest: sha256:a7d36ffe55962e0d80e330896e8e2c7470461016f61b94825a5e3264ed3ed7fa + sourceRevisionDigest: sha256:165916283a5cbb0d4988e849d7a8e21a08e9d50b07f9b561bfc5d96fe1c14ad2 + sourceBlobDigest: sha256:6890fba3c45c0f1234267a16495eb8f5235672cf8abe93dfb2b4662cc60e2b51 tags: - latest - 1.0.0 @@ -11,10 +11,10 @@ targets: open-router: source: OpenRouter API sourceNamespace: open-router-chat-completions-api - sourceRevisionDigest: sha256:7b0d48cf80fb03ac7d850f6d6330f29bebc0d5eea023dba9580e660ab9788625 - sourceBlobDigest: sha256:a7d36ffe55962e0d80e330896e8e2c7470461016f61b94825a5e3264ed3ed7fa + sourceRevisionDigest: sha256:165916283a5cbb0d4988e849d7a8e21a08e9d50b07f9b561bfc5d96fe1c14ad2 + sourceBlobDigest: sha256:6890fba3c45c0f1234267a16495eb8f5235672cf8abe93dfb2b4662cc60e2b51 codeSamplesNamespace: open-router-python-code-samples - codeSamplesRevisionDigest: sha256:2c6c4fb7370332afb86625319c14fd17ce2701b5e3cb3ff53e267ddd8369361a + codeSamplesRevisionDigest: sha256:3d0c5934a586cb687dd5a20aa57dc19db61a33ee564b132adb55c34c33012bea workflow: workflowVersion: 1.0.0 speakeasyVersion: 1.787.0 diff --git a/RELEASES.md b/RELEASES.md index ff31857e3..25235c4f3 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -3459,4 +3459,14 @@ Based on: ### Generated - [python v1.3.69] . ### Releases -- [PyPI v1.3.69] https://pypi.org/project/openrouter/1.3.69 - . \ No newline at end of file +- [PyPI v1.3.69] https://pypi.org/project/openrouter/1.3.69 - . + +## 2026-10-21 00:05:43 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v1.3.70] . +### Releases +- [PyPI v1.3.70] https://pypi.org/project/openrouter/1.3.70 - . \ No newline at end of file diff --git a/docs/components/createenduserrequest.mdx b/docs/components/createexternaluserrequest.mdx similarity index 99% rename from docs/components/createenduserrequest.mdx rename to docs/components/createexternaluserrequest.mdx index b81900546..4cfbd20c9 100644 --- a/docs/components/createenduserrequest.mdx +++ b/docs/components/createexternaluserrequest.mdx @@ -1,5 +1,5 @@ --- -title: "CreateEndUserRequest" +title: "CreateExternalUserRequest" --- ## Fields diff --git a/docs/components/enduser.mdx b/docs/components/externaluser.mdx similarity index 99% rename from docs/components/enduser.mdx rename to docs/components/externaluser.mdx index 0a7c59d64..565dbd7cd 100644 --- a/docs/components/enduser.mdx +++ b/docs/components/externaluser.mdx @@ -1,5 +1,5 @@ --- -title: "EndUser" +title: "ExternalUser" --- ## Fields diff --git a/docs/components/enduserresponse.mdx b/docs/components/externaluserresponse.mdx similarity index 95% rename from docs/components/enduserresponse.mdx rename to docs/components/externaluserresponse.mdx index 027565ed6..521e18164 100644 --- a/docs/components/enduserresponse.mdx +++ b/docs/components/externaluserresponse.mdx @@ -1,9 +1,9 @@ --- -title: "EndUserResponse" +title: "ExternalUserResponse" --- ## Fields | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | -| `data` | [components.EndUser](../components/enduser.mdx) | ✅ | N/A | \{
"created_at": "2026-09-16T12:00:00Z",
"is_active": true,
"updated_at": "2026-09-16T12:00:00Z",
"user": "employee_123"
} | \ No newline at end of file +| `data` | [components.ExternalUser](../components/externaluser.mdx) | ✅ | N/A | \{
"created_at": "2026-09-16T12:00:00Z",
"is_active": true,
"updated_at": "2026-09-16T12:00:00Z",
"user": "employee_123"
} | \ No newline at end of file diff --git a/docs/components/listendusersresponse.mdx b/docs/components/listexternalusersresponse.mdx similarity index 87% rename from docs/components/listendusersresponse.mdx rename to docs/components/listexternalusersresponse.mdx index 0ba987a1d..144af24df 100644 --- a/docs/components/listendusersresponse.mdx +++ b/docs/components/listexternalusersresponse.mdx @@ -1,10 +1,10 @@ --- -title: "ListEndUsersResponse" +title: "ListExternalUsersResponse" --- ## Fields | Field | Type | Required | Description | Example | | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | --------------------------------------------------------------- | -| `data` | List[[components.EndUser](../components/enduser.mdx)] | ✅ | N/A | | +| `data` | List[[components.ExternalUser](../components/externaluser.mdx)] | ✅ | N/A | | | `total_count` | *int* | ✅ | Number of registrations matching the filters before pagination. | 1 | \ No newline at end of file diff --git a/docs/components/updateenduserrequest.mdx b/docs/components/updateexternaluserrequest.mdx similarity index 96% rename from docs/components/updateenduserrequest.mdx rename to docs/components/updateexternaluserrequest.mdx index 4454ea375..04f5bae91 100644 --- a/docs/components/updateenduserrequest.mdx +++ b/docs/components/updateexternaluserrequest.mdx @@ -1,5 +1,5 @@ --- -title: "UpdateEndUserRequest" +title: "UpdateExternalUserRequest" --- ## Fields diff --git a/docs/docs.json b/docs/docs.json index 184dd7de1..59526025f 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -24,7 +24,7 @@ "sdks/decisions/README", "sdks/embeddings/README", "sdks/endpoints/README", - "sdks/endusers/README", + "sdks/externalusers/README", "sdks/files/README", "sdks/generations/README", "sdks/guardrails/README", diff --git a/docs/operations/deleteenduserglobals.mdx b/docs/operations/createexternaluserglobals.mdx similarity index 98% rename from docs/operations/deleteenduserglobals.mdx rename to docs/operations/createexternaluserglobals.mdx index 82a6d0230..44bd10557 100644 --- a/docs/operations/deleteenduserglobals.mdx +++ b/docs/operations/createexternaluserglobals.mdx @@ -1,5 +1,5 @@ --- -title: "DeleteEndUserGlobals" +title: "CreateExternalUserGlobals" --- ## Fields diff --git a/docs/operations/createenduserrequest.mdx b/docs/operations/createexternaluserrequest.mdx similarity index 94% rename from docs/operations/createenduserrequest.mdx rename to docs/operations/createexternaluserrequest.mdx index 90a760679..f03cf29b7 100644 --- a/docs/operations/createenduserrequest.mdx +++ b/docs/operations/createexternaluserrequest.mdx @@ -1,5 +1,5 @@ --- -title: "CreateEndUserRequest" +title: "CreateExternalUserRequest" --- ## Fields @@ -9,4 +9,4 @@ title: "CreateEndUserRequest" | `http_referer` | *Optional[str]* | ➖ | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| | | `x_open_router_title` | *Optional[str]* | ➖ | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | ➖ | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | -| `create_end_user_request` | [components.CreateEndUserRequest](../components/createenduserrequest.mdx) | ✅ | N/A | \{
"user": "employee_123"
} | \ No newline at end of file +| `create_external_user_request` | [components.CreateExternalUserRequest](../components/createexternaluserrequest.mdx) | ✅ | N/A | \{
"user": "employee_123"
} | \ No newline at end of file diff --git a/docs/operations/listendusersglobals.mdx b/docs/operations/deleteexternaluserglobals.mdx similarity index 98% rename from docs/operations/listendusersglobals.mdx rename to docs/operations/deleteexternaluserglobals.mdx index e4ece3f6e..90b1518f0 100644 --- a/docs/operations/listendusersglobals.mdx +++ b/docs/operations/deleteexternaluserglobals.mdx @@ -1,5 +1,5 @@ --- -title: "ListEndUsersGlobals" +title: "DeleteExternalUserGlobals" --- ## Fields diff --git a/docs/operations/getenduserrequest.mdx b/docs/operations/deleteexternaluserrequest.mdx similarity index 99% rename from docs/operations/getenduserrequest.mdx rename to docs/operations/deleteexternaluserrequest.mdx index 51b72505b..f900fced9 100644 --- a/docs/operations/getenduserrequest.mdx +++ b/docs/operations/deleteexternaluserrequest.mdx @@ -1,5 +1,5 @@ --- -title: "GetEndUserRequest" +title: "DeleteExternalUserRequest" --- ## Fields diff --git a/docs/operations/getenduserglobals.mdx b/docs/operations/getexternaluserglobals.mdx similarity index 98% rename from docs/operations/getenduserglobals.mdx rename to docs/operations/getexternaluserglobals.mdx index 2b3180e07..465f92d3b 100644 --- a/docs/operations/getenduserglobals.mdx +++ b/docs/operations/getexternaluserglobals.mdx @@ -1,5 +1,5 @@ --- -title: "GetEndUserGlobals" +title: "GetExternalUserGlobals" --- ## Fields diff --git a/docs/operations/deleteenduserrequest.mdx b/docs/operations/getexternaluserrequest.mdx similarity index 99% rename from docs/operations/deleteenduserrequest.mdx rename to docs/operations/getexternaluserrequest.mdx index d26781bef..ccfd1518d 100644 --- a/docs/operations/deleteenduserrequest.mdx +++ b/docs/operations/getexternaluserrequest.mdx @@ -1,5 +1,5 @@ --- -title: "DeleteEndUserRequest" +title: "GetExternalUserRequest" --- ## Fields diff --git a/docs/operations/getinterniconresponse.mdx b/docs/operations/getinterniconresponse.mdx deleted file mode 100644 index 24a2ce724..000000000 --- a/docs/operations/getinterniconresponse.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "GetInternIconResponse" ---- - -## Supported Types - -### `httpx.Response` - -```python -value: httpx.Response = /* values here */ -``` - -### `httpx.Response` - -```python -value: httpx.Response = /* values here */ -``` - diff --git a/docs/operations/createenduserglobals.mdx b/docs/operations/listexternalusersglobals.mdx similarity index 98% rename from docs/operations/createenduserglobals.mdx rename to docs/operations/listexternalusersglobals.mdx index e889ab3a4..2509c2e13 100644 --- a/docs/operations/createenduserglobals.mdx +++ b/docs/operations/listexternalusersglobals.mdx @@ -1,5 +1,5 @@ --- -title: "CreateEndUserGlobals" +title: "ListExternalUsersGlobals" --- ## Fields diff --git a/docs/operations/listendusersrequest.mdx b/docs/operations/listexternalusersrequest.mdx similarity index 99% rename from docs/operations/listendusersrequest.mdx rename to docs/operations/listexternalusersrequest.mdx index 838bc726f..2faf90d52 100644 --- a/docs/operations/listendusersrequest.mdx +++ b/docs/operations/listexternalusersrequest.mdx @@ -1,5 +1,5 @@ --- -title: "ListEndUsersRequest" +title: "ListExternalUsersRequest" --- ## Fields diff --git a/docs/operations/listendusersresponse.mdx b/docs/operations/listexternalusersresponse.mdx similarity index 93% rename from docs/operations/listendusersresponse.mdx rename to docs/operations/listexternalusersresponse.mdx index e110c2df2..3614f0238 100644 --- a/docs/operations/listendusersresponse.mdx +++ b/docs/operations/listexternalusersresponse.mdx @@ -1,9 +1,9 @@ --- -title: "ListEndUsersResponse" +title: "ListExternalUsersResponse" --- ## Fields | Field | Type | Required | Description | Example | | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `result` | [components.ListEndUsersResponse](../components/listendusersresponse.mdx) | ✅ | N/A | \{
"data": [
\{
"created_at": "2026-09-16T12:00:00Z",
"is_active": true,
"updated_at": "2026-09-16T12:00:00Z",
"user": "employee_123"
}
],
"total_count": 1
} | \ No newline at end of file +| `result` | [components.ListExternalUsersResponse](../components/listexternalusersresponse.mdx) | ✅ | N/A | \{
"data": [
\{
"created_at": "2026-09-16T12:00:00Z",
"is_active": true,
"updated_at": "2026-09-16T12:00:00Z",
"user": "employee_123"
}
],
"total_count": 1
} | \ No newline at end of file diff --git a/docs/operations/updateenduserglobals.mdx b/docs/operations/updateenduserglobals.mdx deleted file mode 100644 index f0004a028..000000000 --- a/docs/operations/updateenduserglobals.mdx +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "UpdateEndUserGlobals" ---- - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `http_referer` | *Optional[str]* | ➖ | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| -| `x_open_router_title` | *Optional[str]* | ➖ | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| -| `x_open_router_categories` | *Optional[str]* | ➖ | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/updateexternaluserglobals.mdx b/docs/operations/updateexternaluserglobals.mdx new file mode 100644 index 000000000..89c880892 --- /dev/null +++ b/docs/operations/updateexternaluserglobals.mdx @@ -0,0 +1,11 @@ +--- +title: "UpdateExternalUserGlobals" +--- + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | +| `http_referer` | *Optional[str]* | ➖ | The app identifier should be your app's URL and is used as the primary identifier for rankings.
This is used to track API usage per application.
| +| `x_open_router_title` | *Optional[str]* | ➖ | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| +| `x_open_router_categories` | *Optional[str]* | ➖ | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| \ No newline at end of file diff --git a/docs/operations/updateenduserrequest.mdx b/docs/operations/updateexternaluserrequest.mdx similarity index 97% rename from docs/operations/updateenduserrequest.mdx rename to docs/operations/updateexternaluserrequest.mdx index 76b7792cf..2b40e10c8 100644 --- a/docs/operations/updateenduserrequest.mdx +++ b/docs/operations/updateexternaluserrequest.mdx @@ -1,5 +1,5 @@ --- -title: "UpdateEndUserRequest" +title: "UpdateExternalUserRequest" --- ## Fields @@ -10,4 +10,4 @@ title: "UpdateEndUserRequest" | `x_open_router_title` | *Optional[str]* | ➖ | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| | | `x_open_router_categories` | *Optional[str]* | ➖ | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| | | `user` | *str* | ✅ | Immutable case-sensitive tracking string supplied as user on inference requests or as external.user on API keys: 1 to 512 characters, well-formed Unicode, no NUL, no surrounding whitespace. URL-encode it in resource paths; an ID of `.` or `..` cannot be addressed by path, so look it up with the list filter. | employee_123 | -| `update_end_user_request` | [components.UpdateEndUserRequest](../components/updateenduserrequest.mdx) | ✅ | N/A | \{
"is_active": true
} | \ No newline at end of file +| `update_external_user_request` | [components.UpdateExternalUserRequest](../components/updateexternaluserrequest.mdx) | ✅ | N/A | \{
"is_active": true
} | \ No newline at end of file diff --git a/docs/sdks/endusers/README.mdx b/docs/sdks/externalusers/README.mdx similarity index 98% rename from docs/sdks/endusers/README.mdx rename to docs/sdks/externalusers/README.mdx index c9513be85..560657f9b 100644 --- a/docs/sdks/endusers/README.mdx +++ b/docs/sdks/externalusers/README.mdx @@ -1,19 +1,16 @@ --- -title: "EndUsers" -description: "End Users endpoints" +title: "ExternalUsers" --- ## Overview -End Users endpoints - ### Available Operations -* [list](#list) - List registered end users -* [create](#create) - Register an end user -* [delete](#delete) - Deactivate a registered end user -* [get](#get) - Get a registered end user -* [update](#update) - Update a registered end user +* [list](#list) - List registered external users +* [create](#create) - Register an external user +* [delete](#delete) - Deactivate a registered external user +* [get](#get) - Get a registered external user +* [update](#update) - Update a registered external user ## list @@ -33,7 +30,7 @@ with OpenRouter( api_key=os.getenv("OPENROUTER_API_KEY", ""), ) as open_router: - res = open_router.end_users.list(offset=0, limit=50, include_inactive=False) + res = open_router.external_users.list(offset=0, limit=50, include_inactive=False) while res is not None: # Handle items @@ -57,7 +54,7 @@ with OpenRouter( ### Response -**[operations.ListEndUsersResponse](../../operations/listendusersresponse.mdx)** +**[operations.ListExternalUsersResponse](../../operations/listexternalusersresponse.mdx)** ### Errors @@ -87,7 +84,7 @@ with OpenRouter( api_key=os.getenv("OPENROUTER_API_KEY", ""), ) as open_router: - res = open_router.end_users.create(user="employee_123") + res = open_router.external_users.create(user="employee_123") # Handle response print(res) @@ -106,7 +103,7 @@ with OpenRouter( ### Response -**[components.EndUserResponse](../../components/enduserresponse.mdx)** +**[components.ExternalUserResponse](../../components/externaluserresponse.mdx)** ### Errors @@ -137,7 +134,7 @@ with OpenRouter( api_key=os.getenv("OPENROUTER_API_KEY", ""), ) as open_router: - open_router.end_users.delete(user="employee_123") + open_router.external_users.delete(user="employee_123") # Use the SDK ... @@ -181,7 +178,7 @@ with OpenRouter( api_key=os.getenv("OPENROUTER_API_KEY", ""), ) as open_router: - res = open_router.end_users.get(user="employee_123") + res = open_router.external_users.get(user="employee_123") # Handle response print(res) @@ -200,7 +197,7 @@ with OpenRouter( ### Response -**[components.EndUserResponse](../../components/enduserresponse.mdx)** +**[components.ExternalUserResponse](../../components/externaluserresponse.mdx)** ### Errors @@ -230,7 +227,7 @@ with OpenRouter( api_key=os.getenv("OPENROUTER_API_KEY", ""), ) as open_router: - res = open_router.end_users.update(user="employee_123", is_active=True) + res = open_router.external_users.update(user="employee_123", is_active=True) # Handle response print(res) @@ -250,7 +247,7 @@ with OpenRouter( ### Response -**[components.EndUserResponse](../../components/enduserresponse.mdx)** +**[components.ExternalUserResponse](../../components/externaluserresponse.mdx)** ### Errors diff --git a/docs/sdks/interns/README.mdx b/docs/sdks/interns/README.mdx index 46d5db0c0..45a68eefd 100644 --- a/docs/sdks/interns/README.mdx +++ b/docs/sdks/interns/README.mdx @@ -509,7 +509,7 @@ with OpenRouter( ### Response -**[operations.GetInternIconResponse](../../operations/getinterniconresponse.mdx)** +**[httpx.Response](../../models/.mdx)** ### Errors diff --git a/pyproject.toml b/pyproject.toml index 81484e69c..f8faac553 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "openrouter" -version = "1.3.69" +version = "1.3.70" description = "Official Python Client SDK for OpenRouter." authors = [{ name = "OpenRouter" },] readme = "README-PYPI.md" diff --git a/src/openrouter/_version.py b/src/openrouter/_version.py index e987c4cbc..e233904d2 100644 --- a/src/openrouter/_version.py +++ b/src/openrouter/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "openrouter" -__version__: str = "1.3.69" +__version__: str = "1.3.70" __openapi_doc_version__: str = "1.0.0" __gen_version__: str = "2.914.0" -__user_agent__: str = "speakeasy-sdk/python 1.3.69 2.914.0 1.0.0 openrouter" +__user_agent__: str = "speakeasy-sdk/python 1.3.70 2.914.0 1.0.0 openrouter" try: if __package__ is not None: diff --git a/src/openrouter/components/__init__.py b/src/openrouter/components/__init__.py index bc3bdb912..36f891de4 100644 --- a/src/openrouter/components/__init__.py +++ b/src/openrouter/components/__init__.py @@ -1460,9 +1460,9 @@ CreateBYOKKeyResponse, CreateBYOKKeyResponseTypedDict, ) - from .createenduserrequest import ( - CreateEndUserRequest, - CreateEndUserRequestTypedDict, + from .createexternaluserrequest import ( + CreateExternalUserRequest, + CreateExternalUserRequestTypedDict, ) from .createguardrailrequest import ( CreateGuardrailRequest, @@ -1753,14 +1753,17 @@ from .endpointinfo import EndpointInfo, EndpointInfoTypedDict from .endpointsmetadata import EndpointsMetadata, EndpointsMetadataTypedDict from .endpointstatus import EndpointStatus - from .enduser import EndUser, EndUserTypedDict - from .enduserresponse import EndUserResponse, EndUserResponseTypedDict from .enumcapability import ( EnumCapability, EnumCapabilityType, EnumCapabilityTypedDict, ) from .errorevent import ErrorEvent, ErrorEventType, ErrorEventTypedDict + from .externaluser import ExternalUser, ExternalUserTypedDict + from .externaluserresponse import ( + ExternalUserResponse, + ExternalUserResponseTypedDict, + ) from .failabletoolcallstatus import FailableToolCallStatus from .filecitation import FileCitation, FileCitationType, FileCitationTypedDict from .filedeleteresponse import ( @@ -2411,9 +2414,9 @@ ListEndpointsResponse, ListEndpointsResponseTypedDict, ) - from .listendusersresponse import ( - ListEndUsersResponse, - ListEndUsersResponseTypedDict, + from .listexternalusersresponse import ( + ListExternalUsersResponse, + ListExternalUsersResponseTypedDict, ) from .listguardrailsresponse import ( ListGuardrailsResponse, @@ -4277,9 +4280,9 @@ UpdateBYOKKeyResponse, UpdateBYOKKeyResponseTypedDict, ) - from .updateenduserrequest import ( - UpdateEndUserRequest, - UpdateEndUserRequestTypedDict, + from .updateexternaluserrequest import ( + UpdateExternalUserRequest, + UpdateExternalUserRequestTypedDict, ) from .updateguardrailrequest import ( UpdateGuardrailRequest, @@ -5488,8 +5491,8 @@ "CreateBYOKKeyRequestTypedDict", "CreateBYOKKeyResponse", "CreateBYOKKeyResponseTypedDict", - "CreateEndUserRequest", - "CreateEndUserRequestTypedDict", + "CreateExternalUserRequest", + "CreateExternalUserRequestTypedDict", "CreateGuardrailRequest", "CreateGuardrailRequestTypedDict", "CreateGuardrailResponse", @@ -5680,10 +5683,6 @@ "EmbeddingTypedDict", "Embeddings", "EmbeddingsTypedDict", - "EndUser", - "EndUserResponse", - "EndUserResponseTypedDict", - "EndUserTypedDict", "Endpoint", "EndpointInfo", "EndpointInfoTypedDict", @@ -5700,6 +5699,10 @@ "ErrorEvent", "ErrorEventType", "ErrorEventTypedDict", + "ExternalUser", + "ExternalUserResponse", + "ExternalUserResponseTypedDict", + "ExternalUserTypedDict", "FailableToolCallStatus", "FailedModel", "FailedModelTypedDict", @@ -6177,10 +6180,10 @@ "LegendTypedDict", "ListBYOKKeysResponse", "ListBYOKKeysResponseTypedDict", - "ListEndUsersResponse", - "ListEndUsersResponseTypedDict", "ListEndpointsResponse", "ListEndpointsResponseTypedDict", + "ListExternalUsersResponse", + "ListExternalUsersResponseTypedDict", "ListGuardrailsResponse", "ListGuardrailsResponseTypedDict", "ListKeyAssignmentsResponse", @@ -7618,8 +7621,8 @@ "UpdateBYOKKeyRequestTypedDict", "UpdateBYOKKeyResponse", "UpdateBYOKKeyResponseTypedDict", - "UpdateEndUserRequest", - "UpdateEndUserRequestTypedDict", + "UpdateExternalUserRequest", + "UpdateExternalUserRequestTypedDict", "UpdateGuardrailRequest", "UpdateGuardrailRequestTypedDict", "UpdateGuardrailResponse", @@ -8812,8 +8815,8 @@ "CreateBYOKKeyRequestTypedDict": ".createbyokkeyrequest", "CreateBYOKKeyResponse": ".createbyokkeyresponse", "CreateBYOKKeyResponseTypedDict": ".createbyokkeyresponse", - "CreateEndUserRequest": ".createenduserrequest", - "CreateEndUserRequestTypedDict": ".createenduserrequest", + "CreateExternalUserRequest": ".createexternaluserrequest", + "CreateExternalUserRequestTypedDict": ".createexternaluserrequest", "CreateGuardrailRequest": ".createguardrailrequest", "CreateGuardrailRequestTypedDict": ".createguardrailrequest", "CreateGuardrailResponse": ".createguardrailresponse", @@ -9019,16 +9022,16 @@ "EndpointsMetadata": ".endpointsmetadata", "EndpointsMetadataTypedDict": ".endpointsmetadata", "EndpointStatus": ".endpointstatus", - "EndUser": ".enduser", - "EndUserTypedDict": ".enduser", - "EndUserResponse": ".enduserresponse", - "EndUserResponseTypedDict": ".enduserresponse", "EnumCapability": ".enumcapability", "EnumCapabilityType": ".enumcapability", "EnumCapabilityTypedDict": ".enumcapability", "ErrorEvent": ".errorevent", "ErrorEventType": ".errorevent", "ErrorEventTypedDict": ".errorevent", + "ExternalUser": ".externaluser", + "ExternalUserTypedDict": ".externaluser", + "ExternalUserResponse": ".externaluserresponse", + "ExternalUserResponseTypedDict": ".externaluserresponse", "FailableToolCallStatus": ".failabletoolcallstatus", "FileCitation": ".filecitation", "FileCitationType": ".filecitation", @@ -9503,8 +9506,8 @@ "ArchitectureTypedDict": ".listendpointsresponse", "ListEndpointsResponse": ".listendpointsresponse", "ListEndpointsResponseTypedDict": ".listendpointsresponse", - "ListEndUsersResponse": ".listendusersresponse", - "ListEndUsersResponseTypedDict": ".listendusersresponse", + "ListExternalUsersResponse": ".listexternalusersresponse", + "ListExternalUsersResponseTypedDict": ".listexternalusersresponse", "ListGuardrailsResponse": ".listguardrailsresponse", "ListGuardrailsResponseTypedDict": ".listguardrailsresponse", "ListKeyAssignmentsResponse": ".listkeyassignmentsresponse", @@ -10908,8 +10911,8 @@ "UpdateBYOKKeyRequestTypedDict": ".updatebyokkeyrequest", "UpdateBYOKKeyResponse": ".updatebyokkeyresponse", "UpdateBYOKKeyResponseTypedDict": ".updatebyokkeyresponse", - "UpdateEndUserRequest": ".updateenduserrequest", - "UpdateEndUserRequestTypedDict": ".updateenduserrequest", + "UpdateExternalUserRequest": ".updateexternaluserrequest", + "UpdateExternalUserRequestTypedDict": ".updateexternaluserrequest", "UpdateGuardrailRequest": ".updateguardrailrequest", "UpdateGuardrailRequestTypedDict": ".updateguardrailrequest", "UpdateGuardrailResponse": ".updateguardrailresponse", diff --git a/src/openrouter/components/createenduserrequest.py b/src/openrouter/components/createexternaluserrequest.py similarity index 89% rename from src/openrouter/components/createenduserrequest.py rename to src/openrouter/components/createexternaluserrequest.py index be0ce3784..c575c3dbc 100644 --- a/src/openrouter/components/createenduserrequest.py +++ b/src/openrouter/components/createexternaluserrequest.py @@ -5,11 +5,11 @@ from typing_extensions import TypedDict -class CreateEndUserRequestTypedDict(TypedDict): +class CreateExternalUserRequestTypedDict(TypedDict): user: str r"""Immutable case-sensitive tracking string supplied as user on inference requests or as external.user on API keys: 1 to 512 characters, well-formed Unicode, no NUL, no surrounding whitespace. URL-encode it in resource paths; an ID of `.` or `..` cannot be addressed by path, so look it up with the list filter.""" -class CreateEndUserRequest(BaseModel): +class CreateExternalUserRequest(BaseModel): user: str r"""Immutable case-sensitive tracking string supplied as user on inference requests or as external.user on API keys: 1 to 512 characters, well-formed Unicode, no NUL, no surrounding whitespace. URL-encode it in resource paths; an ID of `.` or `..` cannot be addressed by path, so look it up with the list filter.""" diff --git a/src/openrouter/components/enduserresponse.py b/src/openrouter/components/enduserresponse.py deleted file mode 100644 index 04707ad9a..000000000 --- a/src/openrouter/components/enduserresponse.py +++ /dev/null @@ -1,14 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .enduser import EndUser, EndUserTypedDict -from openrouter.types import BaseModel -from typing_extensions import TypedDict - - -class EndUserResponseTypedDict(TypedDict): - data: EndUserTypedDict - - -class EndUserResponse(BaseModel): - data: EndUser diff --git a/src/openrouter/components/enduser.py b/src/openrouter/components/externaluser.py similarity index 95% rename from src/openrouter/components/enduser.py rename to src/openrouter/components/externaluser.py index 8fb0d41a1..c9a7bfa7c 100644 --- a/src/openrouter/components/enduser.py +++ b/src/openrouter/components/externaluser.py @@ -6,7 +6,7 @@ from typing_extensions import TypedDict -class EndUserTypedDict(TypedDict): +class ExternalUserTypedDict(TypedDict): created_at: datetime r"""Registration creation time.""" is_active: bool @@ -17,7 +17,7 @@ class EndUserTypedDict(TypedDict): r"""Immutable case-sensitive tracking string supplied as user on inference requests or as external.user on API keys: 1 to 512 characters, well-formed Unicode, no NUL, no surrounding whitespace. URL-encode it in resource paths; an ID of `.` or `..` cannot be addressed by path, so look it up with the list filter.""" -class EndUser(BaseModel): +class ExternalUser(BaseModel): created_at: datetime r"""Registration creation time.""" diff --git a/src/openrouter/components/externaluserresponse.py b/src/openrouter/components/externaluserresponse.py new file mode 100644 index 000000000..cb4e71665 --- /dev/null +++ b/src/openrouter/components/externaluserresponse.py @@ -0,0 +1,14 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .externaluser import ExternalUser, ExternalUserTypedDict +from openrouter.types import BaseModel +from typing_extensions import TypedDict + + +class ExternalUserResponseTypedDict(TypedDict): + data: ExternalUserTypedDict + + +class ExternalUserResponse(BaseModel): + data: ExternalUser diff --git a/src/openrouter/components/listendusersresponse.py b/src/openrouter/components/listexternalusersresponse.py similarity index 64% rename from src/openrouter/components/listendusersresponse.py rename to src/openrouter/components/listexternalusersresponse.py index b2fade2a3..d162c38be 100644 --- a/src/openrouter/components/listendusersresponse.py +++ b/src/openrouter/components/listexternalusersresponse.py @@ -1,20 +1,20 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from .enduser import EndUser, EndUserTypedDict +from .externaluser import ExternalUser, ExternalUserTypedDict from openrouter.types import BaseModel from typing import List from typing_extensions import TypedDict -class ListEndUsersResponseTypedDict(TypedDict): - data: List[EndUserTypedDict] +class ListExternalUsersResponseTypedDict(TypedDict): + data: List[ExternalUserTypedDict] total_count: int r"""Number of registrations matching the filters before pagination.""" -class ListEndUsersResponse(BaseModel): - data: List[EndUser] +class ListExternalUsersResponse(BaseModel): + data: List[ExternalUser] total_count: int r"""Number of registrations matching the filters before pagination.""" diff --git a/src/openrouter/components/updateenduserrequest.py b/src/openrouter/components/updateexternaluserrequest.py similarity index 79% rename from src/openrouter/components/updateenduserrequest.py rename to src/openrouter/components/updateexternaluserrequest.py index 0a8dcb3fb..012b3aadd 100644 --- a/src/openrouter/components/updateenduserrequest.py +++ b/src/openrouter/components/updateexternaluserrequest.py @@ -5,11 +5,11 @@ from typing_extensions import TypedDict -class UpdateEndUserRequestTypedDict(TypedDict): +class UpdateExternalUserRequestTypedDict(TypedDict): is_active: bool r"""Registration state only; does not enforce inference access.""" -class UpdateEndUserRequest(BaseModel): +class UpdateExternalUserRequest(BaseModel): is_active: bool r"""Registration state only; does not enforce inference access.""" diff --git a/src/openrouter/end_users.py b/src/openrouter/externalusers.py similarity index 92% rename from src/openrouter/end_users.py rename to src/openrouter/externalusers.py index 79f820633..69769bc3d 100644 --- a/src/openrouter/end_users.py +++ b/src/openrouter/externalusers.py @@ -10,9 +10,7 @@ from typing import Any, Awaitable, Dict, List, Mapping, Optional, Union -class EndUsers(BaseSDK): - r"""End Users endpoints""" - +class ExternalUsers(BaseSDK): def list( self, *, @@ -27,8 +25,8 @@ def list( server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> Optional[operations.ListEndUsersResponse]: - r"""List registered end users + ) -> Optional[operations.ListExternalUsersResponse]: + r"""List registered external users List registrations belonging to the authenticated organization. Inactive registrations are excluded by default. [Management key](/docs/guides/overview/auth/management-api-keys) required. @@ -58,7 +56,7 @@ def list( else: base_url = self._get_url(base_url, url_variables) - request = operations.ListEndUsersRequest( + request = operations.ListExternalUsersRequest( http_referer=http_referer, x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, @@ -70,7 +68,7 @@ def list( req = self._build_request( method="GET", - path="/end-users", + path="/external-users", base_url=base_url, url_variables=url_variables, request=request, @@ -80,7 +78,7 @@ def list( user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, - _globals=operations.ListEndUsersGlobals( + _globals=operations.ListExternalUsersGlobals( http_referer=self.sdk_configuration.globals.http_referer, x_open_router_title=self.sdk_configuration.globals.x_open_router_title, x_open_router_categories=self.sdk_configuration.globals.x_open_router_categories, @@ -106,12 +104,12 @@ def list( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="listEndUsers", + operation_id="listExternalUsers", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), - tags=["End Users"], + tags=["External Users"], extensions=None, ), request=req, @@ -119,7 +117,7 @@ def list( retry_config=retry_config, ) - def next_func() -> Optional[operations.ListEndUsersResponse]: + def next_func() -> Optional[operations.ListExternalUsersResponse]: body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) offset = request.offset if isinstance(request.offset, int) else 0 @@ -150,9 +148,9 @@ def next_func() -> Optional[operations.ListEndUsersResponse]: response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return operations.ListEndUsersResponse( + return operations.ListExternalUsersResponse( result=unmarshal_json_response( - components.ListEndUsersResponse, http_res + components.ListExternalUsersResponse, http_res ), next=next_func, ) @@ -203,8 +201,8 @@ async def list_async( server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> Optional[operations.ListEndUsersResponse]: - r"""List registered end users + ) -> Optional[operations.ListExternalUsersResponse]: + r"""List registered external users List registrations belonging to the authenticated organization. Inactive registrations are excluded by default. [Management key](/docs/guides/overview/auth/management-api-keys) required. @@ -234,7 +232,7 @@ async def list_async( else: base_url = self._get_url(base_url, url_variables) - request = operations.ListEndUsersRequest( + request = operations.ListExternalUsersRequest( http_referer=http_referer, x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, @@ -246,7 +244,7 @@ async def list_async( req = self._build_request_async( method="GET", - path="/end-users", + path="/external-users", base_url=base_url, url_variables=url_variables, request=request, @@ -256,7 +254,7 @@ async def list_async( user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, - _globals=operations.ListEndUsersGlobals( + _globals=operations.ListExternalUsersGlobals( http_referer=self.sdk_configuration.globals.http_referer, x_open_router_title=self.sdk_configuration.globals.x_open_router_title, x_open_router_categories=self.sdk_configuration.globals.x_open_router_categories, @@ -282,12 +280,12 @@ async def list_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="listEndUsers", + operation_id="listExternalUsers", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), - tags=["End Users"], + tags=["External Users"], extensions=None, ), request=req, @@ -295,7 +293,7 @@ async def list_async( retry_config=retry_config, ) - def next_func() -> Awaitable[Optional[operations.ListEndUsersResponse]]: + def next_func() -> Awaitable[Optional[operations.ListExternalUsersResponse]]: body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) async def empty_result(): @@ -329,9 +327,9 @@ async def empty_result(): response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return operations.ListEndUsersResponse( + return operations.ListExternalUsersResponse( result=unmarshal_json_response( - components.ListEndUsersResponse, http_res + components.ListExternalUsersResponse, http_res ), next=next_func, ) @@ -379,8 +377,8 @@ def create( server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> components.EndUserResponse: - r"""Register an end user + ) -> components.ExternalUserResponse: + r"""Register an external user Register a caller-supplied tracking ID under the authenticated organization. No login account, policy, or credentials are created. [Management key](/docs/guides/overview/auth/management-api-keys) required. @@ -407,18 +405,18 @@ def create( else: base_url = self._get_url(base_url, url_variables) - request = operations.CreateEndUserRequest( + request = operations.CreateExternalUserRequest( http_referer=http_referer, x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, - create_end_user_request=components.CreateEndUserRequest( + create_external_user_request=components.CreateExternalUserRequest( user=user, ), ) req = self._build_request( method="POST", - path="/end-users", + path="/external-users", base_url=base_url, url_variables=url_variables, request=request, @@ -428,18 +426,18 @@ def create( user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, - _globals=operations.CreateEndUserGlobals( + _globals=operations.CreateExternalUserGlobals( http_referer=self.sdk_configuration.globals.http_referer, x_open_router_title=self.sdk_configuration.globals.x_open_router_title, x_open_router_categories=self.sdk_configuration.globals.x_open_router_categories, ), security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.create_end_user_request, + request.create_external_user_request, False, False, "json", - components.CreateEndUserRequest, + components.CreateExternalUserRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -461,12 +459,12 @@ def create( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="createEndUser", + operation_id="createExternalUser", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), - tags=["End Users"], + tags=["External Users"], extensions=None, ), request=req, @@ -476,7 +474,7 @@ def create( response_data: Any = None if utils.match_response(http_res, "201", "application/json"): - return unmarshal_json_response(components.EndUserResponse, http_res) + return unmarshal_json_response(components.ExternalUserResponse, http_res) if utils.match_response(http_res, "400", "application/json"): response_data = unmarshal_json_response( errors.BadRequestResponseErrorData, http_res @@ -526,8 +524,8 @@ async def create_async( server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> components.EndUserResponse: - r"""Register an end user + ) -> components.ExternalUserResponse: + r"""Register an external user Register a caller-supplied tracking ID under the authenticated organization. No login account, policy, or credentials are created. [Management key](/docs/guides/overview/auth/management-api-keys) required. @@ -554,18 +552,18 @@ async def create_async( else: base_url = self._get_url(base_url, url_variables) - request = operations.CreateEndUserRequest( + request = operations.CreateExternalUserRequest( http_referer=http_referer, x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, - create_end_user_request=components.CreateEndUserRequest( + create_external_user_request=components.CreateExternalUserRequest( user=user, ), ) req = self._build_request_async( method="POST", - path="/end-users", + path="/external-users", base_url=base_url, url_variables=url_variables, request=request, @@ -575,18 +573,18 @@ async def create_async( user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, - _globals=operations.CreateEndUserGlobals( + _globals=operations.CreateExternalUserGlobals( http_referer=self.sdk_configuration.globals.http_referer, x_open_router_title=self.sdk_configuration.globals.x_open_router_title, x_open_router_categories=self.sdk_configuration.globals.x_open_router_categories, ), security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.create_end_user_request, + request.create_external_user_request, False, False, "json", - components.CreateEndUserRequest, + components.CreateExternalUserRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -608,12 +606,12 @@ async def create_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="createEndUser", + operation_id="createExternalUser", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), - tags=["End Users"], + tags=["External Users"], extensions=None, ), request=req, @@ -623,7 +621,7 @@ async def create_async( response_data: Any = None if utils.match_response(http_res, "201", "application/json"): - return unmarshal_json_response(components.EndUserResponse, http_res) + return unmarshal_json_response(components.ExternalUserResponse, http_res) if utils.match_response(http_res, "400", "application/json"): response_data = unmarshal_json_response( errors.BadRequestResponseErrorData, http_res @@ -674,7 +672,7 @@ def delete( timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ): - r"""Deactivate a registered end user + r"""Deactivate a registered external user Soft-deactivate a registration while retaining its tracking ID. Repeat deactivation succeeds. This does not block inference; reactivate through PATCH. [Management key](/docs/guides/overview/auth/management-api-keys) required. @@ -701,7 +699,7 @@ def delete( else: base_url = self._get_url(base_url, url_variables) - request = operations.DeleteEndUserRequest( + request = operations.DeleteExternalUserRequest( http_referer=http_referer, x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, @@ -710,7 +708,7 @@ def delete( req = self._build_request( method="DELETE", - path="/end-users/{user}", + path="/external-users/{user}", base_url=base_url, url_variables=url_variables, request=request, @@ -720,7 +718,7 @@ def delete( user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, - _globals=operations.DeleteEndUserGlobals( + _globals=operations.DeleteExternalUserGlobals( http_referer=self.sdk_configuration.globals.http_referer, x_open_router_title=self.sdk_configuration.globals.x_open_router_title, x_open_router_categories=self.sdk_configuration.globals.x_open_router_categories, @@ -746,12 +744,12 @@ def delete( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="deleteEndUser", + operation_id="deleteExternalUser", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), - tags=["End Users"], + tags=["External Users"], extensions=None, ), request=req, @@ -807,7 +805,7 @@ async def delete_async( timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ): - r"""Deactivate a registered end user + r"""Deactivate a registered external user Soft-deactivate a registration while retaining its tracking ID. Repeat deactivation succeeds. This does not block inference; reactivate through PATCH. [Management key](/docs/guides/overview/auth/management-api-keys) required. @@ -834,7 +832,7 @@ async def delete_async( else: base_url = self._get_url(base_url, url_variables) - request = operations.DeleteEndUserRequest( + request = operations.DeleteExternalUserRequest( http_referer=http_referer, x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, @@ -843,7 +841,7 @@ async def delete_async( req = self._build_request_async( method="DELETE", - path="/end-users/{user}", + path="/external-users/{user}", base_url=base_url, url_variables=url_variables, request=request, @@ -853,7 +851,7 @@ async def delete_async( user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, - _globals=operations.DeleteEndUserGlobals( + _globals=operations.DeleteExternalUserGlobals( http_referer=self.sdk_configuration.globals.http_referer, x_open_router_title=self.sdk_configuration.globals.x_open_router_title, x_open_router_categories=self.sdk_configuration.globals.x_open_router_categories, @@ -879,12 +877,12 @@ async def delete_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="deleteEndUser", + operation_id="deleteExternalUser", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), - tags=["End Users"], + tags=["External Users"], extensions=None, ), request=req, @@ -939,8 +937,8 @@ def get( server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> components.EndUserResponse: - r"""Get a registered end user + ) -> components.ExternalUserResponse: + r"""Get a registered external user Retrieve an active or inactive registration by its URL-encoded, caller-supplied tracking ID. [Management key](/docs/guides/overview/auth/management-api-keys) required. @@ -967,7 +965,7 @@ def get( else: base_url = self._get_url(base_url, url_variables) - request = operations.GetEndUserRequest( + request = operations.GetExternalUserRequest( http_referer=http_referer, x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, @@ -976,7 +974,7 @@ def get( req = self._build_request( method="GET", - path="/end-users/{user}", + path="/external-users/{user}", base_url=base_url, url_variables=url_variables, request=request, @@ -986,7 +984,7 @@ def get( user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, - _globals=operations.GetEndUserGlobals( + _globals=operations.GetExternalUserGlobals( http_referer=self.sdk_configuration.globals.http_referer, x_open_router_title=self.sdk_configuration.globals.x_open_router_title, x_open_router_categories=self.sdk_configuration.globals.x_open_router_categories, @@ -1012,12 +1010,12 @@ def get( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getEndUser", + operation_id="getExternalUser", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), - tags=["End Users"], + tags=["External Users"], extensions=None, ), request=req, @@ -1027,7 +1025,7 @@ def get( response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(components.EndUserResponse, http_res) + return unmarshal_json_response(components.ExternalUserResponse, http_res) if utils.match_response(http_res, "400", "application/json"): response_data = unmarshal_json_response( errors.BadRequestResponseErrorData, http_res @@ -1072,8 +1070,8 @@ async def get_async( server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> components.EndUserResponse: - r"""Get a registered end user + ) -> components.ExternalUserResponse: + r"""Get a registered external user Retrieve an active or inactive registration by its URL-encoded, caller-supplied tracking ID. [Management key](/docs/guides/overview/auth/management-api-keys) required. @@ -1100,7 +1098,7 @@ async def get_async( else: base_url = self._get_url(base_url, url_variables) - request = operations.GetEndUserRequest( + request = operations.GetExternalUserRequest( http_referer=http_referer, x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, @@ -1109,7 +1107,7 @@ async def get_async( req = self._build_request_async( method="GET", - path="/end-users/{user}", + path="/external-users/{user}", base_url=base_url, url_variables=url_variables, request=request, @@ -1119,7 +1117,7 @@ async def get_async( user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, - _globals=operations.GetEndUserGlobals( + _globals=operations.GetExternalUserGlobals( http_referer=self.sdk_configuration.globals.http_referer, x_open_router_title=self.sdk_configuration.globals.x_open_router_title, x_open_router_categories=self.sdk_configuration.globals.x_open_router_categories, @@ -1145,12 +1143,12 @@ async def get_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getEndUser", + operation_id="getExternalUser", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), - tags=["End Users"], + tags=["External Users"], extensions=None, ), request=req, @@ -1160,7 +1158,7 @@ async def get_async( response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(components.EndUserResponse, http_res) + return unmarshal_json_response(components.ExternalUserResponse, http_res) if utils.match_response(http_res, "400", "application/json"): response_data = unmarshal_json_response( errors.BadRequestResponseErrorData, http_res @@ -1206,8 +1204,8 @@ def update( server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> components.EndUserResponse: - r"""Update a registered end user + ) -> components.ExternalUserResponse: + r"""Update a registered external user Update registration state without changing identity. State changes do not enforce inference access. [Management key](/docs/guides/overview/auth/management-api-keys) required. @@ -1235,19 +1233,19 @@ def update( else: base_url = self._get_url(base_url, url_variables) - request = operations.UpdateEndUserRequest( + request = operations.UpdateExternalUserRequest( http_referer=http_referer, x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, user=user, - update_end_user_request=components.UpdateEndUserRequest( + update_external_user_request=components.UpdateExternalUserRequest( is_active=is_active, ), ) req = self._build_request( method="PATCH", - path="/end-users/{user}", + path="/external-users/{user}", base_url=base_url, url_variables=url_variables, request=request, @@ -1257,18 +1255,18 @@ def update( user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, - _globals=operations.UpdateEndUserGlobals( + _globals=operations.UpdateExternalUserGlobals( http_referer=self.sdk_configuration.globals.http_referer, x_open_router_title=self.sdk_configuration.globals.x_open_router_title, x_open_router_categories=self.sdk_configuration.globals.x_open_router_categories, ), security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.update_end_user_request, + request.update_external_user_request, False, False, "json", - components.UpdateEndUserRequest, + components.UpdateExternalUserRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -1290,12 +1288,12 @@ def update( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="updateEndUser", + operation_id="updateExternalUser", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), - tags=["End Users"], + tags=["External Users"], extensions=None, ), request=req, @@ -1305,7 +1303,7 @@ def update( response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(components.EndUserResponse, http_res) + return unmarshal_json_response(components.ExternalUserResponse, http_res) if utils.match_response(http_res, "400", "application/json"): response_data = unmarshal_json_response( errors.BadRequestResponseErrorData, http_res @@ -1351,8 +1349,8 @@ async def update_async( server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> components.EndUserResponse: - r"""Update a registered end user + ) -> components.ExternalUserResponse: + r"""Update a registered external user Update registration state without changing identity. State changes do not enforce inference access. [Management key](/docs/guides/overview/auth/management-api-keys) required. @@ -1380,19 +1378,19 @@ async def update_async( else: base_url = self._get_url(base_url, url_variables) - request = operations.UpdateEndUserRequest( + request = operations.UpdateExternalUserRequest( http_referer=http_referer, x_open_router_title=x_open_router_title, x_open_router_categories=x_open_router_categories, user=user, - update_end_user_request=components.UpdateEndUserRequest( + update_external_user_request=components.UpdateExternalUserRequest( is_active=is_active, ), ) req = self._build_request_async( method="PATCH", - path="/end-users/{user}", + path="/external-users/{user}", base_url=base_url, url_variables=url_variables, request=request, @@ -1402,18 +1400,18 @@ async def update_async( user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, - _globals=operations.UpdateEndUserGlobals( + _globals=operations.UpdateExternalUserGlobals( http_referer=self.sdk_configuration.globals.http_referer, x_open_router_title=self.sdk_configuration.globals.x_open_router_title, x_open_router_categories=self.sdk_configuration.globals.x_open_router_categories, ), security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.update_end_user_request, + request.update_external_user_request, False, False, "json", - components.UpdateEndUserRequest, + components.UpdateExternalUserRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -1435,12 +1433,12 @@ async def update_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="updateEndUser", + operation_id="updateExternalUser", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, components.Security ), - tags=["End Users"], + tags=["External Users"], extensions=None, ), request=req, @@ -1450,7 +1448,7 @@ async def update_async( response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(components.EndUserResponse, http_res) + return unmarshal_json_response(components.ExternalUserResponse, http_res) if utils.match_response(http_res, "400", "application/json"): response_data = unmarshal_json_response( errors.BadRequestResponseErrorData, http_res diff --git a/src/openrouter/interns.py b/src/openrouter/interns.py index 19f2e8da8..49185f472 100644 --- a/src/openrouter/interns.py +++ b/src/openrouter/interns.py @@ -2,6 +2,7 @@ from .basesdk import BaseSDK from enum import Enum +import httpx from openrouter import components, errors, operations, utils from openrouter._hooks import HookContext from openrouter.types import OptionalNullable, UNSET @@ -11,11 +12,6 @@ from typing_extensions import deprecated -class GetInternIconAcceptEnum(str, Enum): - IMAGE_JPEG = "image/jpeg" - IMAGE_PNG = "image/png" - - class ChatAcceptEnum(str, Enum): APPLICATION_JSON = "application/json" TEXT_EVENT_STREAM = "text/event-stream" @@ -2608,10 +2604,9 @@ def get_intern_icon( v: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, - accept_header_override: Optional[GetInternIconAcceptEnum] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetInternIconResponse: + ) -> httpx.Response: r"""Get an intern's icon Returns the icon image of one visible intern. Pass the intern's `icon_sha256` as `v` to receive a response that can be cached indefinitely. The API key selects the caller, workspace and visible interns. An intern's own API key sees only that intern: the collection and every other intern answer 404 to it. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. @@ -2630,7 +2625,6 @@ def get_intern_icon( :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 - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ base_url = None @@ -2661,9 +2655,7 @@ def get_intern_icon( request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value=accept_header_override.value - if accept_header_override is not None - else "image/jpeg;q=1, image/png;q=0", + accept_header_value="image/*", http_headers=http_headers, _globals=operations.GetInternIconGlobals( http_referer=self.sdk_configuration.globals.http_referer, @@ -2707,9 +2699,7 @@ def get_intern_icon( ) response_data: Any = None - if utils.match_response(http_res, "200", "image/jpeg"): - return http_res - if utils.match_response(http_res, "200", "image/png"): + if utils.match_response(http_res, "200", "image/*"): return http_res if utils.match_response( http_res, ["401", "403", "404", "408"], "application/json" @@ -2751,10 +2741,9 @@ async def get_intern_icon_async( v: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, - accept_header_override: Optional[GetInternIconAcceptEnum] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetInternIconResponse: + ) -> httpx.Response: r"""Get an intern's icon Returns the icon image of one visible intern. Pass the intern's `icon_sha256` as `v` to receive a response that can be cached indefinitely. The API key selects the caller, workspace and visible interns. An intern's own API key sees only that intern: the collection and every other intern answer 404 to it. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. @@ -2773,7 +2762,6 @@ async def get_intern_icon_async( :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 - :param accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ base_url = None @@ -2804,9 +2792,7 @@ async def get_intern_icon_async( request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value=accept_header_override.value - if accept_header_override is not None - else "image/jpeg;q=1, image/png;q=0", + accept_header_value="image/*", http_headers=http_headers, _globals=operations.GetInternIconGlobals( http_referer=self.sdk_configuration.globals.http_referer, @@ -2850,9 +2836,7 @@ async def get_intern_icon_async( ) response_data: Any = None - if utils.match_response(http_res, "200", "image/jpeg"): - return http_res - if utils.match_response(http_res, "200", "image/png"): + if utils.match_response(http_res, "200", "image/*"): return http_res if utils.match_response( http_res, ["401", "403", "404", "408"], "application/json" diff --git a/src/openrouter/operations/__init__.py b/src/openrouter/operations/__init__.py index 265b76bdc..80fde27cb 100644 --- a/src/openrouter/operations/__init__.py +++ b/src/openrouter/operations/__init__.py @@ -147,11 +147,11 @@ TypeImageURL, TypeText, ) - from .createenduser import ( - CreateEndUserGlobals, - CreateEndUserGlobalsTypedDict, - CreateEndUserRequest, - CreateEndUserRequestTypedDict, + from .createexternaluser import ( + CreateExternalUserGlobals, + CreateExternalUserGlobalsTypedDict, + CreateExternalUserRequest, + CreateExternalUserRequestTypedDict, ) from .createguardrail import ( CreateGuardrailGlobals, @@ -308,11 +308,11 @@ DeleteBYOKKeyRequest, DeleteBYOKKeyRequestTypedDict, ) - from .deleteenduser import ( - DeleteEndUserGlobals, - DeleteEndUserGlobalsTypedDict, - DeleteEndUserRequest, - DeleteEndUserRequestTypedDict, + from .deleteexternaluser import ( + DeleteExternalUserGlobals, + DeleteExternalUserGlobalsTypedDict, + DeleteExternalUserRequest, + DeleteExternalUserRequestTypedDict, ) from .deletefile import ( DeleteFileGlobals, @@ -506,11 +506,11 @@ RateLimit, RateLimitTypedDict, ) - from .getenduser import ( - GetEndUserGlobals, - GetEndUserGlobalsTypedDict, - GetEndUserRequest, - GetEndUserRequestTypedDict, + from .getexternaluser import ( + GetExternalUserGlobals, + GetExternalUserGlobalsTypedDict, + GetExternalUserRequest, + GetExternalUserRequestTypedDict, ) from .getfilemetadata import ( GetFileMetadataGlobals, @@ -553,8 +553,6 @@ GetInternIconGlobalsTypedDict, GetInternIconRequest, GetInternIconRequestTypedDict, - GetInternIconResponse, - GetInternIconResponseTypedDict, ) from .getkey import ( GetKeyData, @@ -756,13 +754,13 @@ ListEndpointsZdrResponse, ListEndpointsZdrResponseTypedDict, ) - from .listendusers import ( - ListEndUsersGlobals, - ListEndUsersGlobalsTypedDict, - ListEndUsersRequest, - ListEndUsersRequestTypedDict, - ListEndUsersResponse, - ListEndUsersResponseTypedDict, + from .listexternalusers import ( + ListExternalUsersGlobals, + ListExternalUsersGlobalsTypedDict, + ListExternalUsersRequest, + ListExternalUsersRequestTypedDict, + ListExternalUsersResponse, + ListExternalUsersResponseTypedDict, ) from .listfiles import ( ListFilesGlobals, @@ -1106,11 +1104,11 @@ UpdateBYOKKeyRequest, UpdateBYOKKeyRequestTypedDict, ) - from .updateenduser import ( - UpdateEndUserGlobals, - UpdateEndUserGlobalsTypedDict, - UpdateEndUserRequest, - UpdateEndUserRequestTypedDict, + from .updateexternaluser import ( + UpdateExternalUserGlobals, + UpdateExternalUserGlobalsTypedDict, + UpdateExternalUserRequest, + UpdateExternalUserRequestTypedDict, ) from .updateguardrail import ( UpdateGuardrailGlobals, @@ -1304,10 +1302,10 @@ "CreateEmbeddingsResponseTypedDict", "CreateEmbeddingsUsage", "CreateEmbeddingsUsageTypedDict", - "CreateEndUserGlobals", - "CreateEndUserGlobalsTypedDict", - "CreateEndUserRequest", - "CreateEndUserRequestTypedDict", + "CreateExternalUserGlobals", + "CreateExternalUserGlobalsTypedDict", + "CreateExternalUserRequest", + "CreateExternalUserRequestTypedDict", "CreateGuardrailGlobals", "CreateGuardrailGlobalsTypedDict", "CreateGuardrailRequest", @@ -1414,10 +1412,10 @@ "DeleteBatchGlobalsTypedDict", "DeleteBatchRequest", "DeleteBatchRequestTypedDict", - "DeleteEndUserGlobals", - "DeleteEndUserGlobalsTypedDict", - "DeleteEndUserRequest", - "DeleteEndUserRequestTypedDict", + "DeleteExternalUserGlobals", + "DeleteExternalUserGlobalsTypedDict", + "DeleteExternalUserRequest", + "DeleteExternalUserRequestTypedDict", "DeleteFileGlobals", "DeleteFileGlobalsTypedDict", "DeleteFileRequest", @@ -1556,10 +1554,10 @@ "GetCurrentKeyRequestTypedDict", "GetCurrentKeyResponse", "GetCurrentKeyResponseTypedDict", - "GetEndUserGlobals", - "GetEndUserGlobalsTypedDict", - "GetEndUserRequest", - "GetEndUserRequestTypedDict", + "GetExternalUserGlobals", + "GetExternalUserGlobalsTypedDict", + "GetExternalUserRequest", + "GetExternalUserRequestTypedDict", "GetFileMetadataGlobals", "GetFileMetadataGlobalsTypedDict", "GetFileMetadataRequest", @@ -1586,8 +1584,6 @@ "GetInternIconGlobalsTypedDict", "GetInternIconRequest", "GetInternIconRequestTypedDict", - "GetInternIconResponse", - "GetInternIconResponseTypedDict", "GetInternRequest", "GetInternRequestTypedDict", "GetKeyData", @@ -1724,12 +1720,6 @@ "ListEmbeddingsModelsRequestTypedDict", "ListEmbeddingsModelsResponse", "ListEmbeddingsModelsResponseTypedDict", - "ListEndUsersGlobals", - "ListEndUsersGlobalsTypedDict", - "ListEndUsersRequest", - "ListEndUsersRequestTypedDict", - "ListEndUsersResponse", - "ListEndUsersResponseTypedDict", "ListEndpointsGlobals", "ListEndpointsGlobalsTypedDict", "ListEndpointsRequest", @@ -1742,6 +1732,12 @@ "ListEndpointsZdrRequestTypedDict", "ListEndpointsZdrResponse", "ListEndpointsZdrResponseTypedDict", + "ListExternalUsersGlobals", + "ListExternalUsersGlobalsTypedDict", + "ListExternalUsersRequest", + "ListExternalUsersRequestTypedDict", + "ListExternalUsersResponse", + "ListExternalUsersResponseTypedDict", "ListFilesGlobals", "ListFilesGlobalsTypedDict", "ListFilesRequest", @@ -2012,10 +2008,10 @@ "UpdateBYOKKeyGlobalsTypedDict", "UpdateBYOKKeyRequest", "UpdateBYOKKeyRequestTypedDict", - "UpdateEndUserGlobals", - "UpdateEndUserGlobalsTypedDict", - "UpdateEndUserRequest", - "UpdateEndUserRequestTypedDict", + "UpdateExternalUserGlobals", + "UpdateExternalUserGlobalsTypedDict", + "UpdateExternalUserRequest", + "UpdateExternalUserRequestTypedDict", "UpdateGuardrailGlobals", "UpdateGuardrailGlobalsTypedDict", "UpdateGuardrailRequest", @@ -2200,10 +2196,10 @@ "PromptTokensDetailsTypedDict": ".createembeddings", "TypeImageURL": ".createembeddings", "TypeText": ".createembeddings", - "CreateEndUserGlobals": ".createenduser", - "CreateEndUserGlobalsTypedDict": ".createenduser", - "CreateEndUserRequest": ".createenduser", - "CreateEndUserRequestTypedDict": ".createenduser", + "CreateExternalUserGlobals": ".createexternaluser", + "CreateExternalUserGlobalsTypedDict": ".createexternaluser", + "CreateExternalUserRequest": ".createexternaluser", + "CreateExternalUserRequestTypedDict": ".createexternaluser", "CreateGuardrailGlobals": ".createguardrail", "CreateGuardrailGlobalsTypedDict": ".createguardrail", "CreateGuardrailRequest": ".createguardrail", @@ -2319,10 +2315,10 @@ "DeleteBYOKKeyGlobalsTypedDict": ".deletebyokkey", "DeleteBYOKKeyRequest": ".deletebyokkey", "DeleteBYOKKeyRequestTypedDict": ".deletebyokkey", - "DeleteEndUserGlobals": ".deleteenduser", - "DeleteEndUserGlobalsTypedDict": ".deleteenduser", - "DeleteEndUserRequest": ".deleteenduser", - "DeleteEndUserRequestTypedDict": ".deleteenduser", + "DeleteExternalUserGlobals": ".deleteexternaluser", + "DeleteExternalUserGlobalsTypedDict": ".deleteexternaluser", + "DeleteExternalUserRequest": ".deleteexternaluser", + "DeleteExternalUserRequestTypedDict": ".deleteexternaluser", "DeleteFileGlobals": ".deletefile", "DeleteFileGlobalsTypedDict": ".deletefile", "DeleteFileRequest": ".deletefile", @@ -2467,10 +2463,10 @@ "GetCurrentKeyResponseTypedDict": ".getcurrentkey", "RateLimit": ".getcurrentkey", "RateLimitTypedDict": ".getcurrentkey", - "GetEndUserGlobals": ".getenduser", - "GetEndUserGlobalsTypedDict": ".getenduser", - "GetEndUserRequest": ".getenduser", - "GetEndUserRequestTypedDict": ".getenduser", + "GetExternalUserGlobals": ".getexternaluser", + "GetExternalUserGlobalsTypedDict": ".getexternaluser", + "GetExternalUserRequest": ".getexternaluser", + "GetExternalUserRequestTypedDict": ".getexternaluser", "GetFileMetadataGlobals": ".getfilemetadata", "GetFileMetadataGlobalsTypedDict": ".getfilemetadata", "GetFileMetadataRequest": ".getfilemetadata", @@ -2499,8 +2495,6 @@ "GetInternIconGlobalsTypedDict": ".getinternicon", "GetInternIconRequest": ".getinternicon", "GetInternIconRequestTypedDict": ".getinternicon", - "GetInternIconResponse": ".getinternicon", - "GetInternIconResponseTypedDict": ".getinternicon", "GetKeyData": ".getkey", "GetKeyDataTypedDict": ".getkey", "GetKeyGlobals": ".getkey", @@ -2649,12 +2643,12 @@ "ListEndpointsZdrRequestTypedDict": ".listendpointszdr", "ListEndpointsZdrResponse": ".listendpointszdr", "ListEndpointsZdrResponseTypedDict": ".listendpointszdr", - "ListEndUsersGlobals": ".listendusers", - "ListEndUsersGlobalsTypedDict": ".listendusers", - "ListEndUsersRequest": ".listendusers", - "ListEndUsersRequestTypedDict": ".listendusers", - "ListEndUsersResponse": ".listendusers", - "ListEndUsersResponseTypedDict": ".listendusers", + "ListExternalUsersGlobals": ".listexternalusers", + "ListExternalUsersGlobalsTypedDict": ".listexternalusers", + "ListExternalUsersRequest": ".listexternalusers", + "ListExternalUsersRequestTypedDict": ".listexternalusers", + "ListExternalUsersResponse": ".listexternalusers", + "ListExternalUsersResponseTypedDict": ".listexternalusers", "ListFilesGlobals": ".listfiles", "ListFilesGlobalsTypedDict": ".listfiles", "ListFilesRequest": ".listfiles", @@ -2913,10 +2907,10 @@ "UpdateBYOKKeyGlobalsTypedDict": ".updatebyokkey", "UpdateBYOKKeyRequest": ".updatebyokkey", "UpdateBYOKKeyRequestTypedDict": ".updatebyokkey", - "UpdateEndUserGlobals": ".updateenduser", - "UpdateEndUserGlobalsTypedDict": ".updateenduser", - "UpdateEndUserRequest": ".updateenduser", - "UpdateEndUserRequestTypedDict": ".updateenduser", + "UpdateExternalUserGlobals": ".updateexternaluser", + "UpdateExternalUserGlobalsTypedDict": ".updateexternaluser", + "UpdateExternalUserRequest": ".updateexternaluser", + "UpdateExternalUserRequestTypedDict": ".updateexternaluser", "UpdateGuardrailGlobals": ".updateguardrail", "UpdateGuardrailGlobalsTypedDict": ".updateguardrail", "UpdateGuardrailRequest": ".updateguardrail", diff --git a/src/openrouter/operations/createenduser.py b/src/openrouter/operations/createexternaluser.py similarity index 90% rename from src/openrouter/operations/createenduser.py rename to src/openrouter/operations/createexternaluser.py index 9a40dbfcc..27b30cebc 100644 --- a/src/openrouter/operations/createenduser.py +++ b/src/openrouter/operations/createexternaluser.py @@ -2,7 +2,7 @@ from __future__ import annotations from openrouter.components import ( - createenduserrequest as components_createenduserrequest, + createexternaluserrequest as components_createexternaluserrequest, ) from openrouter.types import BaseModel, UNSET_SENTINEL from openrouter.utils import FieldMetadata, HeaderMetadata, RequestMetadata @@ -12,7 +12,7 @@ from typing_extensions import Annotated, NotRequired, TypedDict -class CreateEndUserGlobalsTypedDict(TypedDict): +class CreateExternalUserGlobalsTypedDict(TypedDict): http_referer: NotRequired[str] r"""The app identifier should be your app's URL and is used as the primary identifier for rankings. This is used to track API usage per application. @@ -28,7 +28,7 @@ class CreateEndUserGlobalsTypedDict(TypedDict): """ -class CreateEndUserGlobals(BaseModel): +class CreateExternalUserGlobals(BaseModel): http_referer: Annotated[ Optional[str], pydantic.Field(alias="HTTP-Referer"), @@ -76,9 +76,9 @@ def serialize_model(self, handler): return m -class CreateEndUserRequestTypedDict(TypedDict): - create_end_user_request: ( - components_createenduserrequest.CreateEndUserRequestTypedDict +class CreateExternalUserRequestTypedDict(TypedDict): + create_external_user_request: ( + components_createexternaluserrequest.CreateExternalUserRequestTypedDict ) http_referer: NotRequired[str] r"""The app identifier should be your app's URL and is used as the primary identifier for rankings. @@ -95,9 +95,9 @@ class CreateEndUserRequestTypedDict(TypedDict): """ -class CreateEndUserRequest(BaseModel): - create_end_user_request: Annotated[ - components_createenduserrequest.CreateEndUserRequest, +class CreateExternalUserRequest(BaseModel): + create_external_user_request: Annotated[ + components_createexternaluserrequest.CreateExternalUserRequest, FieldMetadata(request=RequestMetadata(media_type="application/json")), ] diff --git a/src/openrouter/operations/getenduser.py b/src/openrouter/operations/deleteexternaluser.py similarity index 96% rename from src/openrouter/operations/getenduser.py rename to src/openrouter/operations/deleteexternaluser.py index 6045517c8..10080bd25 100644 --- a/src/openrouter/operations/getenduser.py +++ b/src/openrouter/operations/deleteexternaluser.py @@ -9,7 +9,7 @@ from typing_extensions import Annotated, NotRequired, TypedDict -class GetEndUserGlobalsTypedDict(TypedDict): +class DeleteExternalUserGlobalsTypedDict(TypedDict): http_referer: NotRequired[str] r"""The app identifier should be your app's URL and is used as the primary identifier for rankings. This is used to track API usage per application. @@ -25,7 +25,7 @@ class GetEndUserGlobalsTypedDict(TypedDict): """ -class GetEndUserGlobals(BaseModel): +class DeleteExternalUserGlobals(BaseModel): http_referer: Annotated[ Optional[str], pydantic.Field(alias="HTTP-Referer"), @@ -73,7 +73,7 @@ def serialize_model(self, handler): return m -class GetEndUserRequestTypedDict(TypedDict): +class DeleteExternalUserRequestTypedDict(TypedDict): user: str r"""Immutable case-sensitive tracking string supplied as user on inference requests or as external.user on API keys: 1 to 512 characters, well-formed Unicode, no NUL, no surrounding whitespace. URL-encode it in resource paths; an ID of `.` or `..` cannot be addressed by path, so look it up with the list filter.""" http_referer: NotRequired[str] @@ -91,7 +91,7 @@ class GetEndUserRequestTypedDict(TypedDict): """ -class GetEndUserRequest(BaseModel): +class DeleteExternalUserRequest(BaseModel): user: Annotated[ str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) ] diff --git a/src/openrouter/operations/deleteenduser.py b/src/openrouter/operations/getexternaluser.py similarity index 96% rename from src/openrouter/operations/deleteenduser.py rename to src/openrouter/operations/getexternaluser.py index 9f5bf991f..92343ae40 100644 --- a/src/openrouter/operations/deleteenduser.py +++ b/src/openrouter/operations/getexternaluser.py @@ -9,7 +9,7 @@ from typing_extensions import Annotated, NotRequired, TypedDict -class DeleteEndUserGlobalsTypedDict(TypedDict): +class GetExternalUserGlobalsTypedDict(TypedDict): http_referer: NotRequired[str] r"""The app identifier should be your app's URL and is used as the primary identifier for rankings. This is used to track API usage per application. @@ -25,7 +25,7 @@ class DeleteEndUserGlobalsTypedDict(TypedDict): """ -class DeleteEndUserGlobals(BaseModel): +class GetExternalUserGlobals(BaseModel): http_referer: Annotated[ Optional[str], pydantic.Field(alias="HTTP-Referer"), @@ -73,7 +73,7 @@ def serialize_model(self, handler): return m -class DeleteEndUserRequestTypedDict(TypedDict): +class GetExternalUserRequestTypedDict(TypedDict): user: str r"""Immutable case-sensitive tracking string supplied as user on inference requests or as external.user on API keys: 1 to 512 characters, well-formed Unicode, no NUL, no surrounding whitespace. URL-encode it in resource paths; an ID of `.` or `..` cannot be addressed by path, so look it up with the list filter.""" http_referer: NotRequired[str] @@ -91,7 +91,7 @@ class DeleteEndUserRequestTypedDict(TypedDict): """ -class DeleteEndUserRequest(BaseModel): +class GetExternalUserRequest(BaseModel): user: Annotated[ str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) ] diff --git a/src/openrouter/operations/getinternicon.py b/src/openrouter/operations/getinternicon.py index 77a979126..ecda3acdd 100644 --- a/src/openrouter/operations/getinternicon.py +++ b/src/openrouter/operations/getinternicon.py @@ -1,7 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -import httpx from openrouter.types import BaseModel, UNSET_SENTINEL from openrouter.utils import ( FieldMetadata, @@ -11,8 +10,8 @@ ) import pydantic from pydantic import model_serializer -from typing import Optional, Union -from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class GetInternIconGlobalsTypedDict(TypedDict): @@ -158,13 +157,3 @@ def serialize_model(self, handler): m[k] = val return m - - -GetInternIconResponseTypedDict = TypeAliasType( - "GetInternIconResponseTypedDict", Union[httpx.Response, httpx.Response] -) - - -GetInternIconResponse = TypeAliasType( - "GetInternIconResponse", Union[httpx.Response, httpx.Response] -) diff --git a/src/openrouter/operations/listendusers.py b/src/openrouter/operations/listexternalusers.py similarity index 91% rename from src/openrouter/operations/listendusers.py rename to src/openrouter/operations/listexternalusers.py index 324d796df..2df69992a 100644 --- a/src/openrouter/operations/listendusers.py +++ b/src/openrouter/operations/listexternalusers.py @@ -2,7 +2,7 @@ from __future__ import annotations from openrouter.components import ( - listendusersresponse as components_listendusersresponse, + listexternalusersresponse as components_listexternalusersresponse, ) from openrouter.types import BaseModel, Nullable, OptionalNullable, UNSET_SENTINEL from openrouter.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata @@ -12,7 +12,7 @@ from typing_extensions import Annotated, NotRequired, TypedDict -class ListEndUsersGlobalsTypedDict(TypedDict): +class ListExternalUsersGlobalsTypedDict(TypedDict): http_referer: NotRequired[str] r"""The app identifier should be your app's URL and is used as the primary identifier for rankings. This is used to track API usage per application. @@ -28,7 +28,7 @@ class ListEndUsersGlobalsTypedDict(TypedDict): """ -class ListEndUsersGlobals(BaseModel): +class ListExternalUsersGlobals(BaseModel): http_referer: Annotated[ Optional[str], pydantic.Field(alias="HTTP-Referer"), @@ -76,7 +76,7 @@ def serialize_model(self, handler): return m -class ListEndUsersRequestTypedDict(TypedDict): +class ListExternalUsersRequestTypedDict(TypedDict): http_referer: NotRequired[str] r"""The app identifier should be your app's URL and is used as the primary identifier for rankings. This is used to track API usage per application. @@ -100,7 +100,7 @@ class ListEndUsersRequestTypedDict(TypedDict): r"""Include deactivated registrations.""" -class ListEndUsersRequest(BaseModel): +class ListExternalUsersRequest(BaseModel): http_referer: Annotated[ Optional[str], pydantic.Field(alias="HTTP-Referer"), @@ -189,14 +189,14 @@ def serialize_model(self, handler): return m -class ListEndUsersResponseTypedDict(TypedDict): - result: components_listendusersresponse.ListEndUsersResponseTypedDict +class ListExternalUsersResponseTypedDict(TypedDict): + result: components_listexternalusersresponse.ListExternalUsersResponseTypedDict -class ListEndUsersResponse(BaseModel): +class ListExternalUsersResponse(BaseModel): next: Union[ - Callable[[], Optional[ListEndUsersResponse]], - Callable[[], Awaitable[Optional[ListEndUsersResponse]]], + Callable[[], Optional[ListExternalUsersResponse]], + Callable[[], Awaitable[Optional[ListExternalUsersResponse]]], ] - result: components_listendusersresponse.ListEndUsersResponse + result: components_listexternalusersresponse.ListExternalUsersResponse diff --git a/src/openrouter/operations/updateenduser.py b/src/openrouter/operations/updateexternaluser.py similarity index 91% rename from src/openrouter/operations/updateenduser.py rename to src/openrouter/operations/updateexternaluser.py index 9249d1f01..11cc7d6ff 100644 --- a/src/openrouter/operations/updateenduser.py +++ b/src/openrouter/operations/updateexternaluser.py @@ -2,7 +2,7 @@ from __future__ import annotations from openrouter.components import ( - updateenduserrequest as components_updateenduserrequest, + updateexternaluserrequest as components_updateexternaluserrequest, ) from openrouter.types import BaseModel, UNSET_SENTINEL from openrouter.utils import ( @@ -17,7 +17,7 @@ from typing_extensions import Annotated, NotRequired, TypedDict -class UpdateEndUserGlobalsTypedDict(TypedDict): +class UpdateExternalUserGlobalsTypedDict(TypedDict): http_referer: NotRequired[str] r"""The app identifier should be your app's URL and is used as the primary identifier for rankings. This is used to track API usage per application. @@ -33,7 +33,7 @@ class UpdateEndUserGlobalsTypedDict(TypedDict): """ -class UpdateEndUserGlobals(BaseModel): +class UpdateExternalUserGlobals(BaseModel): http_referer: Annotated[ Optional[str], pydantic.Field(alias="HTTP-Referer"), @@ -81,11 +81,11 @@ def serialize_model(self, handler): return m -class UpdateEndUserRequestTypedDict(TypedDict): +class UpdateExternalUserRequestTypedDict(TypedDict): user: str r"""Immutable case-sensitive tracking string supplied as user on inference requests or as external.user on API keys: 1 to 512 characters, well-formed Unicode, no NUL, no surrounding whitespace. URL-encode it in resource paths; an ID of `.` or `..` cannot be addressed by path, so look it up with the list filter.""" - update_end_user_request: ( - components_updateenduserrequest.UpdateEndUserRequestTypedDict + update_external_user_request: ( + components_updateexternaluserrequest.UpdateExternalUserRequestTypedDict ) http_referer: NotRequired[str] r"""The app identifier should be your app's URL and is used as the primary identifier for rankings. @@ -102,14 +102,14 @@ class UpdateEndUserRequestTypedDict(TypedDict): """ -class UpdateEndUserRequest(BaseModel): +class UpdateExternalUserRequest(BaseModel): user: Annotated[ str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) ] r"""Immutable case-sensitive tracking string supplied as user on inference requests or as external.user on API keys: 1 to 512 characters, well-formed Unicode, no NUL, no surrounding whitespace. URL-encode it in resource paths; an ID of `.` or `..` cannot be addressed by path, so look it up with the list filter.""" - update_end_user_request: Annotated[ - components_updateenduserrequest.UpdateEndUserRequest, + update_external_user_request: Annotated[ + components_updateexternaluserrequest.UpdateExternalUserRequest, FieldMetadata(request=RequestMetadata(media_type="application/json")), ] diff --git a/src/openrouter/sdk.py b/src/openrouter/sdk.py index 8d7b90d73..610c2f778 100644 --- a/src/openrouter/sdk.py +++ b/src/openrouter/sdk.py @@ -29,8 +29,8 @@ from openrouter.credits import Credits from openrouter.datasets import Datasets from openrouter.embeddings import Embeddings - from openrouter.end_users import EndUsers from openrouter.endpoints import Endpoints + from openrouter.externalusers import ExternalUsers from openrouter.files import Files from openrouter.generations import Generations from openrouter.guardrails import Guardrails @@ -86,10 +86,9 @@ class OpenRouter(BaseSDK): r"""Public OpenRouter usage datasets. Data returned by these endpoints is licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/): reuse and republish it, including commercially, with attribution to OpenRouter.""" embeddings: "Embeddings" r"""Text embedding endpoints""" - end_users: "EndUsers" - r"""End Users endpoints""" endpoints: "Endpoints" r"""Endpoint information""" + external_users: "ExternalUsers" files: "Files" r"""Files endpoints""" generations: "Generations" @@ -146,8 +145,8 @@ class OpenRouter(BaseSDK): "credits": ("openrouter.credits", "Credits"), "datasets": ("openrouter.datasets", "Datasets"), "embeddings": ("openrouter.embeddings", "Embeddings"), - "end_users": ("openrouter.end_users", "EndUsers"), "endpoints": ("openrouter.endpoints", "Endpoints"), + "external_users": ("openrouter.externalusers", "ExternalUsers"), "files": ("openrouter.files", "Files"), "generations": ("openrouter.generations", "Generations"), "guardrails": ("openrouter.guardrails", "Guardrails"), diff --git a/uv.lock b/uv.lock index 1859c184d..1aaa13ac5 100644 --- a/uv.lock +++ b/uv.lock @@ -213,7 +213,7 @@ wheels = [ [[package]] name = "openrouter" -version = "1.3.69" +version = "1.3.70" source = { editable = "." } dependencies = [ { name = "httpcore" },