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" },