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")