diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index e3392fa9..94bc492b 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: 96852a8e676c17daffcd8a465ec163bf + docChecksum: 219138d21d3208e1bd68f92347d55010 docVersion: 1.0.0 speakeasyVersion: 1.787.0 generationVersion: 2.914.0 - releaseVersion: 1.2.12 - configChecksum: d16185d65c9bdfcdfb73869b3b6a621f + releaseVersion: 1.2.13 + configChecksum: c0af818f98f85ef347b558275e16b064 repoURL: https://github.com/OpenRouterTeam/python-sdk.git installationURL: https://github.com/OpenRouterTeam/python-sdk.git published: true persistentEdits: - generation_id: d885c5e1-35f6-47af-b676-213af835c000 - pristine_commit_hash: f4a328dddf5613836eba5c89d018635e0cb26805 - pristine_tree_hash: 8c106e26e23bd5d9f341ae4137b4f85bab642b6b + generation_id: a41f374d-9e61-41cc-a7da-adbbbbc8e345 + pristine_commit_hash: 240b1991f0af1ac81205aea316704e5dfde5caa5 + pristine_tree_hash: fe700f6e6e0763ec2ae1763a5be7f4cd00195369 features: python: acceptHeaders: 3.0.0 @@ -8127,8 +8127,8 @@ trackedFiles: pristine_git_object: 08c687694efbecf50406ae7929029d39fb121295 docs/sdks/interns/README.mdx: id: 2f8a053ffe78 - last_write_checksum: sha1:5bb4be91b9cb5513e1a80bb4dd289fb58b2ceb55 - pristine_git_object: c45371fd13d43dd0c4883df28d3e8653fd3298a3 + last_write_checksum: sha1:cbebf5bbae2c15f93be5c5407b0f8927167abd90 + pristine_git_object: 995fcb35decbd89a885a25568270d4e6044dea13 docs/sdks/models/README.mdx: id: 58f1ca464e0b last_write_checksum: sha1:093dd30ebdd18b9763a6956915e0dcae4ae7d5e5 @@ -8195,8 +8195,8 @@ trackedFiles: pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544 pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:0f27a908caef2f59a9b4f38c0d813cbca2196002 - pristine_git_object: 94c5228ca40a2560aac632886116adaccc0d5028 + last_write_checksum: sha1:6ac7f07a3d16945f5b9ef3a72c4cd4df1e166179 + pristine_git_object: 8e6a8e74a275b0b884ac9aef8df139ac9b71af2d scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:77f44b60b98bc126557ec27391f91dfba764bb54 @@ -8223,8 +8223,8 @@ trackedFiles: pristine_git_object: 86713cfea633e09d33b3d4e65281071fe20e6137 src/openrouter/_version.py: id: d8d15ad6c586 - last_write_checksum: sha1:473aead99878d6d7b03c8ebf23946926083e816d - pristine_git_object: 4ceb9dbd91bbcbf683170e3f2d82c979970a1cf0 + last_write_checksum: sha1:ce7a24a8717c5a14d95cad02a9f3733362b8669b + pristine_git_object: 07e55bb007b89c56b5c167f1fd3b5060517aa8dc src/openrouter/alpha.py: id: 306c4d93308d last_write_checksum: sha1:0c25a52ed5fb688ec1e923e4e82bcfc9cae49465 @@ -11175,8 +11175,8 @@ trackedFiles: pristine_git_object: 50643a126668498dd668c7cceb9f78c03d413d32 src/openrouter/interns.py: id: d18df05c5c6d - last_write_checksum: sha1:ee8a7854d254cdaf039db80a5e9daa06c3f846dc - pristine_git_object: 817b8db61748eb72909ecd1441c689002491b4d6 + last_write_checksum: sha1:cdc6b94fced75725f6e09279f4562acdc180b7fb + pristine_git_object: 7171db09163adcbdb2588f98aec36b2806e58263 src/openrouter/models/__init__.py: id: ed73b93abb3f last_write_checksum: sha1:932a790ae66ccd7d7022b39c659bcf72a664ebea @@ -15044,4 +15044,10 @@ examples: "529": application/json: {"error": {"code": 529, "message": "Provider returned error"}} examplesVersion: 1.0.2 -releaseNotes: "## Python SDK Changes:\n* `open_router.interns.chat()`: `response.status[202]` **Added** (Breaking ⚠️)\n* `open_router.byok.list()`: `response.data[].declared_zdr` **Added**\n* `open_router.byok.create()`: \n * `request.declared_zdr` **Added**\n * `response.data.declared_zdr` **Added**\n* `open_router.byok.get()`: `response.data.declared_zdr` **Added**\n* `open_router.byok.update()`: \n * `request.declared_zdr` **Added**\n * `response.data.declared_zdr` **Added**\n" +releaseNotes: | + ## Python SDK Changes: + * `open_router.interns.create_intern()`: `error.status[415]` **Added** + * `open_router.interns.delete_intern()`: `error.status[415]` **Added** + * `open_router.interns.update_intern()`: `error.status[415]` **Added** + * `open_router.interns.provision_intern()`: `error.status[415]` **Added** + * `open_router.interns.suspend_intern()`: `error.status[415]` **Added** diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 3ee55956..567ab09d 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -36,7 +36,7 @@ generation: documentation: mintlify preApplyUnionDiscriminators: true python: - version: 1.2.12 + version: 1.2.13 additionalDependencies: dev: {} main: {} diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml index a0038f96..6f5b55be 100644 --- a/.speakeasy/out.openapi.yaml +++ b/.speakeasy/out.openapi.yaml @@ -36636,7 +36636,7 @@ paths: tags: - 'Interns' post: - description: 'Creates an intern in an explicit workspace. The operation also creates its private vault. It can start provisioning immediately or wait for a later provision call. A retry with the same idempotency key and body resumes unfinished work. The request body is capped at 1048576 bytes and a larger body is refused with 413. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required.' + description: 'Creates an intern in an explicit workspace. The operation also creates its private vault. It can start provisioning immediately or wait for a later provision call. A retry with the same idempotency key and body resumes unfinished work. The request body is capped at 1048576 bytes and a larger body is refused with 413. A non-empty body must declare `Content-Type: application/json` or it is refused with 415. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required.' operationId: 'createIntern' parameters: - description: 'Key that makes retries resume the same create operation, from 1 through 255 characters. An empty or longer key is refused with 400. Without the header, the server derives a stable key from the request body.' @@ -36800,6 +36800,19 @@ paths: schema: $ref: '#/components/schemas/InternLifecycleError' description: 'The request body is larger than 1048576 bytes.' + '415': + content: + application/json: + example: + error: + code: 415 + message: 'Request body must be sent as application/json' + metadata: + reason: 'unsupported_media_type' + retryable: false + schema: + $ref: '#/components/schemas/InternLifecycleError' + description: 'The request body is non-empty and its Content-Type is not application/json.' '500': content: application/json: @@ -36837,7 +36850,7 @@ paths: - $ref: "#/components/parameters/AppCategories" /interns/{internId}: delete: - description: 'Starts safe teardown of the intern, its runtime and its private vault. The body is optional. Send `{"acknowledge_workspace_loss": true}` to delete a `destroy_failed` intern whose `last_failure_message` names `workspace_archive_failed`, accepting that its workspace is not backed up. The request body is capped at 1048576 bytes and a larger body is refused with 413. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required.' + description: 'Starts safe teardown of the intern, its runtime and its private vault. The body is optional. Send `{"acknowledge_workspace_loss": true}` to delete a `destroy_failed` intern whose `last_failure_message` names `workspace_archive_failed`, accepting that its workspace is not backed up. The request body is capped at 1048576 bytes and a larger body is refused with 413. A non-empty body must declare `Content-Type: application/json` or it is refused with 415. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required.' operationId: 'deleteIntern' parameters: - description: 'ID of an intern visible to the authenticated API key.' @@ -36951,6 +36964,19 @@ paths: schema: $ref: '#/components/schemas/InternLifecycleError' description: 'The request body is larger than 1048576 bytes.' + '415': + content: + application/json: + example: + error: + code: 415 + message: 'Request body must be sent as application/json' + metadata: + reason: 'unsupported_media_type' + retryable: false + schema: + $ref: '#/components/schemas/InternLifecycleError' + description: 'The request body is non-empty and its Content-Type is not application/json.' '500': content: application/json: @@ -37082,7 +37108,7 @@ paths: tags: - 'Interns' patch: - description: 'Changes the intern name, description, instructions or model. Omitted fields stay unchanged. The request body is capped at 1048576 bytes and a larger body is refused with 413. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required.' + description: 'Changes the intern name, description, instructions or model. Omitted fields stay unchanged. The request body is capped at 1048576 bytes and a larger body is refused with 413. A non-empty body must declare `Content-Type: application/json` or it is refused with 415. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required.' operationId: 'updateIntern' parameters: - description: 'ID of an intern visible to the authenticated API key.' @@ -37210,6 +37236,19 @@ paths: schema: $ref: '#/components/schemas/InternLifecycleError' description: 'The request body is larger than 1048576 bytes.' + '415': + content: + application/json: + example: + error: + code: 415 + message: 'Request body must be sent as application/json' + metadata: + reason: 'unsupported_media_type' + retryable: false + schema: + $ref: '#/components/schemas/InternLifecycleError' + description: 'The request body is non-empty and its Content-Type is not application/json.' '500': content: application/json: @@ -37584,6 +37623,19 @@ paths: schema: $ref: '#/components/schemas/InternLifecycleError' description: 'The request body is larger than 1048576 bytes.' + '415': + content: + application/json: + example: + error: + code: 415 + message: 'Request body must be sent as application/json' + metadata: + reason: 'unsupported_media_type' + retryable: false + schema: + $ref: '#/components/schemas/InternLifecycleError' + description: 'The request body is non-empty and its Content-Type is not application/json.' '500': content: application/json: @@ -37727,6 +37779,19 @@ paths: schema: $ref: '#/components/schemas/InternLifecycleError' description: 'The request body is larger than 1048576 bytes.' + '415': + content: + application/json: + example: + error: + code: 415 + message: 'Request body must be sent as application/json' + metadata: + reason: 'unsupported_media_type' + retryable: false + schema: + $ref: '#/components/schemas/InternLifecycleError' + description: 'The request body is non-empty and its Content-Type is not application/json.' '500': content: application/json: diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 40029cfe..7c337592 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:c35dc5499ca6883e191f921c4a50e5c45ae09daccd130f34af46cb7ee18a44f4 - sourceBlobDigest: sha256:fc62c51c841c1730b744b0177d7b714def70ebcc12b313f96fc925f4d4ad84d7 + sourceRevisionDigest: sha256:6f0702ac907d8bd54b9d73be193c3a8789ed15d688449d59fd15f811a5992937 + sourceBlobDigest: sha256:b1b342b61edc0a5ba2bbe4feba950ae641885bbbc37833fdd91cc09ddb10d920 tags: - latest - 1.0.0 @@ -11,10 +11,10 @@ targets: open-router: source: OpenRouter API sourceNamespace: open-router-chat-completions-api - sourceRevisionDigest: sha256:c35dc5499ca6883e191f921c4a50e5c45ae09daccd130f34af46cb7ee18a44f4 - sourceBlobDigest: sha256:fc62c51c841c1730b744b0177d7b714def70ebcc12b313f96fc925f4d4ad84d7 + sourceRevisionDigest: sha256:6f0702ac907d8bd54b9d73be193c3a8789ed15d688449d59fd15f811a5992937 + sourceBlobDigest: sha256:b1b342b61edc0a5ba2bbe4feba950ae641885bbbc37833fdd91cc09ddb10d920 codeSamplesNamespace: open-router-python-code-samples - codeSamplesRevisionDigest: sha256:1b8e0a86712a06b4708ccd9196d1f6d5dcc25249fd34c99323bd89586af4aa97 + codeSamplesRevisionDigest: sha256:1b9e1c30a83b4aa8634943fb0fe750f04de35369c447bafc075f2e77b4fa761d workflow: workflowVersion: 1.0.0 speakeasyVersion: 1.787.0 diff --git a/RELEASES.md b/RELEASES.md index ede5c909..b9d0412f 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -2529,4 +2529,14 @@ Based on: ### Generated - [python v1.2.12] . ### Releases -- [PyPI v1.2.12] https://pypi.org/project/openrouter/1.2.12 - . \ No newline at end of file +- [PyPI v1.2.12] https://pypi.org/project/openrouter/1.2.12 - . + +## 2026-09-21 22:33:29 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.787.0 (2.914.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v1.2.13] . +### Releases +- [PyPI v1.2.13] https://pypi.org/project/openrouter/1.2.13 - . \ No newline at end of file diff --git a/docs/sdks/interns/README.mdx b/docs/sdks/interns/README.mdx index c45371fd..995fcb35 100644 --- a/docs/sdks/interns/README.mdx +++ b/docs/sdks/interns/README.mdx @@ -70,7 +70,7 @@ with OpenRouter( ## create_intern -Creates an intern in an explicit workspace. The operation also creates its private vault. It can start provisioning immediately or wait for a later provision call. A retry with the same idempotency key and body resumes unfinished work. The request body is capped at 1048576 bytes and a larger body is refused with 413. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. +Creates an intern in an explicit workspace. The operation also creates its private vault. It can start provisioning immediately or wait for a later provision call. A retry with the same idempotency key and body resumes unfinished work. The request body is capped at 1048576 bytes and a larger body is refused with 413. A non-empty body must declare `Content-Type: application/json` or it is refused with 415. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. ### Example Usage @@ -115,15 +115,15 @@ with OpenRouter( ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.InternLifecycleError | 400, 401, 403, 404, 408, 409, 413 | application/json | -| errors.InternLifecycleError | 500, 502 | application/json | -| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.InternLifecycleError | 400, 401, 403, 404, 408, 409, 413, 415 | application/json | +| errors.InternLifecycleError | 500, 502 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | ## delete_intern -Starts safe teardown of the intern, its runtime and its private vault. The body is optional. Send `{"acknowledge_workspace_loss": true}` to delete a `destroy_failed` intern whose `last_failure_message` names `workspace_archive_failed`, accepting that its workspace is not backed up. The request body is capped at 1048576 bytes and a larger body is refused with 413. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. +Starts safe teardown of the intern, its runtime and its private vault. The body is optional. Send `{"acknowledge_workspace_loss": true}` to delete a `destroy_failed` intern whose `last_failure_message` names `workspace_archive_failed`, accepting that its workspace is not backed up. The request body is capped at 1048576 bytes and a larger body is refused with 413. A non-empty body must declare `Content-Type: application/json` or it is refused with 415. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. ### Example Usage @@ -163,11 +163,11 @@ with OpenRouter( ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.InternLifecycleError | 400, 401, 403, 404, 408, 409, 413 | application/json | -| errors.InternLifecycleError | 500, 502 | application/json | -| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.InternLifecycleError | 400, 401, 403, 404, 408, 409, 413, 415 | application/json | +| errors.InternLifecycleError | 500, 502 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | ## get_intern @@ -218,7 +218,7 @@ with OpenRouter( ## update_intern -Changes the intern name, description, instructions or model. Omitted fields stay unchanged. The request body is capped at 1048576 bytes and a larger body is refused with 413. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. +Changes the intern name, description, instructions or model. Omitted fields stay unchanged. The request body is capped at 1048576 bytes and a larger body is refused with 413. A non-empty body must declare `Content-Type: application/json` or it is refused with 415. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. ### Example Usage @@ -261,11 +261,11 @@ with OpenRouter( ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.InternLifecycleError | 400, 401, 403, 404, 408, 409, 413 | application/json | -| errors.InternLifecycleError | 500 | application/json | -| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.InternLifecycleError | 400, 401, 403, 404, 408, 409, 413, 415 | application/json | +| errors.InternLifecycleError | 500 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | ## provision_intern @@ -308,11 +308,11 @@ with OpenRouter( ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.InternLifecycleError | 400, 401, 403, 404, 408, 409, 413 | application/json | -| errors.InternLifecycleError | 500, 502 | application/json | -| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.InternLifecycleError | 400, 401, 403, 404, 408, 409, 413, 415 | application/json | +| errors.InternLifecycleError | 500, 502 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | ## suspend_intern @@ -355,11 +355,11 @@ with OpenRouter( ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.InternLifecycleError | 400, 401, 403, 404, 408, 409, 413 | application/json | -| errors.InternLifecycleError | 500, 502 | application/json | -| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.InternLifecycleError | 400, 401, 403, 404, 408, 409, 413, 415 | application/json | +| errors.InternLifecycleError | 500, 502 | application/json | +| errors.OpenRouterDefaultError | 4XX, 5XX | \*/\* | ## chat diff --git a/pyproject.toml b/pyproject.toml index 94c5228c..8e6a8e74 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "openrouter" -version = "1.2.12" +version = "1.2.13" 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 4ceb9dbd..07e55bb0 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.12" +__version__: str = "1.2.13" __openapi_doc_version__: str = "1.0.0" __gen_version__: str = "2.914.0" -__user_agent__: str = "speakeasy-sdk/python 1.2.12 2.914.0 1.0.0 openrouter" +__user_agent__: str = "speakeasy-sdk/python 1.2.13 2.914.0 1.0.0 openrouter" try: if __package__ is not None: diff --git a/src/openrouter/interns.py b/src/openrouter/interns.py index 817b8db6..7171db09 100644 --- a/src/openrouter/interns.py +++ b/src/openrouter/interns.py @@ -312,7 +312,7 @@ def create_intern( ) -> components.Intern: r"""Create an intern - Creates an intern in an explicit workspace. The operation also creates its private vault. It can start provisioning immediately or wait for a later provision call. A retry with the same idempotency key and body resumes unfinished work. The request body is capped at 1048576 bytes and a larger body is refused with 413. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. + Creates an intern in an explicit workspace. The operation also creates its private vault. It can start provisioning immediately or wait for a later provision call. A retry with the same idempotency key and body resumes unfinished work. The request body is capped at 1048576 bytes and a larger body is refused with 413. A non-empty body must declare `Content-Type: application/json` or it is refused with 415. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. If set, this operation will use `api_key` from the global security. @@ -424,7 +424,7 @@ def create_intern( return unmarshal_json_response(components.Intern, http_res) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "409", "413"], + ["400", "401", "403", "404", "408", "409", "413", "415"], "application/json", ): response_data = unmarshal_json_response( @@ -469,7 +469,7 @@ async def create_intern_async( ) -> components.Intern: r"""Create an intern - Creates an intern in an explicit workspace. The operation also creates its private vault. It can start provisioning immediately or wait for a later provision call. A retry with the same idempotency key and body resumes unfinished work. The request body is capped at 1048576 bytes and a larger body is refused with 413. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. + Creates an intern in an explicit workspace. The operation also creates its private vault. It can start provisioning immediately or wait for a later provision call. A retry with the same idempotency key and body resumes unfinished work. The request body is capped at 1048576 bytes and a larger body is refused with 413. A non-empty body must declare `Content-Type: application/json` or it is refused with 415. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. If set, this operation will use `api_key` from the global security. @@ -581,7 +581,7 @@ async def create_intern_async( return unmarshal_json_response(components.Intern, http_res) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "409", "413"], + ["400", "401", "403", "404", "408", "409", "413", "415"], "application/json", ): response_data = unmarshal_json_response( @@ -621,7 +621,7 @@ def delete_intern( ) -> components.DeleteInternResponse: r"""Delete an intern - Starts safe teardown of the intern, its runtime and its private vault. The body is optional. Send `{\"acknowledge_workspace_loss\": true}` to delete a `destroy_failed` intern whose `last_failure_message` names `workspace_archive_failed`, accepting that its workspace is not backed up. The request body is capped at 1048576 bytes and a larger body is refused with 413. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. + Starts safe teardown of the intern, its runtime and its private vault. The body is optional. Send `{\"acknowledge_workspace_loss\": true}` to delete a `destroy_failed` intern whose `last_failure_message` names `workspace_archive_failed`, accepting that its workspace is not backed up. The request body is capped at 1048576 bytes and a larger body is refused with 413. A non-empty body must declare `Content-Type: application/json` or it is refused with 415. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. If set, this operation will use `api_key` from the global security. @@ -723,7 +723,7 @@ def delete_intern( return unmarshal_json_response(components.DeleteInternResponse, http_res) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "409", "413"], + ["400", "401", "403", "404", "408", "409", "413", "415"], "application/json", ): response_data = unmarshal_json_response( @@ -763,7 +763,7 @@ async def delete_intern_async( ) -> components.DeleteInternResponse: r"""Delete an intern - Starts safe teardown of the intern, its runtime and its private vault. The body is optional. Send `{\"acknowledge_workspace_loss\": true}` to delete a `destroy_failed` intern whose `last_failure_message` names `workspace_archive_failed`, accepting that its workspace is not backed up. The request body is capped at 1048576 bytes and a larger body is refused with 413. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. + Starts safe teardown of the intern, its runtime and its private vault. The body is optional. Send `{\"acknowledge_workspace_loss\": true}` to delete a `destroy_failed` intern whose `last_failure_message` names `workspace_archive_failed`, accepting that its workspace is not backed up. The request body is capped at 1048576 bytes and a larger body is refused with 413. A non-empty body must declare `Content-Type: application/json` or it is refused with 415. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. If set, this operation will use `api_key` from the global security. @@ -865,7 +865,7 @@ async def delete_intern_async( return unmarshal_json_response(components.DeleteInternResponse, http_res) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "409", "413"], + ["400", "401", "403", "404", "408", "409", "413", "415"], "application/json", ): response_data = unmarshal_json_response( @@ -1164,7 +1164,7 @@ def update_intern( ) -> components.Intern: r"""Update an intern - Changes the intern name, description, instructions or model. Omitted fields stay unchanged. The request body is capped at 1048576 bytes and a larger body is refused with 413. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. + Changes the intern name, description, instructions or model. Omitted fields stay unchanged. The request body is capped at 1048576 bytes and a larger body is refused with 413. A non-empty body must declare `Content-Type: application/json` or it is refused with 415. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. If set, this operation will use `api_key` from the global security. @@ -1272,7 +1272,7 @@ def update_intern( return unmarshal_json_response(components.Intern, http_res) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "409", "413"], + ["400", "401", "403", "404", "408", "409", "413", "415"], "application/json", ): response_data = unmarshal_json_response( @@ -1315,7 +1315,7 @@ async def update_intern_async( ) -> components.Intern: r"""Update an intern - Changes the intern name, description, instructions or model. Omitted fields stay unchanged. The request body is capped at 1048576 bytes and a larger body is refused with 413. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. + Changes the intern name, description, instructions or model. Omitted fields stay unchanged. The request body is capped at 1048576 bytes and a larger body is refused with 413. A non-empty body must declare `Content-Type: application/json` or it is refused with 415. The API key selects the caller, workspace and visible interns. There is no default workspace fallback. Requests on regional hostnames such as `eu.openrouter.ai` are refused. [API key](/docs/api-reference/authentication) required. If set, this operation will use `api_key` from the global security. @@ -1423,7 +1423,7 @@ async def update_intern_async( return unmarshal_json_response(components.Intern, http_res) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "409", "413"], + ["400", "401", "403", "404", "408", "409", "413", "415"], "application/json", ): response_data = unmarshal_json_response( @@ -1553,7 +1553,7 @@ def provision_intern( return unmarshal_json_response(components.ProvisionInternResponse, http_res) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "409", "413"], + ["400", "401", "403", "404", "408", "409", "413", "415"], "application/json", ): response_data = unmarshal_json_response( @@ -1683,7 +1683,7 @@ async def provision_intern_async( return unmarshal_json_response(components.ProvisionInternResponse, http_res) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "409", "413"], + ["400", "401", "403", "404", "408", "409", "413", "415"], "application/json", ): response_data = unmarshal_json_response( @@ -1813,7 +1813,7 @@ def suspend_intern( return unmarshal_json_response(components.SuspendInternResponse, http_res) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "409", "413"], + ["400", "401", "403", "404", "408", "409", "413", "415"], "application/json", ): response_data = unmarshal_json_response( @@ -1943,7 +1943,7 @@ async def suspend_intern_async( return unmarshal_json_response(components.SuspendInternResponse, http_res) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "409", "413"], + ["400", "401", "403", "404", "408", "409", "413", "415"], "application/json", ): response_data = unmarshal_json_response( diff --git a/uv.lock b/uv.lock index d31d55a3..7fe72e89 100644 --- a/uv.lock +++ b/uv.lock @@ -213,7 +213,7 @@ wheels = [ [[package]] name = "openrouter" -version = "1.2.12" +version = "1.2.13" source = { editable = "." } dependencies = [ { name = "httpcore" },