diff --git a/.release-please-manifest.json b/.release-please-manifest.json index e7ca613..64f3cdd 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.7.0" + ".": "0.8.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index b0def2e..79e746c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,35 @@ # Changelog +## [0.8.0](https://github.com/scalar/scalar-python/compare/v0.7.0...v0.8.0) (2026-10-20) + + +### ⚠ BREAKING CHANGES + +* **api:** 3 breaking changes to the SDK surface. + - Property `api_document.tags` type changed from `string` to `unknown`. + - Property `github_project.accessGroups` type changed from `string` to `unknown`. + - Property `docs_project.accessGroups` type changed from `string` to `unknown`. +* **api:** 8 breaking changes to the SDK surface. + - Removed body field `autoAddOperations` from `mcp.servers.update`. + - Removed body field `isPrivate` from `mcp.servers.installations.update`. + - Removed body field `loginPortalUid` from `mcp.servers.installations.update`. + - Removed body field `documentAuth` from `mcp.servers.installations.update`. + - Removed operation `mcp.servers.installations.create` (`POST /v1/mcp/servers/{id}/installations`). + - Removed required property `mcp_server.autoAddOperations`. + - Removed required property `mcp_installation.isPrivate`. + - Removed required property `mcp_installation_list_item.isPrivate`. + +### Features + +* **api:** update property api_document.tags (+3 more changes) ([f8318c0](https://github.com/scalar/scalar-python/commit/f8318c0e33dd5caf1489ea05b67d6c53aa91960c)) +* **api:** update SDK surface (14 changes) ([fbe5ab5](https://github.com/scalar/scalar-python/commit/fbe5ab543a82a53093106e12ad58790168aef095)) +* **api:** update SDK surface (4 changes) ([aa1e404](https://github.com/scalar/scalar-python/commit/aa1e4048054c02e012705922faf4ab90b46b607c)) + + +### Chores + +* **api:** regenerate SDK ([254602d](https://github.com/scalar/scalar-python/commit/254602deccb95a2772ebe70c2dd4bbf9ea39da57)) + ## [0.7.0](https://github.com/scalar/scalar-python/compare/v0.6.0...v0.7.0) (2026-10-09) diff --git a/api.md b/api.md index b99ddf5..a9ae77d 100644 --- a/api.md +++ b/api.md @@ -110,7 +110,6 @@ Complete reference of every operation, grouped by resource. See [the README](./R - [Delete an MCP server](#delete-an-mcp-server) - [`Mcp Servers Installations`](#mcp-servers-installations) - [List installations](#list-installations) - - [Create an installation](#create-an-installation) - [Get an installation](#get-an-installation) - [Update an installation](#update-an-installation) - [Delete an installation](#delete-an-installation) @@ -1240,7 +1239,7 @@ Get the authenticated user, including their available teams and theme. | Direction | Type | | --- | --- | -| Response | [`User`](./src/scalar_sdk/types/teams/user.py) | +| Response | [`User`](./src/scalar_sdk/types/user.py) | ```python authentication = client.authentication.list_current_user() @@ -1521,26 +1520,9 @@ installation = client.mcp.servers.installations.list( ) ``` -##### Create an installation - -Create an installation of an MCP server. `documentAuth` holds the credentials the server presents to the upstream API and is never returned. - -| Direction | Type | -| --- | --- | -| Request | [`InstallationCreateParams`](./src/scalar_sdk/types/mcp/servers/installation_create_params.py) | -| Response | [`McpInstallation`](./src/scalar_sdk/types/mcp/mcp_installation.py) | - -```python -installation = client.mcp.servers.installations.create( - id="42", - name="Acme MCP", - document_auth={}, -) -``` - ##### Get an installation -Get a single installation of an MCP server. +Get a single installation of an MCP server. Deprecated: address the environment by slug with the `/environments/:environment` form. | Direction | Type | | --- | --- | @@ -1555,7 +1537,7 @@ installation = client.mcp.servers.installations.retrieve( ##### Update an installation -Update an installation. Set `isPrivate` and add access groups to put it behind a login. +Update an installation. Deprecated: address the environment by slug with the `/environments/:environment` form. | Direction | Type | | --- | --- | @@ -1571,7 +1553,7 @@ installation = client.mcp.servers.installations.update( ##### Delete an installation -Delete an installation of an MCP server. +Delete an installation of an MCP server. Deprecated: address the environment by slug with the `/environments/:environment` form. | Direction | Type | | --- | --- | @@ -1586,7 +1568,7 @@ installation = client.mcp.servers.installations.delete( ##### Add an access group -Let an access group reach a private installation. +Let an access group reach a private installation. Requires a team admin. Deprecated: address the environment by slug with the `/environments/:environment` form. | Direction | Type | | --- | --- | @@ -1603,7 +1585,7 @@ installation = client.mcp.servers.installations.create_access_group( ##### Remove an access group -Stop an access group reaching a private installation. +Stop an access group reaching a private installation. Requires a team admin. Deprecated: address the environment by slug with the `/environments/:environment` form. | Direction | Type | | --- | --- | diff --git a/pyproject.toml b/pyproject.toml index 73ebd1a..0d7b023 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "scalar-sdk" -version = "0.7.0" # x-release-please-version +version = "0.8.0" # x-release-please-version description = "API for managing Scalar platform resources." readme = "README.md" license = "Apache-2.0" diff --git a/scalar-sdk.manifest.json b/scalar-sdk.manifest.json index 541a2fa..25b4a3c 100644 --- a/scalar-sdk.manifest.json +++ b/scalar-sdk.manifest.json @@ -1,7 +1,7 @@ { "name": "Scalar", "slug": "scalar", - "generatorVersion": "0.36.3", + "generatorVersion": "0.36.8", "servers": [ "https://access.scalar.com" ], @@ -35,7 +35,8 @@ "platform:admin" ] } - ] + ], + "oauth2MetadataUrl": "https://auth.scalar.com/.well-known/oauth-authorization-server" } ], "clientHeaderParams": [], @@ -424,8 +425,7 @@ ] }, "type": { - "kind": "primitive", - "type": "string" + "kind": "unknown" } }, { @@ -2346,6 +2346,30 @@ "type": "string" } }, + { + "name": "userInfoHookSecretUid", + "publicName": "userInfoHookSecretUid", + "required": false, + "deprecated": false, + "extensions": { + "source": [ + "examples" + ], + "examples": "UakgbKJ5m9gl0JDMbcJqL" + }, + "type": { + "kind": "union", + "variants": [ + { + "kind": "ref", + "name": "nanoid" + }, + { + "kind": "null" + } + ] + } + }, { "name": "activeThemeId", "publicName": "activeThemeId", @@ -2440,8 +2464,7 @@ ] }, "type": { - "kind": "primitive", - "type": "string" + "kind": "unknown" } }, { @@ -3481,8 +3504,7 @@ ] }, "type": { - "kind": "primitive", - "type": "string" + "kind": "unknown" } }, { @@ -3649,22 +3671,6 @@ "name": "slug" } }, - { - "name": "autoAddOperations", - "publicName": "autoAddOperations", - "required": true, - "deprecated": false, - "extensions": { - "source": [ - "examples" - ], - "examples": true - }, - "type": { - "kind": "primitive", - "type": "boolean" - } - }, { "name": "createdAt", "publicName": "createdAt", @@ -3773,22 +3779,6 @@ "name": "slug" } }, - { - "name": "isPrivate", - "publicName": "isPrivate", - "required": true, - "deprecated": false, - "extensions": { - "source": [ - "examples" - ], - "examples": false - }, - "type": { - "kind": "primitive", - "type": "boolean" - } - }, { "name": "accessGroups", "publicName": "accessGroups", @@ -3950,22 +3940,6 @@ "name": "slug" } }, - { - "name": "isPrivate", - "publicName": "isPrivate", - "required": true, - "deprecated": false, - "extensions": { - "source": [ - "examples" - ], - "examples": false - }, - "type": { - "kind": "primitive", - "type": "boolean" - } - }, { "name": "mcpVersion", "publicName": "mcpVersion", @@ -17435,13 +17409,19 @@ "publishOnMerge", "authMethod", "access", - "tag" + "tag", + "artifactId", + "tapRepo", + "registry" ], "publicBodyParams": [ "publishOnMerge", "authMethod", "access", - "tag" + "tag", + "artifactId", + "tapRepo", + "registry" ], "bodyParamDetails": [ { @@ -17459,6 +17439,18 @@ { "name": "tag", "required": false + }, + { + "name": "artifactId", + "required": false + }, + { + "name": "tapRepo", + "required": false + }, + { + "name": "registry", + "required": false } ], "pathParamDetails": [ @@ -18115,14 +18107,12 @@ "bodyParams": [ "name", "slug", - "autoAddOperations", "operations", "docsPages" ], "publicBodyParams": [ "name", "slug", - "autoAddOperations", "operations", "docsPages" ], @@ -18135,10 +18125,6 @@ "name": "slug", "required": false }, - { - "name": "autoAddOperations", - "required": false - }, { "name": "operations", "required": false @@ -18606,204 +18592,12 @@ "responseLinks": [], "transport": "http" }, - { - "resource": "mcp.servers.installations", - "publicResource": "mcp.servers.installations", - "operation": "create", - "publicOperation": "create", - "deprecated": false, - "method": "POST", - "path": "/v1/mcp/servers/{id}/installations", - "pathParams": [ - "id" - ], - "publicPathParams": [ - "id" - ], - "queryParams": [], - "publicQueryParams": [], - "headerParams": [], - "publicHeaderParams": [], - "bodyParams": [ - "name", - "slug", - "documentAuth" - ], - "publicBodyParams": [ - "name", - "slug", - "documentAuth" - ], - "bodyParamDetails": [ - { - "name": "name", - "required": true - }, - { - "name": "slug", - "required": false - }, - { - "name": "documentAuth", - "required": true - } - ], - "pathParamDetails": [ - { - "name": "id", - "required": true, - "style": "simple", - "explode": false - } - ], - "queryParamDetails": [], - "headerParamDetails": [], - "cookieParams": [], - "publicCookieParams": [], - "cookieParamDetails": [], - "paramsModel": { - "publicName": "InstallationCreateParams" - }, - "requestBody": { - "contentType": "application/json", - "encoding": "json", - "contents": [ - { - "contentType": "application/json", - "encoding": "json" - } - ], - "required": true, - "publicName": "body", - "publicIdentifier": "body" - }, - "response": { - "status": "200", - "contentType": "application/json", - "encoding": "json", - "contents": [ - { - "contentType": "application/json", - "encoding": "json" - } - ] - }, - "responseModel": { - "name": "mcp_installation", - "publicAliases": [] - }, - "result": { - "successStatus": "200", - "errorStatuses": [ - "400", - "401", - "403", - "404", - "422", - "500" - ] - }, - "errorResponses": [ - { - "status": "400", - "contentType": "application/json", - "encoding": "json", - "contents": [ - { - "contentType": "application/json", - "encoding": "json" - } - ], - "model": { - "name": "400", - "publicAliases": [] - } - }, - { - "status": "401", - "contentType": "application/json", - "encoding": "json", - "contents": [ - { - "contentType": "application/json", - "encoding": "json" - } - ], - "model": { - "name": "401", - "publicAliases": [] - } - }, - { - "status": "403", - "contentType": "application/json", - "encoding": "json", - "contents": [ - { - "contentType": "application/json", - "encoding": "json" - } - ], - "model": { - "name": "403", - "publicAliases": [] - } - }, - { - "status": "404", - "contentType": "application/json", - "encoding": "json", - "contents": [ - { - "contentType": "application/json", - "encoding": "json" - } - ], - "model": { - "name": "404", - "publicAliases": [] - } - }, - { - "status": "422", - "contentType": "application/json", - "encoding": "json", - "contents": [ - { - "contentType": "application/json", - "encoding": "json" - } - ], - "model": { - "name": "422", - "publicAliases": [] - } - }, - { - "status": "500", - "contentType": "application/json", - "encoding": "json", - "contents": [ - { - "contentType": "application/json", - "encoding": "json" - } - ], - "model": { - "name": "500", - "publicAliases": [] - } - } - ], - "responseLinks": [], - "transport": "http" - }, { "resource": "mcp.servers.installations", "publicResource": "mcp.servers.installations", "operation": "retrieve", "publicOperation": "retrieve", - "deprecated": false, + "deprecated": true, "method": "GET", "path": "/v1/mcp/servers/{id}/installations/{installationId}", "pathParams": [ @@ -18969,7 +18763,7 @@ "publicResource": "mcp.servers.installations", "operation": "update", "publicOperation": "update", - "deprecated": false, + "deprecated": true, "method": "PATCH", "path": "/v1/mcp/servers/{id}/installations/{installationId}", "pathParams": [ @@ -18987,17 +18781,11 @@ "bodyParams": [ "name", "slug", - "isPrivate", - "loginPortalUid", - "documentAuth", "mcpVersion" ], "publicBodyParams": [ "name", "slug", - "isPrivate", - "loginPortalUid", - "documentAuth", "mcpVersion" ], "bodyParamDetails": [ @@ -19009,18 +18797,6 @@ "name": "slug", "required": false }, - { - "name": "isPrivate", - "required": false - }, - { - "name": "loginPortalUid", - "required": false - }, - { - "name": "documentAuth", - "required": false - }, { "name": "mcpVersion", "required": false @@ -19187,7 +18963,7 @@ "publicResource": "mcp.servers.installations", "operation": "delete", "publicOperation": "delete", - "deprecated": false, + "deprecated": true, "method": "DELETE", "path": "/v1/mcp/servers/{id}/installations/{installationId}", "pathParams": [ @@ -19349,7 +19125,7 @@ "publicResource": "mcp.servers.installations", "operation": "createAccessGroup", "publicOperation": "createAccessGroup", - "deprecated": false, + "deprecated": true, "method": "POST", "path": "/v1/mcp/servers/{id}/installations/{installationId}/access-group", "pathParams": [ @@ -19533,7 +19309,7 @@ "publicResource": "mcp.servers.installations", "operation": "deleteAccessGroup", "publicOperation": "deleteAccessGroup", - "deprecated": false, + "deprecated": true, "method": "DELETE", "path": "/v1/mcp/servers/{id}/installations/{installationId}/access-group", "pathParams": [ diff --git a/src/scalar_sdk/_version.py b/src/scalar_sdk/_version.py index a45acfc..57964a6 100644 --- a/src/scalar_sdk/_version.py +++ b/src/scalar_sdk/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Scalar. See README.md for details. __title__ = "scalar" -__version__ = "0.7.0" # x-release-please-version +__version__ = "0.8.0" # x-release-please-version diff --git a/src/scalar_sdk/resources/access_groups/access_groups.py b/src/scalar_sdk/resources/access_groups/access_groups.py index f18e140..f1d196a 100644 --- a/src/scalar_sdk/resources/access_groups/access_groups.py +++ b/src/scalar_sdk/resources/access_groups/access_groups.py @@ -52,7 +52,7 @@ def create( *, name: AccessGroupName | Omit = omit, slug: Slug | Omit = omit, - allowed_domains: str | Omit = omit, + allowed_domains: object | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -249,7 +249,7 @@ async def create( *, name: AccessGroupName | Omit = omit, slug: Slug | Omit = omit, - allowed_domains: str | Omit = omit, + allowed_domains: object | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, diff --git a/src/scalar_sdk/resources/authentication.py b/src/scalar_sdk/resources/authentication.py index ec35cae..5b90bdd 100644 --- a/src/scalar_sdk/resources/authentication.py +++ b/src/scalar_sdk/resources/authentication.py @@ -17,7 +17,7 @@ from .._base_client import make_request_options from ..types.authentication_exchange_personal_token_response import AuthenticationExchangePersonalTokenResponse from ..types import authentication_exchange_personal_token_params -from ..types.teams.user import User +from ..types.user import User __all__ = ["AuthenticationResource", "AsyncAuthenticationResource"] diff --git a/src/scalar_sdk/resources/mcp/servers/installations.py b/src/scalar_sdk/resources/mcp/servers/installations.py index e5e7646..9d19590 100644 --- a/src/scalar_sdk/resources/mcp/servers/installations.py +++ b/src/scalar_sdk/resources/mcp/servers/installations.py @@ -4,7 +4,7 @@ import httpx -from typing import Dict, Optional +from typing import Optional from ...._types import Body, Omit, Query, Headers, NotGiven, omit, not_given from ...._utils import path_template, maybe_transform, async_maybe_transform @@ -21,7 +21,6 @@ from ....types.mcp.mcp_installation import McpInstallation from ....types.slug import Slug from ....types.mcp.servers import ( - installation_create_params, installation_update_params, installation_create_access_group_params, installation_delete_access_group_params, @@ -84,63 +83,6 @@ def list( cast_to=InstallationListResponse, ) - def create( - self, - id: str, - *, - name: str, - slug: Slug | Omit = omit, - document_auth: Dict[str, object], - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> McpInstallation: - """ - Create an installation of an MCP server. `documentAuth` holds the credentials the server presents to the upstream API and is never returned. - - Args: - id: Path parameter. - name: Body parameter. - slug: Body parameter. - document_auth: Body parameter. - extra_headers: Send extra headers with the request. - extra_query: Send extra query parameters with the request. - extra_body: Send extra JSON properties with the request. - timeout: Override the client-level default timeout for this request, in seconds. - - Returns: - McpInstallation: Default Response - - Example: - ```python - installation = client.mcp.servers.installations.create( - id="42", - name="Acme MCP", - document_auth={}, - ) - ``` - """ - if id is None or (isinstance(id, str) and not id): - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return self._post( - path_template("/v1/mcp/servers/{id}/installations", **{"id": id}), - body=maybe_transform( - { - "name": name, - "slug": slug, - "document_auth": document_auth, - }, - installation_create_params.InstallationCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=McpInstallation, - ) - def retrieve( self, installation_id: str, @@ -154,7 +96,7 @@ def retrieve( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> McpInstallation: """ - Get a single installation of an MCP server. + Get a single installation of an MCP server. Deprecated: address the environment by slug with the `/environments/:environment` form. Args: installation_id: Path parameter. @@ -174,6 +116,8 @@ def retrieve( installation_id="84", ) ``` + + Deprecated: this method is deprecated. """ if id is None or (isinstance(id, str) and not id): raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") @@ -196,9 +140,6 @@ def update( id: str, name: str | Omit = omit, slug: Slug | Omit = omit, - is_private: bool | Omit = omit, - login_portal_uid: Optional[str] | Omit = omit, - document_auth: Dict[str, object] | Omit = omit, mcp_version: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -208,16 +149,13 @@ def update( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> McpInstallation: """ - Update an installation. Set `isPrivate` and add access groups to put it behind a login. + Update an installation. Deprecated: address the environment by slug with the `/environments/:environment` form. Args: installation_id: Path parameter. id: Path parameter. name: Body parameter. - slug: Body parameter. - is_private: Body parameter. - login_portal_uid: Body parameter. - document_auth: Body parameter. + slug: The environment’s current slug. An environment cannot be renamed, so any other slug is refused. mcp_version: Body parameter. extra_headers: Send extra headers with the request. extra_query: Send extra query parameters with the request. @@ -234,6 +172,8 @@ def update( installation_id="84", ) ``` + + Deprecated: this method is deprecated. """ if id is None or (isinstance(id, str) and not id): raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") @@ -247,9 +187,6 @@ def update( { "name": name, "slug": slug, - "is_private": is_private, - "login_portal_uid": login_portal_uid, - "document_auth": document_auth, "mcp_version": mcp_version, }, installation_update_params.InstallationUpdateParams, @@ -273,7 +210,7 @@ def delete( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> InstallationDeleteResponse: """ - Delete an installation of an MCP server. + Delete an installation of an MCP server. Deprecated: address the environment by slug with the `/environments/:environment` form. Args: installation_id: Path parameter. @@ -293,6 +230,8 @@ def delete( installation_id="84", ) ``` + + Deprecated: this method is deprecated. """ if id is None or (isinstance(id, str) and not id): raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") @@ -322,7 +261,7 @@ def create_access_group( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> InstallationCreateAccessGroupResponse: """ - Let an access group reach a private installation. + Let an access group reach a private installation. Requires a team admin. Deprecated: address the environment by slug with the `/environments/:environment` form. Args: installation_id: Path parameter. @@ -344,6 +283,8 @@ def create_access_group( access_group_uid="UakgbKJ5m9gl0JDMbcJqL", ) ``` + + Deprecated: this method is deprecated. """ if id is None or (isinstance(id, str) and not id): raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") @@ -378,7 +319,7 @@ def delete_access_group( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> InstallationDeleteAccessGroupResponse: """ - Stop an access group reaching a private installation. + Stop an access group reaching a private installation. Requires a team admin. Deprecated: address the environment by slug with the `/environments/:environment` form. Args: installation_id: Path parameter. @@ -400,6 +341,8 @@ def delete_access_group( access_group_uid="UakgbKJ5m9gl0JDMbcJqL", ) ``` + + Deprecated: this method is deprecated. """ if id is None or (isinstance(id, str) and not id): raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") @@ -471,63 +414,6 @@ async def list( cast_to=InstallationListResponse, ) - async def create( - self, - id: str, - *, - name: str, - slug: Slug | Omit = omit, - document_auth: Dict[str, object], - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> McpInstallation: - """ - Create an installation of an MCP server. `documentAuth` holds the credentials the server presents to the upstream API and is never returned. - - Args: - id: Path parameter. - name: Body parameter. - slug: Body parameter. - document_auth: Body parameter. - extra_headers: Send extra headers with the request. - extra_query: Send extra query parameters with the request. - extra_body: Send extra JSON properties with the request. - timeout: Override the client-level default timeout for this request, in seconds. - - Returns: - McpInstallation: Default Response - - Example: - ```python - installation = await client.mcp.servers.installations.create( - id="42", - name="Acme MCP", - document_auth={}, - ) - ``` - """ - if id is None or (isinstance(id, str) and not id): - raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") - return await self._post( - path_template("/v1/mcp/servers/{id}/installations", **{"id": id}), - body=await async_maybe_transform( - { - "name": name, - "slug": slug, - "document_auth": document_auth, - }, - installation_create_params.InstallationCreateParams, - ), - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=McpInstallation, - ) - async def retrieve( self, installation_id: str, @@ -541,7 +427,7 @@ async def retrieve( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> McpInstallation: """ - Get a single installation of an MCP server. + Get a single installation of an MCP server. Deprecated: address the environment by slug with the `/environments/:environment` form. Args: installation_id: Path parameter. @@ -561,6 +447,8 @@ async def retrieve( installation_id="84", ) ``` + + Deprecated: this method is deprecated. """ if id is None or (isinstance(id, str) and not id): raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") @@ -583,9 +471,6 @@ async def update( id: str, name: str | Omit = omit, slug: Slug | Omit = omit, - is_private: bool | Omit = omit, - login_portal_uid: Optional[str] | Omit = omit, - document_auth: Dict[str, object] | Omit = omit, mcp_version: Optional[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. @@ -595,16 +480,13 @@ async def update( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> McpInstallation: """ - Update an installation. Set `isPrivate` and add access groups to put it behind a login. + Update an installation. Deprecated: address the environment by slug with the `/environments/:environment` form. Args: installation_id: Path parameter. id: Path parameter. name: Body parameter. - slug: Body parameter. - is_private: Body parameter. - login_portal_uid: Body parameter. - document_auth: Body parameter. + slug: The environment’s current slug. An environment cannot be renamed, so any other slug is refused. mcp_version: Body parameter. extra_headers: Send extra headers with the request. extra_query: Send extra query parameters with the request. @@ -621,6 +503,8 @@ async def update( installation_id="84", ) ``` + + Deprecated: this method is deprecated. """ if id is None or (isinstance(id, str) and not id): raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") @@ -634,9 +518,6 @@ async def update( { "name": name, "slug": slug, - "is_private": is_private, - "login_portal_uid": login_portal_uid, - "document_auth": document_auth, "mcp_version": mcp_version, }, installation_update_params.InstallationUpdateParams, @@ -660,7 +541,7 @@ async def delete( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> InstallationDeleteResponse: """ - Delete an installation of an MCP server. + Delete an installation of an MCP server. Deprecated: address the environment by slug with the `/environments/:environment` form. Args: installation_id: Path parameter. @@ -680,6 +561,8 @@ async def delete( installation_id="84", ) ``` + + Deprecated: this method is deprecated. """ if id is None or (isinstance(id, str) and not id): raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") @@ -709,7 +592,7 @@ async def create_access_group( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> InstallationCreateAccessGroupResponse: """ - Let an access group reach a private installation. + Let an access group reach a private installation. Requires a team admin. Deprecated: address the environment by slug with the `/environments/:environment` form. Args: installation_id: Path parameter. @@ -731,6 +614,8 @@ async def create_access_group( access_group_uid="UakgbKJ5m9gl0JDMbcJqL", ) ``` + + Deprecated: this method is deprecated. """ if id is None or (isinstance(id, str) and not id): raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") @@ -765,7 +650,7 @@ async def delete_access_group( timeout: float | httpx.Timeout | None | NotGiven = not_given, ) -> InstallationDeleteAccessGroupResponse: """ - Stop an access group reaching a private installation. + Stop an access group reaching a private installation. Requires a team admin. Deprecated: address the environment by slug with the `/environments/:environment` form. Args: installation_id: Path parameter. @@ -787,6 +672,8 @@ async def delete_access_group( access_group_uid="UakgbKJ5m9gl0JDMbcJqL", ) ``` + + Deprecated: this method is deprecated. """ if id is None or (isinstance(id, str) and not id): raise ValueError(f"Expected a non-empty value for `id` but received {id!r}") @@ -815,9 +702,6 @@ def __init__(self, installations: InstallationsResource) -> None: self.list = to_raw_response_wrapper( installations.list, ) - self.create = to_raw_response_wrapper( - installations.create, - ) self.retrieve = to_raw_response_wrapper( installations.retrieve, ) @@ -842,9 +726,6 @@ def __init__(self, installations: AsyncInstallationsResource) -> None: self.list = async_to_raw_response_wrapper( installations.list, ) - self.create = async_to_raw_response_wrapper( - installations.create, - ) self.retrieve = async_to_raw_response_wrapper( installations.retrieve, ) @@ -869,9 +750,6 @@ def __init__(self, installations: InstallationsResource) -> None: self.list = to_streamed_response_wrapper( installations.list, ) - self.create = to_streamed_response_wrapper( - installations.create, - ) self.retrieve = to_streamed_response_wrapper( installations.retrieve, ) @@ -896,9 +774,6 @@ def __init__(self, installations: AsyncInstallationsResource) -> None: self.list = async_to_streamed_response_wrapper( installations.list, ) - self.create = async_to_streamed_response_wrapper( - installations.create, - ) self.retrieve = async_to_streamed_response_wrapper( installations.retrieve, ) diff --git a/src/scalar_sdk/resources/mcp/servers/servers.py b/src/scalar_sdk/resources/mcp/servers/servers.py index 85c49a5..b558b8c 100644 --- a/src/scalar_sdk/resources/mcp/servers/servers.py +++ b/src/scalar_sdk/resources/mcp/servers/servers.py @@ -184,7 +184,6 @@ def update( *, name: str | Omit = omit, slug: Slug | Omit = omit, - auto_add_operations: bool | Omit = omit, operations: SequenceNotStr[str] | Omit = omit, docs_pages: SequenceNotStr[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -201,7 +200,6 @@ def update( id: Path parameter. name: Body parameter. slug: Body parameter. - auto_add_operations: Body parameter. operations: Body parameter. docs_pages: Body parameter. extra_headers: Send extra headers with the request. @@ -227,7 +225,6 @@ def update( { "name": name, "slug": slug, - "auto_add_operations": auto_add_operations, "operations": operations, "docs_pages": docs_pages, }, @@ -430,7 +427,6 @@ async def update( *, name: str | Omit = omit, slug: Slug | Omit = omit, - auto_add_operations: bool | Omit = omit, operations: SequenceNotStr[str] | Omit = omit, docs_pages: SequenceNotStr[str] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. @@ -447,7 +443,6 @@ async def update( id: Path parameter. name: Body parameter. slug: Body parameter. - auto_add_operations: Body parameter. operations: Body parameter. docs_pages: Body parameter. extra_headers: Send extra headers with the request. @@ -473,7 +468,6 @@ async def update( { "name": name, "slug": slug, - "auto_add_operations": auto_add_operations, "operations": operations, "docs_pages": docs_pages, }, diff --git a/src/scalar_sdk/resources/sdks/repositories.py b/src/scalar_sdk/resources/sdks/repositories.py index 0e29410..eaeafb8 100644 --- a/src/scalar_sdk/resources/sdks/repositories.py +++ b/src/scalar_sdk/resources/sdks/repositories.py @@ -192,6 +192,9 @@ def update_publishing( auth_method: Literal["oidc", "access-token"] | Omit = omit, access: Literal["public", "restricted"] | Omit = omit, tag: str | Omit = omit, + artifact_id: str | Omit = omit, + tap_repo: str | Omit = omit, + registry: str | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -209,6 +212,9 @@ def update_publishing( auth_method: Body parameter. access: Body parameter. tag: Body parameter. + artifact_id: Body parameter. + tap_repo: Body parameter. + registry: Body parameter. extra_headers: Send extra headers with the request. extra_query: Send extra query parameters with the request. extra_body: Send extra JSON properties with the request. @@ -238,6 +244,9 @@ def update_publishing( "auth_method": auth_method, "access": access, "tag": tag, + "artifact_id": artifact_id, + "tap_repo": tap_repo, + "registry": registry, }, repository_update_publishing_params.RepositoryUpdatePublishingParams, ), @@ -415,6 +424,9 @@ async def update_publishing( auth_method: Literal["oidc", "access-token"] | Omit = omit, access: Literal["public", "restricted"] | Omit = omit, tag: str | Omit = omit, + artifact_id: str | Omit = omit, + tap_repo: str | Omit = omit, + registry: str | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -432,6 +444,9 @@ async def update_publishing( auth_method: Body parameter. access: Body parameter. tag: Body parameter. + artifact_id: Body parameter. + tap_repo: Body parameter. + registry: Body parameter. extra_headers: Send extra headers with the request. extra_query: Send extra query parameters with the request. extra_body: Send extra JSON properties with the request. @@ -461,6 +476,9 @@ async def update_publishing( "auth_method": auth_method, "access": access, "tag": tag, + "artifact_id": artifact_id, + "tap_repo": tap_repo, + "registry": registry, }, repository_update_publishing_params.RepositoryUpdatePublishingParams, ), diff --git a/src/scalar_sdk/types/__init__.py b/src/scalar_sdk/types/__init__.py index 8fdf173..a4944b7 100644 --- a/src/scalar_sdk/types/__init__.py +++ b/src/scalar_sdk/types/__init__.py @@ -21,6 +21,7 @@ from .active_deployment import ActiveDeployment as ActiveDeployment from .github_project_repository import GithubProjectRepository as GithubProjectRepository from .team_summary import TeamSummary as TeamSummary +from .user import User as User from .sdk import Sdk as Sdk from .sdk_target_summary import SdkTargetSummary as SdkTargetSummary from .sdk_version import SdkVersion as SdkVersion diff --git a/src/scalar_sdk/types/access_group_create_params.py b/src/scalar_sdk/types/access_group_create_params.py index 1434b55..62da45f 100644 --- a/src/scalar_sdk/types/access_group_create_params.py +++ b/src/scalar_sdk/types/access_group_create_params.py @@ -17,4 +17,4 @@ class AccessGroupCreateParams(TypedDict, total=False): slug: Slug - allowed_domains: Annotated[str, PropertyInfo(alias="allowedDomains")] + allowed_domains: Annotated[object, PropertyInfo(alias="allowedDomains")] diff --git a/src/scalar_sdk/types/access_group_create_response.py b/src/scalar_sdk/types/access_group_create_response.py index 85c72b8..0090178 100644 --- a/src/scalar_sdk/types/access_group_create_response.py +++ b/src/scalar_sdk/types/access_group_create_response.py @@ -18,6 +18,6 @@ class AccessGroupCreateResponse(BaseModel): slug: Slug - allowed_domains: str = FieldInfo(alias="allowedDomains") + allowed_domains: object = FieldInfo(alias="allowedDomains") - allowed_emails: str = FieldInfo(alias="allowedEmails") + allowed_emails: object = FieldInfo(alias="allowedEmails") diff --git a/src/scalar_sdk/types/access_group_retrieve_response.py b/src/scalar_sdk/types/access_group_retrieve_response.py index 9b2a044..2867191 100644 --- a/src/scalar_sdk/types/access_group_retrieve_response.py +++ b/src/scalar_sdk/types/access_group_retrieve_response.py @@ -18,6 +18,6 @@ class AccessGroupRetrieveResponse(BaseModel): slug: Slug - allowed_domains: str = FieldInfo(alias="allowedDomains") + allowed_domains: object = FieldInfo(alias="allowedDomains") - allowed_emails: str = FieldInfo(alias="allowedEmails") + allowed_emails: object = FieldInfo(alias="allowedEmails") diff --git a/src/scalar_sdk/types/api_document.py b/src/scalar_sdk/types/api_document.py index 9c92aeb..d8cebad 100644 --- a/src/scalar_sdk/types/api_document.py +++ b/src/scalar_sdk/types/api_document.py @@ -30,6 +30,6 @@ class APIDocument(BaseModel): is_private: bool = FieldInfo(alias="isPrivate") - tags: str + tags: object versions: List[ManagedDocVersion] diff --git a/src/scalar_sdk/types/docs_project.py b/src/scalar_sdk/types/docs_project.py index c61fe5a..25b44c0 100644 --- a/src/scalar_sdk/types/docs_project.py +++ b/src/scalar_sdk/types/docs_project.py @@ -22,7 +22,7 @@ class DocsProject(BaseModel): is_private: bool = FieldInfo(alias="isPrivate") - access_groups: str = FieldInfo(alias="accessGroups") + access_groups: object = FieldInfo(alias="accessGroups") login_portal_uid: str = FieldInfo(alias="loginPortalUid") diff --git a/src/scalar_sdk/types/github_project.py b/src/scalar_sdk/types/github_project.py index 7aa03e6..1a12a01 100644 --- a/src/scalar_sdk/types/github_project.py +++ b/src/scalar_sdk/types/github_project.py @@ -34,6 +34,8 @@ class GithubProject(BaseModel): user_info_hook_url: str = FieldInfo(alias="userInfoHookUrl") + user_info_hook_secret_uid: Optional[Nanoid] = FieldInfo(alias="userInfoHookSecretUid", default=None) + active_theme_id: str = FieldInfo(alias="activeThemeId") typesense_id: Optional[float] = FieldInfo(alias="typesenseId", default=None) @@ -44,7 +46,7 @@ class GithubProject(BaseModel): analytics_enabled: bool = FieldInfo(alias="analyticsEnabled") - access_groups: str = FieldInfo(alias="accessGroups") + access_groups: object = FieldInfo(alias="accessGroups") slug: Slug diff --git a/src/scalar_sdk/types/mcp/mcp_installation.py b/src/scalar_sdk/types/mcp/mcp_installation.py index 15bbffb..d801470 100644 --- a/src/scalar_sdk/types/mcp/mcp_installation.py +++ b/src/scalar_sdk/types/mcp/mcp_installation.py @@ -20,8 +20,6 @@ class McpInstallation(BaseModel): slug: Slug - is_private: bool = FieldInfo(alias="isPrivate") - access_groups: List[str] = FieldInfo(alias="accessGroups") login_portal_uid: Optional[str] = FieldInfo(alias="loginPortalUid", default=None) diff --git a/src/scalar_sdk/types/mcp/mcp_server.py b/src/scalar_sdk/types/mcp/mcp_server.py index 0d99ac3..51b35d9 100644 --- a/src/scalar_sdk/types/mcp/mcp_server.py +++ b/src/scalar_sdk/types/mcp/mcp_server.py @@ -16,8 +16,6 @@ class McpServer(BaseModel): slug: Slug - auto_add_operations: bool = FieldInfo(alias="autoAddOperations") - created_at: str = FieldInfo(alias="createdAt") updated_at: str = FieldInfo(alias="updatedAt") diff --git a/src/scalar_sdk/types/mcp/server_update_params.py b/src/scalar_sdk/types/mcp/server_update_params.py index a539dc8..29cca43 100644 --- a/src/scalar_sdk/types/mcp/server_update_params.py +++ b/src/scalar_sdk/types/mcp/server_update_params.py @@ -17,8 +17,6 @@ class ServerUpdateParams(TypedDict, total=False): slug: Slug - auto_add_operations: Annotated[bool, PropertyInfo(alias="autoAddOperations")] - operations: SequenceNotStr[str] docs_pages: Annotated[SequenceNotStr[str], PropertyInfo(alias="docsPages")] diff --git a/src/scalar_sdk/types/mcp/servers/__init__.py b/src/scalar_sdk/types/mcp/servers/__init__.py index e596658..221c539 100644 --- a/src/scalar_sdk/types/mcp/servers/__init__.py +++ b/src/scalar_sdk/types/mcp/servers/__init__.py @@ -4,7 +4,6 @@ from .mcp_installation_list_item import McpInstallationListItem as McpInstallationListItem from .installation_list_response import InstallationListResponse as InstallationListResponse -from .installation_create_params import InstallationCreateParams as InstallationCreateParams from .installation_update_params import InstallationUpdateParams as InstallationUpdateParams from .installation_delete_response import InstallationDeleteResponse as InstallationDeleteResponse from .installation_create_access_group_response import ( diff --git a/src/scalar_sdk/types/mcp/servers/installation_create_params.py b/src/scalar_sdk/types/mcp/servers/installation_create_params.py deleted file mode 100644 index a69f7b4..0000000 --- a/src/scalar_sdk/types/mcp/servers/installation_create_params.py +++ /dev/null @@ -1,20 +0,0 @@ -# File generated from our OpenAPI spec by Scalar. See README.md for details. - -from __future__ import annotations - -from typing import Dict -from typing_extensions import Annotated, Required, TypedDict - -from ...._utils import PropertyInfo - -from ...slug import Slug - -__all__ = ["InstallationCreateParams"] - - -class InstallationCreateParams(TypedDict, total=False): - name: Required[str] - - slug: Slug - - document_auth: Required[Annotated[Dict[str, object], PropertyInfo(alias="documentAuth")]] diff --git a/src/scalar_sdk/types/mcp/servers/installation_update_params.py b/src/scalar_sdk/types/mcp/servers/installation_update_params.py index ae317c5..1f16bbc 100644 --- a/src/scalar_sdk/types/mcp/servers/installation_update_params.py +++ b/src/scalar_sdk/types/mcp/servers/installation_update_params.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import Dict, Optional +from typing import Optional from typing_extensions import Annotated, Required, TypedDict from ...._utils import PropertyInfo @@ -18,11 +18,6 @@ class InstallationUpdateParams(TypedDict, total=False): name: str slug: Slug - - is_private: Annotated[bool, PropertyInfo(alias="isPrivate")] - - login_portal_uid: Annotated[Optional[str], PropertyInfo(alias="loginPortalUid")] - - document_auth: Annotated[Dict[str, object], PropertyInfo(alias="documentAuth")] + """The environment’s current slug. An environment cannot be renamed, so any other slug is refused.""" mcp_version: Annotated[Optional[str], PropertyInfo(alias="mcpVersion")] diff --git a/src/scalar_sdk/types/mcp/servers/mcp_installation_list_item.py b/src/scalar_sdk/types/mcp/servers/mcp_installation_list_item.py index 8b7b0c6..f8463f1 100644 --- a/src/scalar_sdk/types/mcp/servers/mcp_installation_list_item.py +++ b/src/scalar_sdk/types/mcp/servers/mcp_installation_list_item.py @@ -18,6 +18,4 @@ class McpInstallationListItem(BaseModel): slug: Slug - is_private: bool = FieldInfo(alias="isPrivate") - mcp_version: Optional[str] = FieldInfo(alias="mcpVersion", default=None) diff --git a/src/scalar_sdk/types/sdks/repository_update_publishing_params.py b/src/scalar_sdk/types/sdks/repository_update_publishing_params.py index 10406a9..cb3e0ca 100644 --- a/src/scalar_sdk/types/sdks/repository_update_publishing_params.py +++ b/src/scalar_sdk/types/sdks/repository_update_publishing_params.py @@ -21,3 +21,9 @@ class RepositoryUpdatePublishingParams(TypedDict, total=False): access: Literal["public", "restricted"] tag: str + + artifact_id: Annotated[str, PropertyInfo(alias="artifactId")] + + tap_repo: Annotated[str, PropertyInfo(alias="tapRepo")] + + registry: str diff --git a/src/scalar_sdk/types/teams/__init__.py b/src/scalar_sdk/types/teams/__init__.py index fb2aed2..0c7ddd1 100644 --- a/src/scalar_sdk/types/teams/__init__.py +++ b/src/scalar_sdk/types/teams/__init__.py @@ -6,7 +6,6 @@ from .role import Role as Role from .team_invite import TeamInvite as TeamInvite from .email import Email as Email -from .user import User as User from .member_list_response import MemberListResponse as MemberListResponse from .member_update_response import MemberUpdateResponse as MemberUpdateResponse from .member_update_params import MemberUpdateParams as MemberUpdateParams diff --git a/src/scalar_sdk/types/teams/user.py b/src/scalar_sdk/types/user.py similarity index 75% rename from src/scalar_sdk/types/teams/user.py rename to src/scalar_sdk/types/user.py index 3de32d7..d3b0971 100644 --- a/src/scalar_sdk/types/teams/user.py +++ b/src/scalar_sdk/types/user.py @@ -4,12 +4,12 @@ from pydantic import Field as FieldInfo -from ..._models import BaseModel +from .._models import BaseModel -from ..shared.nanoid import Nanoid -from ..shared.timestamp import Timestamp -from .email import Email -from ..team_summary import TeamSummary +from .shared.nanoid import Nanoid +from .shared.timestamp import Timestamp +from .teams.email import Email +from .team_summary import TeamSummary __all__ = ["User"] diff --git a/tests/smoke-test.py b/tests/smoke-test.py index 830319d..eb47848 100644 --- a/tests/smoke-test.py +++ b/tests/smoke-test.py @@ -853,6 +853,9 @@ def _smoke_case_104() -> None: auth_method="oidc", access="public", tag="latest", + artifact_id="scalar-galaxy", + tap_repo="scalar/homebrew-tap", + registry="npm", ) @@ -892,7 +895,6 @@ def _smoke_case_110() -> None: id="42", name="Acme MCP", slug="acme-mcp", - auto_add_operations=True, operations=["42"], docs_pages=["getting-started"], ) @@ -911,57 +913,37 @@ def _smoke_case_112() -> None: def _smoke_case_113() -> None: - installation = client.mcp.servers.installations.create( - id="42", - name="Acme MCP", - document_auth={}, - ) - - -def _smoke_case_114() -> None: - installation = client.mcp.servers.installations.create( - id="42", - name="Acme MCP", - slug="acme-mcp", - document_auth={}, - ) - - -def _smoke_case_115() -> None: installation = client.mcp.servers.installations.retrieve( id="42", installation_id="84", ) -def _smoke_case_116() -> None: +def _smoke_case_114() -> None: installation = client.mcp.servers.installations.update( id="42", installation_id="84", ) -def _smoke_case_117() -> None: +def _smoke_case_115() -> None: installation = client.mcp.servers.installations.update( id="42", installation_id="84", name="Acme MCP", - slug="acme-mcp", - is_private=False, - login_portal_uid="LakgbKJ5m9gl0JDMbcJqL", - document_auth={}, + slug="staging", mcp_version="1.2.0", ) -def _smoke_case_118() -> None: +def _smoke_case_116() -> None: installation = client.mcp.servers.installations.delete( id="42", installation_id="84", ) -def _smoke_case_119() -> None: +def _smoke_case_117() -> None: installation = client.mcp.servers.installations.create_access_group( id="42", installation_id="84", @@ -969,7 +951,7 @@ def _smoke_case_119() -> None: ) -def _smoke_case_120() -> None: +def _smoke_case_118() -> None: installation = client.mcp.servers.installations.delete_access_group( id="42", installation_id="84", @@ -1712,57 +1694,43 @@ def _smoke_case_120() -> None: "path": "/v1/mcp/servers/{id}/installations", "run": _smoke_case_112, }, - { - "operation": "create", - "method": "POST", - "path": "/v1/mcp/servers/{id}/installations", - "label": "required params", - "run": _smoke_case_113, - }, - { - "operation": "create", - "method": "POST", - "path": "/v1/mcp/servers/{id}/installations", - "label": "all params", - "run": _smoke_case_114, - }, { "operation": "retrieve", "method": "GET", "path": "/v1/mcp/servers/{id}/installations/{installationId}", - "run": _smoke_case_115, + "run": _smoke_case_113, }, { "operation": "update", "method": "PATCH", "path": "/v1/mcp/servers/{id}/installations/{installationId}", "label": "required params", - "run": _smoke_case_116, + "run": _smoke_case_114, }, { "operation": "update", "method": "PATCH", "path": "/v1/mcp/servers/{id}/installations/{installationId}", "label": "all params", - "run": _smoke_case_117, + "run": _smoke_case_115, }, { "operation": "delete", "method": "DELETE", "path": "/v1/mcp/servers/{id}/installations/{installationId}", - "run": _smoke_case_118, + "run": _smoke_case_116, }, { "operation": "createAccessGroup", "method": "POST", "path": "/v1/mcp/servers/{id}/installations/{installationId}/access-group", - "run": _smoke_case_119, + "run": _smoke_case_117, }, { "operation": "deleteAccessGroup", "method": "DELETE", "path": "/v1/mcp/servers/{id}/installations/{installationId}/access-group", - "run": _smoke_case_120, + "run": _smoke_case_118, }, ]