diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 53e0b74..e5b34d4 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "3.28.0" + ".": "3.29.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 1aa117c..4bdfb3f 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 26 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/supermemory--inc%2Fsupermemory-new-8d6903994bad6e2f9510fb021df21f84a3efa8f63abfff814455d666efa7388a.yml -openapi_spec_hash: f9e80ec52ae9aecbd23a365dc1a3932f +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/supermemory--inc%2Fsupermemory-new-7386f0fb80432ebe6e3ef86bf47b7cf59374639e4a15f63a931375220a8c9c58.yml +openapi_spec_hash: 729176c8916a6cc3b8abe57fd6cdf7c0 config_hash: f3eb5ca71172780678106f6d46f15dda diff --git a/CHANGELOG.md b/CHANGELOG.md index a087768..28e9394 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 3.29.0 (2026-03-12) + +Full Changelog: [v3.28.0...v3.29.0](https://github.com/supermemoryai/python-sdk/compare/v3.28.0...v3.29.0) + +### Features + +* **api:** api update ([fe80425](https://github.com/supermemoryai/python-sdk/commit/fe80425181b93862c2d544b5d5664827aa41a57a)) +* **api:** api update ([de304ee](https://github.com/supermemoryai/python-sdk/commit/de304ee6d6f3938ee8f866dcca0dde26d98fb369)) + ## 3.28.0 (2026-03-09) Full Changelog: [v3.27.0...v3.28.0](https://github.com/supermemoryai/python-sdk/compare/v3.27.0...v3.28.0) diff --git a/api.md b/api.md index b762ddd..2b72f5d 100644 --- a/api.md +++ b/api.md @@ -104,7 +104,7 @@ Methods: - client.connections.create(provider, \*\*params) -> ConnectionCreateResponse - client.connections.list(\*\*params) -> ConnectionListResponse - client.connections.configure(connection_id, \*\*params) -> ConnectionConfigureResponse -- client.connections.delete_by_id(connection_id) -> ConnectionDeleteByIDResponse +- client.connections.delete_by_id(connection_id, \*\*params) -> ConnectionDeleteByIDResponse - client.connections.delete_by_provider(provider, \*\*params) -> ConnectionDeleteByProviderResponse - client.connections.get_by_id(connection_id) -> ConnectionGetByIDResponse - client.connections.get_by_tag(provider, \*\*params) -> ConnectionGetByTagResponse diff --git a/pyproject.toml b/pyproject.toml index 291232b..f0a826a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "supermemory" -version = "3.28.0" +version = "3.29.0" description = "The official Python library for the supermemory API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/supermemory/_version.py b/src/supermemory/_version.py index 40b2ac4..1689bf8 100644 --- a/src/supermemory/_version.py +++ b/src/supermemory/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "supermemory" -__version__ = "3.28.0" # x-release-please-version +__version__ = "3.29.0" # x-release-please-version diff --git a/src/supermemory/resources/connections.py b/src/supermemory/resources/connections.py index c96b4be..2c19235 100644 --- a/src/supermemory/resources/connections.py +++ b/src/supermemory/resources/connections.py @@ -14,6 +14,7 @@ connection_configure_params, connection_resources_params, connection_get_by_tag_params, + connection_delete_by_id_params, connection_list_documents_params, connection_delete_by_provider_params, ) @@ -182,6 +183,7 @@ def delete_by_id( self, connection_id: str, *, + delete_documents: 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, @@ -193,6 +195,8 @@ def delete_by_id( Delete a specific connection by ID Args: + delete_documents: Whether to also delete documents imported by this connection. Defaults to true. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -206,7 +210,13 @@ def delete_by_id( return self._delete( f"/v3/connections/{connection_id}", options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout + extra_headers=extra_headers, + extra_query=extra_query, + extra_body=extra_body, + timeout=timeout, + query=maybe_transform( + {"delete_documents": delete_documents}, connection_delete_by_id_params.ConnectionDeleteByIDParams + ), ), cast_to=ConnectionDeleteByIDResponse, ) @@ -591,6 +601,7 @@ async def delete_by_id( self, connection_id: str, *, + delete_documents: 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, @@ -602,6 +613,8 @@ async def delete_by_id( Delete a specific connection by ID Args: + delete_documents: Whether to also delete documents imported by this connection. Defaults to true. + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -615,7 +628,13 @@ async def delete_by_id( return await self._delete( f"/v3/connections/{connection_id}", options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout + extra_headers=extra_headers, + extra_query=extra_query, + extra_body=extra_body, + timeout=timeout, + query=await async_maybe_transform( + {"delete_documents": delete_documents}, connection_delete_by_id_params.ConnectionDeleteByIDParams + ), ), cast_to=ConnectionDeleteByIDResponse, ) diff --git a/src/supermemory/types/__init__.py b/src/supermemory/types/__init__.py index 6b7b372..695b777 100644 --- a/src/supermemory/types/__init__.py +++ b/src/supermemory/types/__init__.py @@ -44,6 +44,7 @@ from .document_delete_bulk_response import DocumentDeleteBulkResponse as DocumentDeleteBulkResponse from .document_upload_file_response import DocumentUploadFileResponse as DocumentUploadFileResponse from .memory_update_memory_response import MemoryUpdateMemoryResponse as MemoryUpdateMemoryResponse +from .connection_delete_by_id_params import ConnectionDeleteByIDParams as ConnectionDeleteByIDParams from .connection_get_by_tag_response import ConnectionGetByTagResponse as ConnectionGetByTagResponse from .connection_delete_by_id_response import ConnectionDeleteByIDResponse as ConnectionDeleteByIDResponse from .connection_list_documents_params import ConnectionListDocumentsParams as ConnectionListDocumentsParams diff --git a/src/supermemory/types/connection_delete_by_id_params.py b/src/supermemory/types/connection_delete_by_id_params.py new file mode 100644 index 0000000..2f08f96 --- /dev/null +++ b/src/supermemory/types/connection_delete_by_id_params.py @@ -0,0 +1,14 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from __future__ import annotations + +from typing_extensions import Annotated, TypedDict + +from .._utils import PropertyInfo + +__all__ = ["ConnectionDeleteByIDParams"] + + +class ConnectionDeleteByIDParams(TypedDict, total=False): + delete_documents: Annotated[str, PropertyInfo(alias="deleteDocuments")] + """Whether to also delete documents imported by this connection. Defaults to true.""" diff --git a/src/supermemory/types/document_get_response.py b/src/supermemory/types/document_get_response.py index 013033b..5bba549 100644 --- a/src/supermemory/types/document_get_response.py +++ b/src/supermemory/types/document_get_response.py @@ -81,6 +81,7 @@ class DocumentGetResponse(BaseModel): "google_sheet", "image", "video", + "audio", "notion_doc", "webpage", "onedrive", diff --git a/src/supermemory/types/document_list_processing_response.py b/src/supermemory/types/document_list_processing_response.py index 6a671b2..c29af8b 100644 --- a/src/supermemory/types/document_list_processing_response.py +++ b/src/supermemory/types/document_list_processing_response.py @@ -48,6 +48,7 @@ class Document(BaseModel): "google_sheet", "image", "video", + "audio", "notion_doc", "webpage", "onedrive", diff --git a/src/supermemory/types/document_list_response.py b/src/supermemory/types/document_list_response.py index 46cc95a..c5cb1b1 100644 --- a/src/supermemory/types/document_list_response.py +++ b/src/supermemory/types/document_list_response.py @@ -57,6 +57,7 @@ class Memory(BaseModel): "google_sheet", "image", "video", + "audio", "notion_doc", "webpage", "onedrive", diff --git a/tests/api_resources/test_connections.py b/tests/api_resources/test_connections.py index b78b0df..8a1ba03 100644 --- a/tests/api_resources/test_connections.py +++ b/tests/api_resources/test_connections.py @@ -41,7 +41,7 @@ def test_method_create_with_all_params(self, client: Supermemory) -> None: connection = client.connections.create( provider="notion", container_tag="containerTag", - container_tags=["_1K--W2kIFj1"], + container_tags=["_:_k--W2K_1V"], document_limit=1, metadata={"foo": "string"}, redirect_url="redirectUrl", @@ -160,7 +160,16 @@ def test_path_params_configure(self, client: Supermemory) -> None: @parametrize def test_method_delete_by_id(self, client: Supermemory) -> None: connection = client.connections.delete_by_id( - "connectionId", + connection_id="connectionId", + ) + assert_matches_type(ConnectionDeleteByIDResponse, connection, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + def test_method_delete_by_id_with_all_params(self, client: Supermemory) -> None: + connection = client.connections.delete_by_id( + connection_id="connectionId", + delete_documents="deleteDocuments", ) assert_matches_type(ConnectionDeleteByIDResponse, connection, path=["response"]) @@ -168,7 +177,7 @@ def test_method_delete_by_id(self, client: Supermemory) -> None: @parametrize def test_raw_response_delete_by_id(self, client: Supermemory) -> None: response = client.connections.with_raw_response.delete_by_id( - "connectionId", + connection_id="connectionId", ) assert response.is_closed is True @@ -180,7 +189,7 @@ def test_raw_response_delete_by_id(self, client: Supermemory) -> None: @parametrize def test_streaming_response_delete_by_id(self, client: Supermemory) -> None: with client.connections.with_streaming_response.delete_by_id( - "connectionId", + connection_id="connectionId", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -195,7 +204,7 @@ def test_streaming_response_delete_by_id(self, client: Supermemory) -> None: def test_path_params_delete_by_id(self, client: Supermemory) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `connection_id` but received ''"): client.connections.with_raw_response.delete_by_id( - "", + connection_id="", ) @pytest.mark.skip(reason="Mock server tests are disabled") @@ -472,7 +481,7 @@ async def test_method_create_with_all_params(self, async_client: AsyncSupermemor connection = await async_client.connections.create( provider="notion", container_tag="containerTag", - container_tags=["_1K--W2kIFj1"], + container_tags=["_:_k--W2K_1V"], document_limit=1, metadata={"foo": "string"}, redirect_url="redirectUrl", @@ -591,7 +600,16 @@ async def test_path_params_configure(self, async_client: AsyncSupermemory) -> No @parametrize async def test_method_delete_by_id(self, async_client: AsyncSupermemory) -> None: connection = await async_client.connections.delete_by_id( - "connectionId", + connection_id="connectionId", + ) + assert_matches_type(ConnectionDeleteByIDResponse, connection, path=["response"]) + + @pytest.mark.skip(reason="Mock server tests are disabled") + @parametrize + async def test_method_delete_by_id_with_all_params(self, async_client: AsyncSupermemory) -> None: + connection = await async_client.connections.delete_by_id( + connection_id="connectionId", + delete_documents="deleteDocuments", ) assert_matches_type(ConnectionDeleteByIDResponse, connection, path=["response"]) @@ -599,7 +617,7 @@ async def test_method_delete_by_id(self, async_client: AsyncSupermemory) -> None @parametrize async def test_raw_response_delete_by_id(self, async_client: AsyncSupermemory) -> None: response = await async_client.connections.with_raw_response.delete_by_id( - "connectionId", + connection_id="connectionId", ) assert response.is_closed is True @@ -611,7 +629,7 @@ async def test_raw_response_delete_by_id(self, async_client: AsyncSupermemory) - @parametrize async def test_streaming_response_delete_by_id(self, async_client: AsyncSupermemory) -> None: async with async_client.connections.with_streaming_response.delete_by_id( - "connectionId", + connection_id="connectionId", ) as response: assert not response.is_closed assert response.http_request.headers.get("X-Stainless-Lang") == "python" @@ -626,7 +644,7 @@ async def test_streaming_response_delete_by_id(self, async_client: AsyncSupermem async def test_path_params_delete_by_id(self, async_client: AsyncSupermemory) -> None: with pytest.raises(ValueError, match=r"Expected a non-empty value for `connection_id` but received ''"): await async_client.connections.with_raw_response.delete_by_id( - "", + connection_id="", ) @pytest.mark.skip(reason="Mock server tests are disabled")