diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock
index 206228ad..7e1de1f5 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: 7bd9b89fbec22196d1905c5c343c5a3f
+ docChecksum: 77068c873b6461c3ce598e7639e7e171
docVersion: 1.0.0
speakeasyVersion: 1.787.0
generationVersion: 2.914.0
- releaseVersion: 1.2.14
- configChecksum: 802743116b703c7d1d4da10855dfdb26
+ releaseVersion: 1.2.15
+ configChecksum: 43d078beaa84285feccc361371078355
repoURL: https://github.com/OpenRouterTeam/python-sdk.git
installationURL: https://github.com/OpenRouterTeam/python-sdk.git
published: true
persistentEdits:
- generation_id: 9c3c1c68-6766-4a03-af9e-8c8d26193017
- pristine_commit_hash: 4847c3203bade2f349f3a6e921f66191fb329f49
- pristine_tree_hash: c1bbe1d3081315160c4967c57a55f086ee11c9e9
+ generation_id: d606bc86-3789-4ac8-a973-e8c317148812
+ pristine_commit_hash: af6e39c114d0eef6d6d37a87a118f0c509dcc58e
+ pristine_tree_hash: 5a74f690938f581187d9d3e14911a3249a1c7fe5
features:
python:
acceptHeaders: 3.0.0
@@ -1699,12 +1699,16 @@ trackedFiles:
pristine_git_object: 578411c9c20ce29b38854cf608060bd6e6aec69e
docs/components/createworkspacerequest.mdx:
id: ea85d6684017
- last_write_checksum: sha1:3fd0555fe82dbdff103995079630e6bcb7503795
- pristine_git_object: 3de1021e362e3a910e0e35842e6f1cdea15cdca4
+ last_write_checksum: sha1:9c2244e40338c90da6e7cab914566c1f755da1f8
+ pristine_git_object: 2d5e2868284158cf355dbf7d86d4cc48b635c3c7
+ docs/components/createworkspacerequestdisabledservertool.mdx:
+ id: 19a533b200f9
+ last_write_checksum: sha1:88082fd2da7f18d74d3d66c57fca6afb7e5f104a
+ pristine_git_object: 8156c97be549e8be20442a45b8fc32fa5718f086
docs/components/createworkspaceresponse.mdx:
id: ee0c0ca3257e
- last_write_checksum: sha1:f6de7351ddd4d0bb8990ef8e40d8cdfb24fe6c53
- pristine_git_object: aee384f40812ab73fa2a94ee1ee24decaee754f3
+ last_write_checksum: sha1:43fe9485ebaec2a6e9eaec713f7cfd0b791de4a3
+ pristine_git_object: 27d6f40a62669b36db6ec260228cfadb36a55a09
docs/components/criteria.mdx:
id: 2598471a14a2
last_write_checksum: sha1:b681aff077a72268d22afe6857d83c7da5224e9c
@@ -2475,8 +2479,8 @@ trackedFiles:
pristine_git_object: 2974de1ffe849cdfc1720bb7e3431a89ac4c9b14
docs/components/getworkspaceresponse.mdx:
id: c8d0c4683019
- last_write_checksum: sha1:5d10c3c4510cdc869a740deee62c31e9d2b02cc9
- pristine_git_object: 42ef3f3487d6e55ad13f7ae93edd146fd46332bf
+ last_write_checksum: sha1:7ea1d0d8aad1bd2ddb0d3774eb1f8bc791cf7ce2
+ pristine_git_object: 3028ce13a0833f97730bbe1b419396cfbdcdf0eb
docs/components/goneresponseerrordata.mdx:
id: e6b031c25894
last_write_checksum: sha1:89e7ba22f189a86dd12757f9f5ea3d25175b537b
@@ -6135,12 +6139,16 @@ trackedFiles:
pristine_git_object: 651230ce14044f67b3930628c9b0a4feaab3f7e6
docs/components/updateworkspacerequest.mdx:
id: 9870d016bf28
- last_write_checksum: sha1:b798c6d985770a44b3db121bb2aa6cd983ad5387
- pristine_git_object: f7e959179cb3c4d74ad355125a253b88ef4819f2
+ last_write_checksum: sha1:ecce73854de37e1a624d840d82b38114c5335c1a
+ pristine_git_object: d0d068f603c4f4949078d61e64a0e16e825810d7
+ docs/components/updateworkspacerequestdisabledservertool.mdx:
+ id: 47cabb4adf1a
+ last_write_checksum: sha1:9a2e914479d5924d4fd303f87c93a601615f0745
+ pristine_git_object: 0ac89d206b33a5466cb729ba1a6c2cc3841229d9
docs/components/updateworkspaceresponse.mdx:
id: b9779063a1b3
- last_write_checksum: sha1:3af637ba6cb6624ac3390470e21ef1d38e99c104
- pristine_git_object: 62f4522181f9c1ebe5755bd3bd5851a611534c87
+ last_write_checksum: sha1:51c50cb5897d47059c2f1e59255bf171475c120e
+ pristine_git_object: bb50c7c718e903052b16d9f73d4c3f8a6484ec2d
docs/components/upscalefactor.mdx:
id: d68710dea098
last_write_checksum: sha1:6f0c8ba91272969b8b4c7e4d420ed1090e6c4bb5
@@ -6391,8 +6399,8 @@ trackedFiles:
pristine_git_object: e8a689098106c445424b89fe5baa348824f3a36c
docs/components/workspace.mdx:
id: eea9c32d09c4
- last_write_checksum: sha1:7c46c2883ef1097c719aedc1f7e685e64f5e8f10
- pristine_git_object: bfb57ad4dd097359b10a1081120300ea9f9348d8
+ last_write_checksum: sha1:9a689240292bb3903033db3e5232ca191135e38c
+ pristine_git_object: e3866ea05c7cd0f34a152e6e6da25beece779990
docs/components/workspacebudget.mdx:
id: e941741a8d84
last_write_checksum: sha1:c94db9e8e6518f8da147deddd13cdb76a34609fc
@@ -7743,8 +7751,8 @@ trackedFiles:
pristine_git_object: 0903d08e14ec2f3f3f2ab8668daa99cb32a638c2
docs/operations/listworkspacesresponse.mdx:
id: 9c0a0733f9d1
- last_write_checksum: sha1:d4c171ab93736a42200e388ac79b280496da1be9
- pristine_git_object: f0b5fa55d7d4da9de53d73728a27e13bfbfb30bf
+ last_write_checksum: sha1:89b57aa3a79a4374de7c876ba1bb3d307ba3208d
+ pristine_git_object: 44258f9aa86a3ce9be3f77d8bb3ada3a00388081
docs/operations/metadata.mdx:
id: 2dd433f031ce
last_write_checksum: sha1:78b9ed1337be24abd728a68bff41a10a0e1421cc
@@ -8191,16 +8199,16 @@ trackedFiles:
pristine_git_object: f317b0a45ac81d17124b0286e1df39c3eec14b99
docs/sdks/workspaces/README.mdx:
id: 0c75d023ef6b
- last_write_checksum: sha1:25592df93519c9e742e7c2a3df49ea2337a47d64
- pristine_git_object: 056f17b892cf105c2ee6e3156a37d3260c31f4fe
+ last_write_checksum: sha1:e0506418eaabc2839b16e1cdc5d963dd689226bf
+ pristine_git_object: bf6f0de6a33d64b453e558c8023931513ac367f0
py.typed:
id: 258c3ed47ae4
last_write_checksum: sha1:8efc425ffe830805ffcc0f3055871bdcdc542c60
pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544
pyproject.toml:
id: 5d07e7d72637
- last_write_checksum: sha1:8c54b6c9af35c07744640b023191e7464607c6ad
- pristine_git_object: 3c96005ec9f6061ebb0433ff241702b99831f58a
+ last_write_checksum: sha1:15ce6f7cff75913f1b08ceaa8749b18d9ebbf6d4
+ pristine_git_object: dc0216420b8e8b2880866e9f162f81d0878cb667
scripts/prepare_readme.py:
id: e0c5957a6035
last_write_checksum: sha1:77f44b60b98bc126557ec27391f91dfba764bb54
@@ -8227,8 +8235,8 @@ trackedFiles:
pristine_git_object: 86713cfea633e09d33b3d4e65281071fe20e6137
src/openrouter/_version.py:
id: d8d15ad6c586
- last_write_checksum: sha1:fd01494d6e9ee077697de96692d6f1a87b26bb5a
- pristine_git_object: f36d1bffdd91f724ff2e13c9a2da5d123ea77f16
+ last_write_checksum: sha1:a46b9567b1482e9b54a9b56d89fe91c304c69a26
+ pristine_git_object: 22d2e2ac5c13082de840aa94cf1560638b96258c
src/openrouter/alpha.py:
id: 306c4d93308d
last_write_checksum: sha1:0c25a52ed5fb688ec1e923e4e82bcfc9cae49465
@@ -8271,8 +8279,8 @@ trackedFiles:
pristine_git_object: ad3d247954547814054c01989a2dff3d12b3e4e1
src/openrouter/components/__init__.py:
id: 81754e97b3f4
- last_write_checksum: sha1:b601eeca8f608df36c42e1b6d2f5ee4af2087eab
- pristine_git_object: c72a9ee2868adf11a45fb1b3e304c7e0f1534af8
+ last_write_checksum: sha1:8ec369374d1712f8a0a595de9fbcdb5068078afd
+ pristine_git_object: ae01b770b9ea237cd5b8f0176439c924d3ba85eb
src/openrouter/components/aabenchmarkentry.py:
id: e2e0f0b48c82
last_write_checksum: sha1:fab4d9a24d2cea937bb749d46c5f83941e99d65c
@@ -9035,8 +9043,8 @@ trackedFiles:
pristine_git_object: 3a03248b4aa36f469420c5602df4f5d21a36dd68
src/openrouter/components/createworkspacerequest.py:
id: 3785d9b207c2
- last_write_checksum: sha1:26d39e88354ea17dc3a9c0156ddc8769dbae33a4
- pristine_git_object: 0596d01d9ef84ac315f8c1e1272dd16aa51517db
+ last_write_checksum: sha1:2ba69c97be9ccf15539646697dd4c427c02a0b42
+ pristine_git_object: 70e1a4066d721ac607b1f06d6d448d07473d52c1
src/openrouter/components/createworkspaceresponse.py:
id: 986d9ff993c1
last_write_checksum: sha1:7e9028b437a9e33a7541ba222cf01e6629f5c74d
@@ -10875,8 +10883,8 @@ trackedFiles:
pristine_git_object: 2f110211bb0a6889bb6455a7a3901e0be260b170
src/openrouter/components/updateworkspacerequest.py:
id: 78d86b3b0a63
- last_write_checksum: sha1:ff25d835cf026e5401004b26067c778c9e85fe38
- pristine_git_object: f1569fcf850aeb022abbc604d6b5e206d26db6eb
+ last_write_checksum: sha1:4e8da8b27b81f6cd72483fc807dfff2413ae2ab3
+ pristine_git_object: 48897956756399c6dfe7684094e4d28e2648e754
src/openrouter/components/updateworkspaceresponse.py:
id: 46253fa9690a
last_write_checksum: sha1:4708e7e4cbfddc34ffc9ed4808a88bb5b4a61ebf
@@ -11019,8 +11027,8 @@ trackedFiles:
pristine_git_object: fda00ebca117e6d3accc21c5252351f77cf34692
src/openrouter/components/workspace.py:
id: 682282304bd8
- last_write_checksum: sha1:69434be003cd92f09b14e7a8ed2fac59ebd05446
- pristine_git_object: 68c99ace24396e1b7bd903cac6ae78a1403b9591
+ last_write_checksum: sha1:947e861015caddaf1dec255e9facd1f9860a2d3f
+ pristine_git_object: 874f99775f6348b5ad8ec15c928476f4ab88c762
src/openrouter/components/workspacebudget.py:
id: f80c6983502a
last_write_checksum: sha1:14f6ab02291a2222836247463c57ed42d568a6a9
@@ -11843,8 +11851,8 @@ trackedFiles:
pristine_git_object: 6186c32069bb403d19f20ab7af4bb94ac8bab563
src/openrouter/workspaces.py:
id: cd6c533b1802
- last_write_checksum: sha1:68bf23158fc838c1ad63e871b5d2de6080a75931
- pristine_git_object: bf45330d15a5647564e5ac5316422909621f8b03
+ last_write_checksum: sha1:7db1e53c7cca6241c73765d584904150ef13c28c
+ pristine_git_object: 7237e212353b6db8a55d654e64a8e0e18b934110
examples:
createResponses:
speakeasy-default-create-responses:
@@ -15052,6 +15060,4 @@ examples:
"529":
application/json: {"error": {"code": 529, "message": "Provider returned error"}}
examplesVersion: 1.0.2
-releaseNotes: |
- ## Python SDK Changes:
- * `open_router.presets.create_presets_messages()`: `request.safeguards` **Added**
+releaseNotes: "## Python SDK Changes:\n* `open_router.workspaces.list()`: `response.data[].disabled_server_tools` **Added**\n* `open_router.workspaces.create()`: \n * `request.disabled_server_tools` **Added**\n * `response.data.disabled_server_tools` **Added**\n* `open_router.workspaces.get()`: `response.data.disabled_server_tools` **Added**\n* `open_router.workspaces.update()`: \n * `request.disabled_server_tools` **Added**\n * `response.data.disabled_server_tools` **Added**\n"
diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml
index 09958272..6935c0f7 100644
--- a/.speakeasy/gen.yaml
+++ b/.speakeasy/gen.yaml
@@ -36,7 +36,7 @@ generation:
documentation: mintlify
preApplyUnionDiscriminators: true
python:
- version: 1.2.14
+ version: 1.2.15
additionalDependencies:
dev: {}
main: {}
diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml
index 38fcad2d..1f006177 100644
--- a/.speakeasy/out.openapi.yaml
+++ b/.speakeasy/out.openapi.yaml
@@ -8048,6 +8048,30 @@ components:
type:
- 'string'
- 'null'
+ disabled_server_tools:
+ description: 'OpenRouter server tools that requests in this workspace may not invoke. Requests naming a disabled tool are rejected with 403. An empty array or null clears the list.'
+ example:
+ - 'openrouter:web_search'
+ - 'openrouter:bash'
+ items:
+ enum:
+ - 'openrouter:advisor'
+ - 'openrouter:apply_patch'
+ - 'openrouter:bash'
+ - 'openrouter:datetime'
+ - 'openrouter:fusion'
+ - 'openrouter:image_generation'
+ - 'openrouter:experimental__search_models'
+ - 'openrouter:shell'
+ - 'openrouter:subagent'
+ - 'openrouter:tool_search'
+ - 'openrouter:web_fetch'
+ - 'openrouter:web_search'
+ type: 'string'
+ x-speakeasy-unknown-values: allow
+ type:
+ - 'array'
+ - 'null'
io_logging_api_key_ids:
description: 'Optional array of API key IDs to filter I/O logging'
example: null
@@ -8100,6 +8124,7 @@ components:
default_provider_sort: 'price'
default_text_model: 'openai/gpt-4o'
description: 'Production environment workspace'
+ disabled_server_tools: null
id: '550e8400-e29b-41d4-a716-446655440000'
include_byok_in_budgets: false
io_logging_api_key_ids: null
@@ -10782,6 +10807,7 @@ components:
default_provider_sort: 'price'
default_text_model: 'openai/gpt-4o'
description: 'Production environment workspace'
+ disabled_server_tools: null
id: '550e8400-e29b-41d4-a716-446655440000'
include_byok_in_budgets: false
io_logging_api_key_ids: null
@@ -13752,6 +13778,7 @@ components:
default_provider_sort: 'price'
default_text_model: 'openai/gpt-4o'
description: 'Production environment workspace'
+ disabled_server_tools: null
id: '550e8400-e29b-41d4-a716-446655440000'
include_byok_in_budgets: false
io_logging_api_key_ids: null
@@ -28309,6 +28336,30 @@ components:
type:
- 'string'
- 'null'
+ disabled_server_tools:
+ description: 'OpenRouter server tools that requests in this workspace may not invoke. Requests naming a disabled tool are rejected with 403. An empty array or null clears the list.'
+ example:
+ - 'openrouter:web_search'
+ - 'openrouter:bash'
+ items:
+ enum:
+ - 'openrouter:advisor'
+ - 'openrouter:apply_patch'
+ - 'openrouter:bash'
+ - 'openrouter:datetime'
+ - 'openrouter:fusion'
+ - 'openrouter:image_generation'
+ - 'openrouter:experimental__search_models'
+ - 'openrouter:shell'
+ - 'openrouter:subagent'
+ - 'openrouter:tool_search'
+ - 'openrouter:web_fetch'
+ - 'openrouter:web_search'
+ type: 'string'
+ x-speakeasy-unknown-values: allow
+ type:
+ - 'array'
+ - 'null'
io_logging_api_key_ids:
description: 'Optional array of API key IDs to filter I/O logging'
example: null
@@ -28358,6 +28409,7 @@ components:
default_provider_sort: 'price'
default_text_model: 'openai/gpt-4o'
description: 'Production environment workspace'
+ disabled_server_tools: null
id: '550e8400-e29b-41d4-a716-446655440000'
include_byok_in_budgets: false
io_logging_api_key_ids: null
@@ -29566,6 +29618,7 @@ components:
default_provider_sort: 'price'
default_text_model: 'openai/gpt-4o'
description: 'Production environment workspace'
+ disabled_server_tools: null
id: '550e8400-e29b-41d4-a716-446655440000'
include_byok_in_budgets: false
io_logging_api_key_ids: null
@@ -29616,6 +29669,14 @@ components:
type:
- 'string'
- 'null'
+ disabled_server_tools:
+ description: 'OpenRouter server tools (e.g. openrouter:web_search) that requests in this workspace may not invoke. Null means no tools are disabled.'
+ example: null
+ items:
+ type: 'string'
+ type:
+ - 'array'
+ - 'null'
id:
description: 'Unique identifier for the workspace'
example: '550e8400-e29b-41d4-a716-446655440000'
@@ -45899,6 +45960,7 @@ paths:
default_provider_sort: 'price'
default_text_model: 'openai/gpt-4o'
description: 'Production environment workspace'
+ disabled_server_tools: null
id: '550e8400-e29b-41d4-a716-446655440000'
include_byok_in_budgets: false
io_logging_api_key_ids: null
@@ -45977,6 +46039,7 @@ paths:
default_provider_sort: 'price'
default_text_model: 'openai/gpt-4o'
description: 'Production environment workspace'
+ disabled_server_tools: null
id: '550e8400-e29b-41d4-a716-446655440000'
include_byok_in_budgets: false
io_logging_api_key_ids: null
@@ -46154,6 +46217,7 @@ paths:
default_provider_sort: 'price'
default_text_model: 'openai/gpt-4o'
description: 'Production environment workspace'
+ disabled_server_tools: null
id: '550e8400-e29b-41d4-a716-446655440000'
include_byok_in_budgets: false
io_logging_api_key_ids: null
@@ -46236,6 +46300,7 @@ paths:
default_provider_sort: 'price'
default_text_model: 'openai/gpt-4o'
description: 'Production environment workspace'
+ disabled_server_tools: null
id: '550e8400-e29b-41d4-a716-446655440000'
include_byok_in_budgets: false
io_logging_api_key_ids: null
diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock
index 10f24c0a..e39b0d23 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:86362b59ed209d44a72e17143c0d6d553ee4a08a72794dcab7e45b2a6f4e7f5e
- sourceBlobDigest: sha256:2cafada247780172cf6ddbb74c56bfe1d46414cfddcd3c6f7bf19124efdf3d46
+ sourceRevisionDigest: sha256:75219678a88c6c33fb86008c9884efc70d3afa9571fb4bdcad817b0c52e38ffa
+ sourceBlobDigest: sha256:dce598aa43ade42a9ea54bb0cf25914cee5596a451689784f7e6f487bcd62fae
tags:
- latest
- 1.0.0
@@ -11,10 +11,10 @@ targets:
open-router:
source: OpenRouter API
sourceNamespace: open-router-chat-completions-api
- sourceRevisionDigest: sha256:86362b59ed209d44a72e17143c0d6d553ee4a08a72794dcab7e45b2a6f4e7f5e
- sourceBlobDigest: sha256:2cafada247780172cf6ddbb74c56bfe1d46414cfddcd3c6f7bf19124efdf3d46
+ sourceRevisionDigest: sha256:75219678a88c6c33fb86008c9884efc70d3afa9571fb4bdcad817b0c52e38ffa
+ sourceBlobDigest: sha256:dce598aa43ade42a9ea54bb0cf25914cee5596a451689784f7e6f487bcd62fae
codeSamplesNamespace: open-router-python-code-samples
- codeSamplesRevisionDigest: sha256:59f269e778b3e98ce2d668ed3ebdcc893d92dc5a6a07cdd26200a19e59113c02
+ codeSamplesRevisionDigest: sha256:577f3c5860b667fabda4136bb17d41670751abc93c7c527c872aef179228d6fe
workflow:
workflowVersion: 1.0.0
speakeasyVersion: 1.787.0
diff --git a/RELEASES.md b/RELEASES.md
index 5cf3ef5f..ddcc8449 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -2549,4 +2549,14 @@ Based on:
### Generated
- [python v1.2.14] .
### Releases
-- [PyPI v1.2.14] https://pypi.org/project/openrouter/1.2.14 - .
\ No newline at end of file
+- [PyPI v1.2.14] https://pypi.org/project/openrouter/1.2.14 - .
+
+## 2026-09-22 00:11:13
+### Changes
+Based on:
+- OpenAPI Doc
+- Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy
+### Generated
+- [python v1.2.15] .
+### Releases
+- [PyPI v1.2.15] https://pypi.org/project/openrouter/1.2.15 - .
\ No newline at end of file
diff --git a/docs/components/createworkspacerequest.mdx b/docs/components/createworkspacerequest.mdx
index 3de1021e..2d5e2868 100644
--- a/docs/components/createworkspacerequest.mdx
+++ b/docs/components/createworkspacerequest.mdx
@@ -4,16 +4,17 @@ title: "CreateWorkspaceRequest"
## Fields
-| Field | Type | Required | Description | Example |
-| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
-| `default_image_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default image model for this workspace | openai/dall-e-3 |
-| `default_provider_sort` | *OptionalNullable[str]* | :heavy_minus_sign: | Default provider sort preference (price, throughput, latency, exacto) | price |
-| `default_text_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default text model for this workspace | openai/gpt-4o |
-| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Description of the workspace | Production environment workspace |
-| `io_logging_api_key_ids` | List[*int*] | :heavy_minus_sign: | Optional array of API key IDs to filter I/O logging | null |
-| `io_logging_sampling_rate` | *Optional[float]* | :heavy_minus_sign: | Sampling rate for I/O logging (0.0001-1) | 1 |
-| `is_data_discount_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether data discount logging is enabled | true |
-| `is_observability_broadcast_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether broadcast is enabled | false |
-| `is_observability_io_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether private logging is enabled | false |
-| `name` | *str* | :heavy_check_mark: | Name for the new workspace | Production |
-| `slug` | *str* | :heavy_check_mark: | URL-friendly slug (lowercase alphanumeric segments separated by single hyphens, no leading/trailing hyphens) | production |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `default_image_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default image model for this workspace | openai/dall-e-3 |
+| `default_provider_sort` | *OptionalNullable[str]* | :heavy_minus_sign: | Default provider sort preference (price, throughput, latency, exacto) | price |
+| `default_text_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default text model for this workspace | openai/gpt-4o |
+| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Description of the workspace | Production environment workspace |
+| `disabled_server_tools` | List[[components.CreateWorkspaceRequestDisabledServerTool](../components/createworkspacerequestdisabledservertool.mdx)] | :heavy_minus_sign: | OpenRouter server tools that requests in this workspace may not invoke. Requests naming a disabled tool are rejected with 403. An empty array or null clears the list. | [
"openrouter:web_search",
"openrouter:bash"
] |
+| `io_logging_api_key_ids` | List[*int*] | :heavy_minus_sign: | Optional array of API key IDs to filter I/O logging | null |
+| `io_logging_sampling_rate` | *Optional[float]* | :heavy_minus_sign: | Sampling rate for I/O logging (0.0001-1) | 1 |
+| `is_data_discount_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether data discount logging is enabled | true |
+| `is_observability_broadcast_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether broadcast is enabled | false |
+| `is_observability_io_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether private logging is enabled | false |
+| `name` | *str* | :heavy_check_mark: | Name for the new workspace | Production |
+| `slug` | *str* | :heavy_check_mark: | URL-friendly slug (lowercase alphanumeric segments separated by single hyphens, no leading/trailing hyphens) | production |
\ No newline at end of file
diff --git a/docs/components/createworkspacerequestdisabledservertool.mdx b/docs/components/createworkspacerequestdisabledservertool.mdx
new file mode 100644
index 00000000..8156c97b
--- /dev/null
+++ b/docs/components/createworkspacerequestdisabledservertool.mdx
@@ -0,0 +1,30 @@
+---
+title: "CreateWorkspaceRequestDisabledServerTool"
+---
+
+## Example Usage
+
+```python
+from openrouter.components import CreateWorkspaceRequestDisabledServerTool
+
+# Open enum: unrecognized values are captured as UnrecognizedStr
+value: CreateWorkspaceRequestDisabledServerTool = "openrouter:advisor"
+```
+
+
+## Values
+
+This is an open enum. Unrecognized values will not fail type checks.
+
+- `"openrouter:advisor"`
+- `"openrouter:apply_patch"`
+- `"openrouter:bash"`
+- `"openrouter:datetime"`
+- `"openrouter:fusion"`
+- `"openrouter:image_generation"`
+- `"openrouter:experimental__search_models"`
+- `"openrouter:shell"`
+- `"openrouter:subagent"`
+- `"openrouter:tool_search"`
+- `"openrouter:web_fetch"`
+- `"openrouter:web_search"`
diff --git a/docs/components/createworkspaceresponse.mdx b/docs/components/createworkspaceresponse.mdx
index aee384f4..27d6f40a 100644
--- a/docs/components/createworkspaceresponse.mdx
+++ b/docs/components/createworkspaceresponse.mdx
@@ -4,6 +4,6 @@ title: "CreateWorkspaceResponse"
## Fields
-| Field | Type | Required | Description | Example |
-| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `data` | [components.Workspace](../components/workspace.mdx) | :heavy_check_mark: | N/A | \{
"created_at": "2025-08-24T10:30:00Z",
"created_by": "user_abc123",
"default_guardrail_id": "595d5849-7e86-51fd-a7c0-705c34e4afff",
"default_image_model": "openai/dall-e-3",
"default_provider_sort": "price",
"default_text_model": "openai/gpt-4o",
"description": "Production environment workspace",
"id": "550e8400-e29b-41d4-a716-446655440000",
"include_byok_in_budgets": false,
"io_logging_api_key_ids": null,
"io_logging_sampling_rate": 1,
"is_data_discount_logging_enabled": true,
"is_observability_broadcast_enabled": false,
"is_observability_io_logging_enabled": false,
"name": "Production",
"slug": "production",
"updated_at": "2025-08-24T15:45:00Z"
} |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `data` | [components.Workspace](../components/workspace.mdx) | :heavy_check_mark: | N/A | \{
"created_at": "2025-08-24T10:30:00Z",
"created_by": "user_abc123",
"default_guardrail_id": "595d5849-7e86-51fd-a7c0-705c34e4afff",
"default_image_model": "openai/dall-e-3",
"default_provider_sort": "price",
"default_text_model": "openai/gpt-4o",
"description": "Production environment workspace",
"disabled_server_tools": null,
"id": "550e8400-e29b-41d4-a716-446655440000",
"include_byok_in_budgets": false,
"io_logging_api_key_ids": null,
"io_logging_sampling_rate": 1,
"is_data_discount_logging_enabled": true,
"is_observability_broadcast_enabled": false,
"is_observability_io_logging_enabled": false,
"name": "Production",
"slug": "production",
"updated_at": "2025-08-24T15:45:00Z"
} |
\ No newline at end of file
diff --git a/docs/components/getworkspaceresponse.mdx b/docs/components/getworkspaceresponse.mdx
index 42ef3f34..3028ce13 100644
--- a/docs/components/getworkspaceresponse.mdx
+++ b/docs/components/getworkspaceresponse.mdx
@@ -4,6 +4,6 @@ title: "GetWorkspaceResponse"
## Fields
-| Field | Type | Required | Description | Example |
-| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `data` | [components.Workspace](../components/workspace.mdx) | :heavy_check_mark: | N/A | \{
"created_at": "2025-08-24T10:30:00Z",
"created_by": "user_abc123",
"default_guardrail_id": "595d5849-7e86-51fd-a7c0-705c34e4afff",
"default_image_model": "openai/dall-e-3",
"default_provider_sort": "price",
"default_text_model": "openai/gpt-4o",
"description": "Production environment workspace",
"id": "550e8400-e29b-41d4-a716-446655440000",
"include_byok_in_budgets": false,
"io_logging_api_key_ids": null,
"io_logging_sampling_rate": 1,
"is_data_discount_logging_enabled": true,
"is_observability_broadcast_enabled": false,
"is_observability_io_logging_enabled": false,
"name": "Production",
"slug": "production",
"updated_at": "2025-08-24T15:45:00Z"
} |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `data` | [components.Workspace](../components/workspace.mdx) | :heavy_check_mark: | N/A | \{
"created_at": "2025-08-24T10:30:00Z",
"created_by": "user_abc123",
"default_guardrail_id": "595d5849-7e86-51fd-a7c0-705c34e4afff",
"default_image_model": "openai/dall-e-3",
"default_provider_sort": "price",
"default_text_model": "openai/gpt-4o",
"description": "Production environment workspace",
"disabled_server_tools": null,
"id": "550e8400-e29b-41d4-a716-446655440000",
"include_byok_in_budgets": false,
"io_logging_api_key_ids": null,
"io_logging_sampling_rate": 1,
"is_data_discount_logging_enabled": true,
"is_observability_broadcast_enabled": false,
"is_observability_io_logging_enabled": false,
"name": "Production",
"slug": "production",
"updated_at": "2025-08-24T15:45:00Z"
} |
\ No newline at end of file
diff --git a/docs/components/updateworkspacerequest.mdx b/docs/components/updateworkspacerequest.mdx
index f7e95917..d0d068f6 100644
--- a/docs/components/updateworkspacerequest.mdx
+++ b/docs/components/updateworkspacerequest.mdx
@@ -4,16 +4,17 @@ title: "UpdateWorkspaceRequest"
## Fields
-| Field | Type | Required | Description | Example |
-| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
-| `default_image_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default image model for this workspace | openai/dall-e-3 |
-| `default_provider_sort` | *OptionalNullable[str]* | :heavy_minus_sign: | Default provider sort preference (price, throughput, latency, exacto) | price |
-| `default_text_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default text model for this workspace | openai/gpt-4o |
-| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | New description for the workspace | Updated description |
-| `io_logging_api_key_ids` | List[*int*] | :heavy_minus_sign: | Optional array of API key IDs to filter I/O logging | null |
-| `io_logging_sampling_rate` | *Optional[float]* | :heavy_minus_sign: | Sampling rate for I/O logging (0.0001-1) | 1 |
-| `is_data_discount_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether data discount logging is enabled | true |
-| `is_observability_broadcast_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether broadcast is enabled | false |
-| `is_observability_io_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether private logging is enabled | false |
-| `name` | *Optional[str]* | :heavy_minus_sign: | New name for the workspace | Updated Workspace |
-| `slug` | *Optional[str]* | :heavy_minus_sign: | New URL-friendly slug (lowercase alphanumeric segments separated by single hyphens, no leading/trailing hyphens) | updated-workspace |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `default_image_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default image model for this workspace | openai/dall-e-3 |
+| `default_provider_sort` | *OptionalNullable[str]* | :heavy_minus_sign: | Default provider sort preference (price, throughput, latency, exacto) | price |
+| `default_text_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default text model for this workspace | openai/gpt-4o |
+| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | New description for the workspace | Updated description |
+| `disabled_server_tools` | List[[components.UpdateWorkspaceRequestDisabledServerTool](../components/updateworkspacerequestdisabledservertool.mdx)] | :heavy_minus_sign: | OpenRouter server tools that requests in this workspace may not invoke. Requests naming a disabled tool are rejected with 403. An empty array or null clears the list. | [
"openrouter:web_search",
"openrouter:bash"
] |
+| `io_logging_api_key_ids` | List[*int*] | :heavy_minus_sign: | Optional array of API key IDs to filter I/O logging | null |
+| `io_logging_sampling_rate` | *Optional[float]* | :heavy_minus_sign: | Sampling rate for I/O logging (0.0001-1) | 1 |
+| `is_data_discount_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether data discount logging is enabled | true |
+| `is_observability_broadcast_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether broadcast is enabled | false |
+| `is_observability_io_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether private logging is enabled | false |
+| `name` | *Optional[str]* | :heavy_minus_sign: | New name for the workspace | Updated Workspace |
+| `slug` | *Optional[str]* | :heavy_minus_sign: | New URL-friendly slug (lowercase alphanumeric segments separated by single hyphens, no leading/trailing hyphens) | updated-workspace |
\ No newline at end of file
diff --git a/docs/components/updateworkspacerequestdisabledservertool.mdx b/docs/components/updateworkspacerequestdisabledservertool.mdx
new file mode 100644
index 00000000..0ac89d20
--- /dev/null
+++ b/docs/components/updateworkspacerequestdisabledservertool.mdx
@@ -0,0 +1,30 @@
+---
+title: "UpdateWorkspaceRequestDisabledServerTool"
+---
+
+## Example Usage
+
+```python
+from openrouter.components import UpdateWorkspaceRequestDisabledServerTool
+
+# Open enum: unrecognized values are captured as UnrecognizedStr
+value: UpdateWorkspaceRequestDisabledServerTool = "openrouter:advisor"
+```
+
+
+## Values
+
+This is an open enum. Unrecognized values will not fail type checks.
+
+- `"openrouter:advisor"`
+- `"openrouter:apply_patch"`
+- `"openrouter:bash"`
+- `"openrouter:datetime"`
+- `"openrouter:fusion"`
+- `"openrouter:image_generation"`
+- `"openrouter:experimental__search_models"`
+- `"openrouter:shell"`
+- `"openrouter:subagent"`
+- `"openrouter:tool_search"`
+- `"openrouter:web_fetch"`
+- `"openrouter:web_search"`
diff --git a/docs/components/updateworkspaceresponse.mdx b/docs/components/updateworkspaceresponse.mdx
index 62f45221..bb50c7c7 100644
--- a/docs/components/updateworkspaceresponse.mdx
+++ b/docs/components/updateworkspaceresponse.mdx
@@ -4,6 +4,6 @@ title: "UpdateWorkspaceResponse"
## Fields
-| Field | Type | Required | Description | Example |
-| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `data` | [components.Workspace](../components/workspace.mdx) | :heavy_check_mark: | N/A | \{
"created_at": "2025-08-24T10:30:00Z",
"created_by": "user_abc123",
"default_guardrail_id": "595d5849-7e86-51fd-a7c0-705c34e4afff",
"default_image_model": "openai/dall-e-3",
"default_provider_sort": "price",
"default_text_model": "openai/gpt-4o",
"description": "Production environment workspace",
"id": "550e8400-e29b-41d4-a716-446655440000",
"include_byok_in_budgets": false,
"io_logging_api_key_ids": null,
"io_logging_sampling_rate": 1,
"is_data_discount_logging_enabled": true,
"is_observability_broadcast_enabled": false,
"is_observability_io_logging_enabled": false,
"name": "Production",
"slug": "production",
"updated_at": "2025-08-24T15:45:00Z"
} |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `data` | [components.Workspace](../components/workspace.mdx) | :heavy_check_mark: | N/A | \{
"created_at": "2025-08-24T10:30:00Z",
"created_by": "user_abc123",
"default_guardrail_id": "595d5849-7e86-51fd-a7c0-705c34e4afff",
"default_image_model": "openai/dall-e-3",
"default_provider_sort": "price",
"default_text_model": "openai/gpt-4o",
"description": "Production environment workspace",
"disabled_server_tools": null,
"id": "550e8400-e29b-41d4-a716-446655440000",
"include_byok_in_budgets": false,
"io_logging_api_key_ids": null,
"io_logging_sampling_rate": 1,
"is_data_discount_logging_enabled": true,
"is_observability_broadcast_enabled": false,
"is_observability_io_logging_enabled": false,
"name": "Production",
"slug": "production",
"updated_at": "2025-08-24T15:45:00Z"
} |
\ No newline at end of file
diff --git a/docs/components/workspace.mdx b/docs/components/workspace.mdx
index bfb57ad4..e3866ea0 100644
--- a/docs/components/workspace.mdx
+++ b/docs/components/workspace.mdx
@@ -4,22 +4,23 @@ title: "Workspace"
## Fields
-| Field | Type | Required | Description | Example |
-| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ |
-| `created_at` | *str* | :heavy_check_mark: | ISO 8601 timestamp of when the workspace was created | 2025-08-24T10:30:00Z |
-| `created_by` | *Nullable[str]* | :heavy_check_mark: | User ID of the workspace creator | user_abc123 |
-| `default_guardrail_id` | *str* | :heavy_check_mark: | Deterministic ID derived from the workspace ID. The default guardrail is materialized when its configuration is first written. | 595d5849-7e86-51fd-a7c0-705c34e4afff |
-| `default_image_model` | *Nullable[str]* | :heavy_check_mark: | Default image model for this workspace | openai/dall-e-3 |
-| `default_provider_sort` | *Nullable[str]* | :heavy_check_mark: | Default provider sort preference (price, throughput, latency, exacto) | price |
-| `default_text_model` | *Nullable[str]* | :heavy_check_mark: | Default text model for this workspace | openai/gpt-4o |
-| `description` | *Nullable[str]* | :heavy_check_mark: | Description of the workspace | Production environment workspace |
-| `id` | *str* | :heavy_check_mark: | Unique identifier for the workspace | 550e8400-e29b-41d4-a716-446655440000 |
-| `include_byok_in_budgets` | *Optional[bool]* | :heavy_minus_sign: | Whether BYOK (bring-your-own-key) spend counts toward this workspace's budgets. Set it via the workspace budget endpoints. | false |
-| `io_logging_api_key_ids` | List[*int*] | :heavy_check_mark: | Optional array of API key IDs to filter I/O logging. Null means all keys are logged. | null |
-| `io_logging_sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for I/O logging (0.0001-1). 1 means 100% of requests are logged. | 1 |
-| `is_data_discount_logging_enabled` | *bool* | :heavy_check_mark: | Whether data discount logging is enabled for this workspace | true |
-| `is_observability_broadcast_enabled` | *bool* | :heavy_check_mark: | Whether broadcast is enabled for this workspace | false |
-| `is_observability_io_logging_enabled` | *bool* | :heavy_check_mark: | Whether private logging is enabled for this workspace | false |
-| `name` | *str* | :heavy_check_mark: | Name of the workspace | Production |
-| `slug` | *str* | :heavy_check_mark: | URL-friendly slug for the workspace | production |
-| `updated_at` | *Nullable[str]* | :heavy_check_mark: | ISO 8601 timestamp of when the workspace was last updated | 2025-08-24T15:45:00Z |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
+| `created_at` | *str* | :heavy_check_mark: | ISO 8601 timestamp of when the workspace was created | 2025-08-24T10:30:00Z |
+| `created_by` | *Nullable[str]* | :heavy_check_mark: | User ID of the workspace creator | user_abc123 |
+| `default_guardrail_id` | *str* | :heavy_check_mark: | Deterministic ID derived from the workspace ID. The default guardrail is materialized when its configuration is first written. | 595d5849-7e86-51fd-a7c0-705c34e4afff |
+| `default_image_model` | *Nullable[str]* | :heavy_check_mark: | Default image model for this workspace | openai/dall-e-3 |
+| `default_provider_sort` | *Nullable[str]* | :heavy_check_mark: | Default provider sort preference (price, throughput, latency, exacto) | price |
+| `default_text_model` | *Nullable[str]* | :heavy_check_mark: | Default text model for this workspace | openai/gpt-4o |
+| `description` | *Nullable[str]* | :heavy_check_mark: | Description of the workspace | Production environment workspace |
+| `disabled_server_tools` | List[*str*] | :heavy_minus_sign: | OpenRouter server tools (e.g. openrouter:web_search) that requests in this workspace may not invoke. Null means no tools are disabled. | null |
+| `id` | *str* | :heavy_check_mark: | Unique identifier for the workspace | 550e8400-e29b-41d4-a716-446655440000 |
+| `include_byok_in_budgets` | *Optional[bool]* | :heavy_minus_sign: | Whether BYOK (bring-your-own-key) spend counts toward this workspace's budgets. Set it via the workspace budget endpoints. | false |
+| `io_logging_api_key_ids` | List[*int*] | :heavy_check_mark: | Optional array of API key IDs to filter I/O logging. Null means all keys are logged. | null |
+| `io_logging_sampling_rate` | *float* | :heavy_check_mark: | Sampling rate for I/O logging (0.0001-1). 1 means 100% of requests are logged. | 1 |
+| `is_data_discount_logging_enabled` | *bool* | :heavy_check_mark: | Whether data discount logging is enabled for this workspace | true |
+| `is_observability_broadcast_enabled` | *bool* | :heavy_check_mark: | Whether broadcast is enabled for this workspace | false |
+| `is_observability_io_logging_enabled` | *bool* | :heavy_check_mark: | Whether private logging is enabled for this workspace | false |
+| `name` | *str* | :heavy_check_mark: | Name of the workspace | Production |
+| `slug` | *str* | :heavy_check_mark: | URL-friendly slug for the workspace | production |
+| `updated_at` | *Nullable[str]* | :heavy_check_mark: | ISO 8601 timestamp of when the workspace was last updated | 2025-08-24T15:45:00Z |
\ No newline at end of file
diff --git a/docs/operations/listworkspacesresponse.mdx b/docs/operations/listworkspacesresponse.mdx
index f0b5fa55..44258f9a 100644
--- a/docs/operations/listworkspacesresponse.mdx
+++ b/docs/operations/listworkspacesresponse.mdx
@@ -4,6 +4,6 @@ title: "ListWorkspacesResponse"
## Fields
-| Field | Type | Required | Description | Example |
-| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `result` | [components.ListWorkspacesResponse](../components/listworkspacesresponse.mdx) | :heavy_check_mark: | N/A | \{
"data": [
\{
"created_at": "2025-08-24T10:30:00Z",
"created_by": "user_abc123",
"default_guardrail_id": "595d5849-7e86-51fd-a7c0-705c34e4afff",
"default_image_model": "openai/dall-e-3",
"default_provider_sort": "price",
"default_text_model": "openai/gpt-4o",
"description": "Production environment workspace",
"id": "550e8400-e29b-41d4-a716-446655440000",
"include_byok_in_budgets": false,
"io_logging_api_key_ids": null,
"io_logging_sampling_rate": 1,
"is_data_discount_logging_enabled": true,
"is_observability_broadcast_enabled": false,
"is_observability_io_logging_enabled": false,
"name": "Production",
"slug": "production",
"updated_at": "2025-08-24T15:45:00Z"
}
],
"total_count": 1
} |
\ No newline at end of file
+| Field | Type | Required | Description | Example |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `result` | [components.ListWorkspacesResponse](../components/listworkspacesresponse.mdx) | :heavy_check_mark: | N/A | \{
"data": [
\{
"created_at": "2025-08-24T10:30:00Z",
"created_by": "user_abc123",
"default_guardrail_id": "595d5849-7e86-51fd-a7c0-705c34e4afff",
"default_image_model": "openai/dall-e-3",
"default_provider_sort": "price",
"default_text_model": "openai/gpt-4o",
"description": "Production environment workspace",
"disabled_server_tools": null,
"id": "550e8400-e29b-41d4-a716-446655440000",
"include_byok_in_budgets": false,
"io_logging_api_key_ids": null,
"io_logging_sampling_rate": 1,
"is_data_discount_logging_enabled": true,
"is_observability_broadcast_enabled": false,
"is_observability_io_logging_enabled": false,
"name": "Production",
"slug": "production",
"updated_at": "2025-08-24T15:45:00Z"
}
],
"total_count": 1
} |
\ No newline at end of file
diff --git a/docs/sdks/workspaces/README.mdx b/docs/sdks/workspaces/README.mdx
index 056f17b8..bf6f0de6 100644
--- a/docs/sdks/workspaces/README.mdx
+++ b/docs/sdks/workspaces/README.mdx
@@ -99,23 +99,24 @@ with OpenRouter(
### Parameters
-| Parameter | Type | Required | Description | Example |
-| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `name` | *str* | :heavy_check_mark: | Name for the new workspace | Production |
-| `slug` | *str* | :heavy_check_mark: | URL-friendly slug (lowercase alphanumeric segments separated by single hyphens, no leading/trailing hyphens) | production |
-| `http_referer` | *Optional[str]* | :heavy_minus_sign: | 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]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| |
-| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| |
-| `default_image_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default image model for this workspace | openai/dall-e-3 |
-| `default_provider_sort` | *OptionalNullable[str]* | :heavy_minus_sign: | Default provider sort preference (price, throughput, latency, exacto) | price |
-| `default_text_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default text model for this workspace | openai/gpt-4o |
-| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Description of the workspace | Production environment workspace |
-| `io_logging_api_key_ids` | List[*int*] | :heavy_minus_sign: | Optional array of API key IDs to filter I/O logging | null |
-| `io_logging_sampling_rate` | *Optional[float]* | :heavy_minus_sign: | Sampling rate for I/O logging (0.0001-1) | 1 |
-| `is_data_discount_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether data discount logging is enabled | true |
-| `is_observability_broadcast_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether broadcast is enabled | false |
-| `is_observability_io_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether private logging is enabled | false |
-| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | |
+| Parameter | Type | Required | Description | Example |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `name` | *str* | :heavy_check_mark: | Name for the new workspace | Production |
+| `slug` | *str* | :heavy_check_mark: | URL-friendly slug (lowercase alphanumeric segments separated by single hyphens, no leading/trailing hyphens) | production |
+| `http_referer` | *Optional[str]* | :heavy_minus_sign: | 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]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| |
+| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| |
+| `default_image_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default image model for this workspace | openai/dall-e-3 |
+| `default_provider_sort` | *OptionalNullable[str]* | :heavy_minus_sign: | Default provider sort preference (price, throughput, latency, exacto) | price |
+| `default_text_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default text model for this workspace | openai/gpt-4o |
+| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Description of the workspace | Production environment workspace |
+| `disabled_server_tools` | List[[components.CreateWorkspaceRequestDisabledServerTool](../../components/createworkspacerequestdisabledservertool.mdx)] | :heavy_minus_sign: | OpenRouter server tools that requests in this workspace may not invoke. Requests naming a disabled tool are rejected with 403. An empty array or null clears the list. | [
"openrouter:web_search",
"openrouter:bash"
] |
+| `io_logging_api_key_ids` | List[*int*] | :heavy_minus_sign: | Optional array of API key IDs to filter I/O logging | null |
+| `io_logging_sampling_rate` | *Optional[float]* | :heavy_minus_sign: | Sampling rate for I/O logging (0.0001-1) | 1 |
+| `is_data_discount_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether data discount logging is enabled | true |
+| `is_observability_broadcast_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether broadcast is enabled | false |
+| `is_observability_io_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether private logging is enabled | false |
+| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | |
### Response
@@ -257,24 +258,25 @@ with OpenRouter(
### Parameters
-| Parameter | Type | Required | Description | Example |
-| ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production |
-| `http_referer` | *Optional[str]* | :heavy_minus_sign: | 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]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| |
-| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| |
-| `default_image_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default image model for this workspace | openai/dall-e-3 |
-| `default_provider_sort` | *OptionalNullable[str]* | :heavy_minus_sign: | Default provider sort preference (price, throughput, latency, exacto) | price |
-| `default_text_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default text model for this workspace | openai/gpt-4o |
-| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | New description for the workspace | Updated description |
-| `io_logging_api_key_ids` | List[*int*] | :heavy_minus_sign: | Optional array of API key IDs to filter I/O logging | null |
-| `io_logging_sampling_rate` | *Optional[float]* | :heavy_minus_sign: | Sampling rate for I/O logging (0.0001-1) | 1 |
-| `is_data_discount_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether data discount logging is enabled | true |
-| `is_observability_broadcast_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether broadcast is enabled | false |
-| `is_observability_io_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether private logging is enabled | false |
-| `name` | *Optional[str]* | :heavy_minus_sign: | New name for the workspace | Updated Workspace |
-| `slug` | *Optional[str]* | :heavy_minus_sign: | New URL-friendly slug (lowercase alphanumeric segments separated by single hyphens, no leading/trailing hyphens) | updated-workspace |
-| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | |
+| Parameter | Type | Required | Description | Example |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `id` | *str* | :heavy_check_mark: | The workspace ID (UUID) or slug | production |
+| `http_referer` | *Optional[str]* | :heavy_minus_sign: | 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]* | :heavy_minus_sign: | The app display name allows you to customize how your app appears in OpenRouter's dashboard.
| |
+| `x_open_router_categories` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of app categories (e.g. "cli-agent,cloud-agent"). Used for marketplace rankings.
| |
+| `default_image_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default image model for this workspace | openai/dall-e-3 |
+| `default_provider_sort` | *OptionalNullable[str]* | :heavy_minus_sign: | Default provider sort preference (price, throughput, latency, exacto) | price |
+| `default_text_model` | *OptionalNullable[str]* | :heavy_minus_sign: | Default text model for this workspace | openai/gpt-4o |
+| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | New description for the workspace | Updated description |
+| `disabled_server_tools` | List[[components.UpdateWorkspaceRequestDisabledServerTool](../../components/updateworkspacerequestdisabledservertool.mdx)] | :heavy_minus_sign: | OpenRouter server tools that requests in this workspace may not invoke. Requests naming a disabled tool are rejected with 403. An empty array or null clears the list. | [
"openrouter:web_search",
"openrouter:bash"
] |
+| `io_logging_api_key_ids` | List[*int*] | :heavy_minus_sign: | Optional array of API key IDs to filter I/O logging | null |
+| `io_logging_sampling_rate` | *Optional[float]* | :heavy_minus_sign: | Sampling rate for I/O logging (0.0001-1) | 1 |
+| `is_data_discount_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether data discount logging is enabled | true |
+| `is_observability_broadcast_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether broadcast is enabled | false |
+| `is_observability_io_logging_enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether private logging is enabled | false |
+| `name` | *Optional[str]* | :heavy_minus_sign: | New name for the workspace | Updated Workspace |
+| `slug` | *Optional[str]* | :heavy_minus_sign: | New URL-friendly slug (lowercase alphanumeric segments separated by single hyphens, no leading/trailing hyphens) | updated-workspace |
+| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.mdx) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | |
### Response
diff --git a/pyproject.toml b/pyproject.toml
index 3c96005e..dc021642 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "openrouter"
-version = "1.2.14"
+version = "1.2.15"
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 f36d1bff..22d2e2ac 100644
--- a/src/openrouter/_version.py
+++ b/src/openrouter/_version.py
@@ -3,10 +3,10 @@
import importlib.metadata
__title__: str = "openrouter"
-__version__: str = "1.2.14"
+__version__: str = "1.2.15"
__openapi_doc_version__: str = "1.0.0"
__gen_version__: str = "2.914.0"
-__user_agent__: str = "speakeasy-sdk/python 1.2.14 2.914.0 1.0.0 openrouter"
+__user_agent__: str = "speakeasy-sdk/python 1.2.15 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 c72a9ee2..ae01b770 100644
--- a/src/openrouter/components/__init__.py
+++ b/src/openrouter/components/__init__.py
@@ -915,6 +915,7 @@
)
from .createworkspacerequest import (
CreateWorkspaceRequest,
+ CreateWorkspaceRequestDisabledServerTool,
CreateWorkspaceRequestTypedDict,
)
from .createworkspaceresponse import (
@@ -3342,6 +3343,7 @@
)
from .updateworkspacerequest import (
UpdateWorkspaceRequest,
+ UpdateWorkspaceRequestDisabledServerTool,
UpdateWorkspaceRequestTypedDict,
)
from .updateworkspaceresponse import (
@@ -4149,6 +4151,7 @@
"CreateScimSyncJobResponse",
"CreateScimSyncJobResponseTypedDict",
"CreateWorkspaceRequest",
+ "CreateWorkspaceRequestDisabledServerTool",
"CreateWorkspaceRequestTypedDict",
"CreateWorkspaceResponse",
"CreateWorkspaceResponseTypedDict",
@@ -5932,6 +5935,7 @@
"UpdateScimGroupMappingResponse",
"UpdateScimGroupMappingResponseTypedDict",
"UpdateWorkspaceRequest",
+ "UpdateWorkspaceRequestDisabledServerTool",
"UpdateWorkspaceRequestTypedDict",
"UpdateWorkspaceResponse",
"UpdateWorkspaceResponseTypedDict",
@@ -6668,6 +6672,7 @@
"CreateScimSyncJobResponse": ".createscimsyncjobresponse",
"CreateScimSyncJobResponseTypedDict": ".createscimsyncjobresponse",
"CreateWorkspaceRequest": ".createworkspacerequest",
+ "CreateWorkspaceRequestDisabledServerTool": ".createworkspacerequest",
"CreateWorkspaceRequestTypedDict": ".createworkspacerequest",
"CreateWorkspaceResponse": ".createworkspaceresponse",
"CreateWorkspaceResponseTypedDict": ".createworkspaceresponse",
@@ -8483,6 +8488,7 @@
"UpdateScimGroupMappingResponse": ".updatescimgroupmappingresponse",
"UpdateScimGroupMappingResponseTypedDict": ".updatescimgroupmappingresponse",
"UpdateWorkspaceRequest": ".updateworkspacerequest",
+ "UpdateWorkspaceRequestDisabledServerTool": ".updateworkspacerequest",
"UpdateWorkspaceRequestTypedDict": ".updateworkspacerequest",
"UpdateWorkspaceResponse": ".updateworkspaceresponse",
"UpdateWorkspaceResponseTypedDict": ".updateworkspaceresponse",
diff --git a/src/openrouter/components/createworkspacerequest.py b/src/openrouter/components/createworkspacerequest.py
index 0596d01d..70e1a406 100644
--- a/src/openrouter/components/createworkspacerequest.py
+++ b/src/openrouter/components/createworkspacerequest.py
@@ -7,12 +7,32 @@
OptionalNullable,
UNSET,
UNSET_SENTINEL,
+ UnrecognizedStr,
)
from pydantic import model_serializer
-from typing import List, Optional
+from typing import List, Literal, Optional, Union
from typing_extensions import NotRequired, TypedDict
+CreateWorkspaceRequestDisabledServerTool = Union[
+ Literal[
+ "openrouter:advisor",
+ "openrouter:apply_patch",
+ "openrouter:bash",
+ "openrouter:datetime",
+ "openrouter:fusion",
+ "openrouter:image_generation",
+ "openrouter:experimental__search_models",
+ "openrouter:shell",
+ "openrouter:subagent",
+ "openrouter:tool_search",
+ "openrouter:web_fetch",
+ "openrouter:web_search",
+ ],
+ UnrecognizedStr,
+]
+
+
class CreateWorkspaceRequestTypedDict(TypedDict):
name: str
r"""Name for the new workspace"""
@@ -26,6 +46,10 @@ class CreateWorkspaceRequestTypedDict(TypedDict):
r"""Default text model for this workspace"""
description: NotRequired[Nullable[str]]
r"""Description of the workspace"""
+ disabled_server_tools: NotRequired[
+ Nullable[List[CreateWorkspaceRequestDisabledServerTool]]
+ ]
+ r"""OpenRouter server tools that requests in this workspace may not invoke. Requests naming a disabled tool are rejected with 403. An empty array or null clears the list."""
io_logging_api_key_ids: NotRequired[Nullable[List[int]]]
r"""Optional array of API key IDs to filter I/O logging"""
io_logging_sampling_rate: NotRequired[float]
@@ -57,6 +81,11 @@ class CreateWorkspaceRequest(BaseModel):
description: OptionalNullable[str] = UNSET
r"""Description of the workspace"""
+ disabled_server_tools: OptionalNullable[
+ List[CreateWorkspaceRequestDisabledServerTool]
+ ] = UNSET
+ r"""OpenRouter server tools that requests in this workspace may not invoke. Requests naming a disabled tool are rejected with 403. An empty array or null clears the list."""
+
io_logging_api_key_ids: OptionalNullable[List[int]] = UNSET
r"""Optional array of API key IDs to filter I/O logging"""
@@ -80,6 +109,7 @@ def serialize_model(self, handler):
"default_provider_sort",
"default_text_model",
"description",
+ "disabled_server_tools",
"io_logging_api_key_ids",
"io_logging_sampling_rate",
"is_data_discount_logging_enabled",
@@ -93,6 +123,7 @@ def serialize_model(self, handler):
"default_provider_sort",
"default_text_model",
"description",
+ "disabled_server_tools",
"io_logging_api_key_ids",
]
)
diff --git a/src/openrouter/components/updateworkspacerequest.py b/src/openrouter/components/updateworkspacerequest.py
index f1569fcf..48897956 100644
--- a/src/openrouter/components/updateworkspacerequest.py
+++ b/src/openrouter/components/updateworkspacerequest.py
@@ -7,12 +7,32 @@
OptionalNullable,
UNSET,
UNSET_SENTINEL,
+ UnrecognizedStr,
)
from pydantic import model_serializer
-from typing import List, Optional
+from typing import List, Literal, Optional, Union
from typing_extensions import NotRequired, TypedDict
+UpdateWorkspaceRequestDisabledServerTool = Union[
+ Literal[
+ "openrouter:advisor",
+ "openrouter:apply_patch",
+ "openrouter:bash",
+ "openrouter:datetime",
+ "openrouter:fusion",
+ "openrouter:image_generation",
+ "openrouter:experimental__search_models",
+ "openrouter:shell",
+ "openrouter:subagent",
+ "openrouter:tool_search",
+ "openrouter:web_fetch",
+ "openrouter:web_search",
+ ],
+ UnrecognizedStr,
+]
+
+
class UpdateWorkspaceRequestTypedDict(TypedDict):
default_image_model: NotRequired[Nullable[str]]
r"""Default image model for this workspace"""
@@ -22,6 +42,10 @@ class UpdateWorkspaceRequestTypedDict(TypedDict):
r"""Default text model for this workspace"""
description: NotRequired[Nullable[str]]
r"""New description for the workspace"""
+ disabled_server_tools: NotRequired[
+ Nullable[List[UpdateWorkspaceRequestDisabledServerTool]]
+ ]
+ r"""OpenRouter server tools that requests in this workspace may not invoke. Requests naming a disabled tool are rejected with 403. An empty array or null clears the list."""
io_logging_api_key_ids: NotRequired[Nullable[List[int]]]
r"""Optional array of API key IDs to filter I/O logging"""
io_logging_sampling_rate: NotRequired[float]
@@ -51,6 +75,11 @@ class UpdateWorkspaceRequest(BaseModel):
description: OptionalNullable[str] = UNSET
r"""New description for the workspace"""
+ disabled_server_tools: OptionalNullable[
+ List[UpdateWorkspaceRequestDisabledServerTool]
+ ] = UNSET
+ r"""OpenRouter server tools that requests in this workspace may not invoke. Requests naming a disabled tool are rejected with 403. An empty array or null clears the list."""
+
io_logging_api_key_ids: OptionalNullable[List[int]] = UNSET
r"""Optional array of API key IDs to filter I/O logging"""
@@ -80,6 +109,7 @@ def serialize_model(self, handler):
"default_provider_sort",
"default_text_model",
"description",
+ "disabled_server_tools",
"io_logging_api_key_ids",
"io_logging_sampling_rate",
"is_data_discount_logging_enabled",
@@ -95,6 +125,7 @@ def serialize_model(self, handler):
"default_provider_sort",
"default_text_model",
"description",
+ "disabled_server_tools",
"io_logging_api_key_ids",
]
)
diff --git a/src/openrouter/components/workspace.py b/src/openrouter/components/workspace.py
index 68c99ace..874f9977 100644
--- a/src/openrouter/components/workspace.py
+++ b/src/openrouter/components/workspace.py
@@ -1,7 +1,13 @@
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
from __future__ import annotations
-from openrouter.types import BaseModel, Nullable, UNSET_SENTINEL
+from openrouter.types import (
+ BaseModel,
+ Nullable,
+ OptionalNullable,
+ UNSET,
+ UNSET_SENTINEL,
+)
from pydantic import model_serializer
from typing import List, Optional
from typing_extensions import NotRequired, TypedDict
@@ -40,6 +46,8 @@ class WorkspaceTypedDict(TypedDict):
r"""URL-friendly slug for the workspace"""
updated_at: Nullable[str]
r"""ISO 8601 timestamp of when the workspace was last updated"""
+ disabled_server_tools: NotRequired[Nullable[List[str]]]
+ r"""OpenRouter server tools (e.g. openrouter:web_search) that requests in this workspace may not invoke. Null means no tools are disabled."""
include_byok_in_budgets: NotRequired[bool]
r"""Whether BYOK (bring-your-own-key) spend counts toward this workspace's budgets. Set it via the workspace budget endpoints."""
@@ -93,12 +101,15 @@ class Workspace(BaseModel):
updated_at: Nullable[str]
r"""ISO 8601 timestamp of when the workspace was last updated"""
+ disabled_server_tools: OptionalNullable[List[str]] = UNSET
+ r"""OpenRouter server tools (e.g. openrouter:web_search) that requests in this workspace may not invoke. Null means no tools are disabled."""
+
include_byok_in_budgets: Optional[bool] = None
r"""Whether BYOK (bring-your-own-key) spend counts toward this workspace's budgets. Set it via the workspace budget endpoints."""
@model_serializer(mode="wrap")
def serialize_model(self, handler):
- optional_fields = set(["include_byok_in_budgets"])
+ optional_fields = set(["disabled_server_tools", "include_byok_in_budgets"])
nullable_fields = set(
[
"created_by",
@@ -106,6 +117,7 @@ def serialize_model(self, handler):
"default_provider_sort",
"default_text_model",
"description",
+ "disabled_server_tools",
"io_logging_api_key_ids",
"updated_at",
]
diff --git a/src/openrouter/workspaces.py b/src/openrouter/workspaces.py
index bf45330d..7237e212 100644
--- a/src/openrouter/workspaces.py
+++ b/src/openrouter/workspaces.py
@@ -344,6 +344,9 @@ def create(
default_provider_sort: OptionalNullable[str] = UNSET,
default_text_model: OptionalNullable[str] = UNSET,
description: OptionalNullable[str] = UNSET,
+ disabled_server_tools: OptionalNullable[
+ Iterable[components.CreateWorkspaceRequestDisabledServerTool]
+ ] = UNSET,
io_logging_api_key_ids: OptionalNullable[Iterable[int]] = UNSET,
io_logging_sampling_rate: Optional[float] = None,
is_data_discount_logging_enabled: Optional[bool] = None,
@@ -371,6 +374,7 @@ def create(
:param default_provider_sort: Default provider sort preference (price, throughput, latency, exacto)
:param default_text_model: Default text model for this workspace
:param description: Description of the workspace
+ :param disabled_server_tools: OpenRouter server tools that requests in this workspace may not invoke. Requests naming a disabled tool are rejected with 403. An empty array or null clears the list.
:param io_logging_api_key_ids: Optional array of API key IDs to filter I/O logging
:param io_logging_sampling_rate: Sampling rate for I/O logging (0.0001-1)
:param is_data_discount_logging_enabled: Whether data discount logging is enabled
@@ -400,6 +404,12 @@ def create(
default_provider_sort=default_provider_sort,
default_text_model=default_text_model,
description=description,
+ disabled_server_tools=utils.unmarshal(
+ disabled_server_tools,
+ OptionalNullable[
+ List[components.CreateWorkspaceRequestDisabledServerTool]
+ ],
+ ),
io_logging_api_key_ids=utils.unmarshal(
io_logging_api_key_ids, OptionalNullable[List[int]]
),
@@ -518,6 +528,9 @@ async def create_async(
default_provider_sort: OptionalNullable[str] = UNSET,
default_text_model: OptionalNullable[str] = UNSET,
description: OptionalNullable[str] = UNSET,
+ disabled_server_tools: OptionalNullable[
+ Iterable[components.CreateWorkspaceRequestDisabledServerTool]
+ ] = UNSET,
io_logging_api_key_ids: OptionalNullable[Iterable[int]] = UNSET,
io_logging_sampling_rate: Optional[float] = None,
is_data_discount_logging_enabled: Optional[bool] = None,
@@ -545,6 +558,7 @@ async def create_async(
:param default_provider_sort: Default provider sort preference (price, throughput, latency, exacto)
:param default_text_model: Default text model for this workspace
:param description: Description of the workspace
+ :param disabled_server_tools: OpenRouter server tools that requests in this workspace may not invoke. Requests naming a disabled tool are rejected with 403. An empty array or null clears the list.
:param io_logging_api_key_ids: Optional array of API key IDs to filter I/O logging
:param io_logging_sampling_rate: Sampling rate for I/O logging (0.0001-1)
:param is_data_discount_logging_enabled: Whether data discount logging is enabled
@@ -574,6 +588,12 @@ async def create_async(
default_provider_sort=default_provider_sort,
default_text_model=default_text_model,
description=description,
+ disabled_server_tools=utils.unmarshal(
+ disabled_server_tools,
+ OptionalNullable[
+ List[components.CreateWorkspaceRequestDisabledServerTool]
+ ],
+ ),
io_logging_api_key_ids=utils.unmarshal(
io_logging_api_key_ids, OptionalNullable[List[int]]
),
@@ -1229,6 +1249,9 @@ def update(
default_provider_sort: OptionalNullable[str] = UNSET,
default_text_model: OptionalNullable[str] = UNSET,
description: OptionalNullable[str] = UNSET,
+ disabled_server_tools: OptionalNullable[
+ Iterable[components.UpdateWorkspaceRequestDisabledServerTool]
+ ] = UNSET,
io_logging_api_key_ids: OptionalNullable[Iterable[int]] = UNSET,
io_logging_sampling_rate: Optional[float] = None,
is_data_discount_logging_enabled: Optional[bool] = None,
@@ -1257,6 +1280,7 @@ def update(
:param default_provider_sort: Default provider sort preference (price, throughput, latency, exacto)
:param default_text_model: Default text model for this workspace
:param description: New description for the workspace
+ :param disabled_server_tools: OpenRouter server tools that requests in this workspace may not invoke. Requests naming a disabled tool are rejected with 403. An empty array or null clears the list.
:param io_logging_api_key_ids: Optional array of API key IDs to filter I/O logging
:param io_logging_sampling_rate: Sampling rate for I/O logging (0.0001-1)
:param is_data_discount_logging_enabled: Whether data discount logging is enabled
@@ -1289,6 +1313,12 @@ def update(
default_provider_sort=default_provider_sort,
default_text_model=default_text_model,
description=description,
+ disabled_server_tools=utils.unmarshal(
+ disabled_server_tools,
+ OptionalNullable[
+ List[components.UpdateWorkspaceRequestDisabledServerTool]
+ ],
+ ),
io_logging_api_key_ids=utils.unmarshal(
io_logging_api_key_ids, OptionalNullable[List[int]]
),
@@ -1411,6 +1441,9 @@ async def update_async(
default_provider_sort: OptionalNullable[str] = UNSET,
default_text_model: OptionalNullable[str] = UNSET,
description: OptionalNullable[str] = UNSET,
+ disabled_server_tools: OptionalNullable[
+ Iterable[components.UpdateWorkspaceRequestDisabledServerTool]
+ ] = UNSET,
io_logging_api_key_ids: OptionalNullable[Iterable[int]] = UNSET,
io_logging_sampling_rate: Optional[float] = None,
is_data_discount_logging_enabled: Optional[bool] = None,
@@ -1439,6 +1472,7 @@ async def update_async(
:param default_provider_sort: Default provider sort preference (price, throughput, latency, exacto)
:param default_text_model: Default text model for this workspace
:param description: New description for the workspace
+ :param disabled_server_tools: OpenRouter server tools that requests in this workspace may not invoke. Requests naming a disabled tool are rejected with 403. An empty array or null clears the list.
:param io_logging_api_key_ids: Optional array of API key IDs to filter I/O logging
:param io_logging_sampling_rate: Sampling rate for I/O logging (0.0001-1)
:param is_data_discount_logging_enabled: Whether data discount logging is enabled
@@ -1471,6 +1505,12 @@ async def update_async(
default_provider_sort=default_provider_sort,
default_text_model=default_text_model,
description=description,
+ disabled_server_tools=utils.unmarshal(
+ disabled_server_tools,
+ OptionalNullable[
+ List[components.UpdateWorkspaceRequestDisabledServerTool]
+ ],
+ ),
io_logging_api_key_ids=utils.unmarshal(
io_logging_api_key_ids, OptionalNullable[List[int]]
),
diff --git a/uv.lock b/uv.lock
index ca6b1692..980bfd46 100644
--- a/uv.lock
+++ b/uv.lock
@@ -213,7 +213,7 @@ wheels = [
[[package]]
name = "openrouter"
-version = "1.2.14"
+version = "1.2.15"
source = { editable = "." }
dependencies = [
{ name = "httpcore" },