diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index bf0d0361..f391d416 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "3.5.0"
+ ".": "3.6.0"
}
\ No newline at end of file
diff --git a/.stats.yml b/.stats.yml
index 19a9a0b1..0b389cd6 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 19
+configured_endpoints: 18
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/supermemory--inc%2Fsupermemory-new-ebd5e757d0e76cb83013e01a1e0bb3dba62beb83b2a2ffa28d148ea032e96fd0.yml
openapi_spec_hash: f930474a6ad230545154244045cc602e
-config_hash: 5761a0b4f8c53c72efab21d41c00012b
+config_hash: 5bc39292a7e2f871b35cdebbecd9f022
diff --git a/CHANGELOG.md b/CHANGELOG.md
index abe4f578..8e3dbe79 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## 3.6.0 (2025-11-26)
+
+Full Changelog: [v3.5.0...v3.6.0](https://github.com/supermemoryai/python-sdk/compare/v3.5.0...v3.6.0)
+
+### Features
+
+* **api:** manual updates ([a46347c](https://github.com/supermemoryai/python-sdk/commit/a46347c8640b2442d0f8ffbe4c5f948a9c5edb1b))
+
## 3.5.0 (2025-11-26)
Full Changelog: [v3.4.0...v3.5.0](https://github.com/supermemoryai/python-sdk/compare/v3.4.0...v3.5.0)
diff --git a/api.md b/api.md
index 0e4a1b7c..4451d8b1 100644
--- a/api.md
+++ b/api.md
@@ -50,18 +50,6 @@ Methods:
- client.documents.get(id) -> DocumentGetResponse
- client.documents.upload_file(\*\*params) -> DocumentUploadFileResponse
-# Profile
-
-Types:
-
-```python
-from supermemory.types import ProfilePropertyResponse
-```
-
-Methods:
-
-- client.profile.property(\*\*params) -> ProfilePropertyResponse
-
# Search
Types:
diff --git a/pyproject.toml b/pyproject.toml
index 9d073d2e..ac4ed2c5 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "supermemory"
-version = "3.5.0"
+version = "3.6.0"
description = "The official Python library for the supermemory API"
dynamic = ["readme"]
license = "Apache-2.0"
diff --git a/src/supermemory/_client.py b/src/supermemory/_client.py
index 6982c404..0de41593 100644
--- a/src/supermemory/_client.py
+++ b/src/supermemory/_client.py
@@ -21,7 +21,7 @@
)
from ._utils import is_given, get_async_library
from ._version import __version__
-from .resources import search, profile, memories, settings, documents, connections
+from .resources import search, memories, settings, documents, connections
from ._streaming import Stream as Stream, AsyncStream as AsyncStream
from ._exceptions import APIStatusError, SupermemoryError
from ._base_client import (
@@ -45,7 +45,6 @@
class Supermemory(SyncAPIClient):
memories: memories.MemoriesResource
documents: documents.DocumentsResource
- profile: profile.ProfileResource
search: search.SearchResource
settings: settings.SettingsResource
connections: connections.ConnectionsResource
@@ -108,7 +107,6 @@ def __init__(
self.memories = memories.MemoriesResource(self)
self.documents = documents.DocumentsResource(self)
- self.profile = profile.ProfileResource(self)
self.search = search.SearchResource(self)
self.settings = settings.SettingsResource(self)
self.connections = connections.ConnectionsResource(self)
@@ -223,7 +221,6 @@ def _make_status_error(
class AsyncSupermemory(AsyncAPIClient):
memories: memories.AsyncMemoriesResource
documents: documents.AsyncDocumentsResource
- profile: profile.AsyncProfileResource
search: search.AsyncSearchResource
settings: settings.AsyncSettingsResource
connections: connections.AsyncConnectionsResource
@@ -286,7 +283,6 @@ def __init__(
self.memories = memories.AsyncMemoriesResource(self)
self.documents = documents.AsyncDocumentsResource(self)
- self.profile = profile.AsyncProfileResource(self)
self.search = search.AsyncSearchResource(self)
self.settings = settings.AsyncSettingsResource(self)
self.connections = connections.AsyncConnectionsResource(self)
@@ -402,7 +398,6 @@ class SupermemoryWithRawResponse:
def __init__(self, client: Supermemory) -> None:
self.memories = memories.MemoriesResourceWithRawResponse(client.memories)
self.documents = documents.DocumentsResourceWithRawResponse(client.documents)
- self.profile = profile.ProfileResourceWithRawResponse(client.profile)
self.search = search.SearchResourceWithRawResponse(client.search)
self.settings = settings.SettingsResourceWithRawResponse(client.settings)
self.connections = connections.ConnectionsResourceWithRawResponse(client.connections)
@@ -412,7 +407,6 @@ class AsyncSupermemoryWithRawResponse:
def __init__(self, client: AsyncSupermemory) -> None:
self.memories = memories.AsyncMemoriesResourceWithRawResponse(client.memories)
self.documents = documents.AsyncDocumentsResourceWithRawResponse(client.documents)
- self.profile = profile.AsyncProfileResourceWithRawResponse(client.profile)
self.search = search.AsyncSearchResourceWithRawResponse(client.search)
self.settings = settings.AsyncSettingsResourceWithRawResponse(client.settings)
self.connections = connections.AsyncConnectionsResourceWithRawResponse(client.connections)
@@ -422,7 +416,6 @@ class SupermemoryWithStreamedResponse:
def __init__(self, client: Supermemory) -> None:
self.memories = memories.MemoriesResourceWithStreamingResponse(client.memories)
self.documents = documents.DocumentsResourceWithStreamingResponse(client.documents)
- self.profile = profile.ProfileResourceWithStreamingResponse(client.profile)
self.search = search.SearchResourceWithStreamingResponse(client.search)
self.settings = settings.SettingsResourceWithStreamingResponse(client.settings)
self.connections = connections.ConnectionsResourceWithStreamingResponse(client.connections)
@@ -432,7 +425,6 @@ class AsyncSupermemoryWithStreamedResponse:
def __init__(self, client: AsyncSupermemory) -> None:
self.memories = memories.AsyncMemoriesResourceWithStreamingResponse(client.memories)
self.documents = documents.AsyncDocumentsResourceWithStreamingResponse(client.documents)
- self.profile = profile.AsyncProfileResourceWithStreamingResponse(client.profile)
self.search = search.AsyncSearchResourceWithStreamingResponse(client.search)
self.settings = settings.AsyncSettingsResourceWithStreamingResponse(client.settings)
self.connections = connections.AsyncConnectionsResourceWithStreamingResponse(client.connections)
diff --git a/src/supermemory/_version.py b/src/supermemory/_version.py
index 8d8aec6f..859e0c9e 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.5.0" # x-release-please-version
+__version__ = "3.6.0" # x-release-please-version
diff --git a/src/supermemory/resources/__init__.py b/src/supermemory/resources/__init__.py
index 14a2c145..ca24f73f 100644
--- a/src/supermemory/resources/__init__.py
+++ b/src/supermemory/resources/__init__.py
@@ -8,14 +8,6 @@
SearchResourceWithStreamingResponse,
AsyncSearchResourceWithStreamingResponse,
)
-from .profile import (
- ProfileResource,
- AsyncProfileResource,
- ProfileResourceWithRawResponse,
- AsyncProfileResourceWithRawResponse,
- ProfileResourceWithStreamingResponse,
- AsyncProfileResourceWithStreamingResponse,
-)
from .memories import (
MemoriesResource,
AsyncMemoriesResource,
@@ -62,12 +54,6 @@
"AsyncDocumentsResourceWithRawResponse",
"DocumentsResourceWithStreamingResponse",
"AsyncDocumentsResourceWithStreamingResponse",
- "ProfileResource",
- "AsyncProfileResource",
- "ProfileResourceWithRawResponse",
- "AsyncProfileResourceWithRawResponse",
- "ProfileResourceWithStreamingResponse",
- "AsyncProfileResourceWithStreamingResponse",
"SearchResource",
"AsyncSearchResource",
"SearchResourceWithRawResponse",
diff --git a/src/supermemory/resources/profile.py b/src/supermemory/resources/profile.py
deleted file mode 100644
index 23ec2733..00000000
--- a/src/supermemory/resources/profile.py
+++ /dev/null
@@ -1,187 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-import httpx
-
-from ..types import profile_property_params
-from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
-from .._utils import maybe_transform, async_maybe_transform
-from .._compat import cached_property
-from .._resource import SyncAPIResource, AsyncAPIResource
-from .._response import (
- to_raw_response_wrapper,
- to_streamed_response_wrapper,
- async_to_raw_response_wrapper,
- async_to_streamed_response_wrapper,
-)
-from .._base_client import make_request_options
-from ..types.profile_property_response import ProfilePropertyResponse
-
-__all__ = ["ProfileResource", "AsyncProfileResource"]
-
-
-class ProfileResource(SyncAPIResource):
- @cached_property
- def with_raw_response(self) -> ProfileResourceWithRawResponse:
- """
- This property can be used as a prefix for any HTTP method call to return
- the raw response object instead of the parsed content.
-
- For more information, see https://www.github.com/supermemoryai/python-sdk#accessing-raw-response-data-eg-headers
- """
- return ProfileResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> ProfileResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/supermemoryai/python-sdk#with_streaming_response
- """
- return ProfileResourceWithStreamingResponse(self)
-
- def property(
- self,
- *,
- container_tag: str,
- q: 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,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
- ) -> ProfilePropertyResponse:
- """
- Get user profile with optional search results
-
- Args:
- container_tag: Tag to filter the profile by. This can be an ID for your user, a project ID, or
- any other identifier you wish to use to filter memories.
-
- q: Optional search query to include search results in the response
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- return self._post(
- "/v4/profile",
- body=maybe_transform(
- {
- "container_tag": container_tag,
- "q": q,
- },
- profile_property_params.ProfilePropertyParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=ProfilePropertyResponse,
- )
-
-
-class AsyncProfileResource(AsyncAPIResource):
- @cached_property
- def with_raw_response(self) -> AsyncProfileResourceWithRawResponse:
- """
- This property can be used as a prefix for any HTTP method call to return
- the raw response object instead of the parsed content.
-
- For more information, see https://www.github.com/supermemoryai/python-sdk#accessing-raw-response-data-eg-headers
- """
- return AsyncProfileResourceWithRawResponse(self)
-
- @cached_property
- def with_streaming_response(self) -> AsyncProfileResourceWithStreamingResponse:
- """
- An alternative to `.with_raw_response` that doesn't eagerly read the response body.
-
- For more information, see https://www.github.com/supermemoryai/python-sdk#with_streaming_response
- """
- return AsyncProfileResourceWithStreamingResponse(self)
-
- async def property(
- self,
- *,
- container_tag: str,
- q: 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,
- extra_query: Query | None = None,
- extra_body: Body | None = None,
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
- ) -> ProfilePropertyResponse:
- """
- Get user profile with optional search results
-
- Args:
- container_tag: Tag to filter the profile by. This can be an ID for your user, a project ID, or
- any other identifier you wish to use to filter memories.
-
- q: Optional search query to include search results in the response
-
- extra_headers: Send extra headers
-
- extra_query: Add additional query parameters to the request
-
- extra_body: Add additional JSON properties to the request
-
- timeout: Override the client-level default timeout for this request, in seconds
- """
- return await self._post(
- "/v4/profile",
- body=await async_maybe_transform(
- {
- "container_tag": container_tag,
- "q": q,
- },
- profile_property_params.ProfilePropertyParams,
- ),
- options=make_request_options(
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
- ),
- cast_to=ProfilePropertyResponse,
- )
-
-
-class ProfileResourceWithRawResponse:
- def __init__(self, profile: ProfileResource) -> None:
- self._profile = profile
-
- self.property = to_raw_response_wrapper(
- profile.property,
- )
-
-
-class AsyncProfileResourceWithRawResponse:
- def __init__(self, profile: AsyncProfileResource) -> None:
- self._profile = profile
-
- self.property = async_to_raw_response_wrapper(
- profile.property,
- )
-
-
-class ProfileResourceWithStreamingResponse:
- def __init__(self, profile: ProfileResource) -> None:
- self._profile = profile
-
- self.property = to_streamed_response_wrapper(
- profile.property,
- )
-
-
-class AsyncProfileResourceWithStreamingResponse:
- def __init__(self, profile: AsyncProfileResource) -> None:
- self._profile = profile
-
- self.property = async_to_streamed_response_wrapper(
- profile.property,
- )
diff --git a/src/supermemory/types/__init__.py b/src/supermemory/types/__init__.py
index cf59ae71..54bc0e85 100644
--- a/src/supermemory/types/__init__.py
+++ b/src/supermemory/types/__init__.py
@@ -21,7 +21,6 @@
from .document_update_params import DocumentUpdateParams as DocumentUpdateParams
from .memory_update_response import MemoryUpdateResponse as MemoryUpdateResponse
from .search_memories_params import SearchMemoriesParams as SearchMemoriesParams
-from .profile_property_params import ProfilePropertyParams as ProfilePropertyParams
from .search_documents_params import SearchDocumentsParams as SearchDocumentsParams
from .search_execute_response import SearchExecuteResponse as SearchExecuteResponse
from .setting_update_response import SettingUpdateResponse as SettingUpdateResponse
@@ -31,7 +30,6 @@
from .document_update_response import DocumentUpdateResponse as DocumentUpdateResponse
from .search_memories_response import SearchMemoriesResponse as SearchMemoriesResponse
from .memory_upload_file_params import MemoryUploadFileParams as MemoryUploadFileParams
-from .profile_property_response import ProfilePropertyResponse as ProfilePropertyResponse
from .search_documents_response import SearchDocumentsResponse as SearchDocumentsResponse
from .connection_create_response import ConnectionCreateResponse as ConnectionCreateResponse
from .connection_import_response import ConnectionImportResponse as ConnectionImportResponse
diff --git a/src/supermemory/types/profile_property_params.py b/src/supermemory/types/profile_property_params.py
deleted file mode 100644
index 46cb736d..00000000
--- a/src/supermemory/types/profile_property_params.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-from typing_extensions import Required, Annotated, TypedDict
-
-from .._utils import PropertyInfo
-
-__all__ = ["ProfilePropertyParams"]
-
-
-class ProfilePropertyParams(TypedDict, total=False):
- container_tag: Required[Annotated[str, PropertyInfo(alias="containerTag")]]
- """Tag to filter the profile by.
-
- This can be an ID for your user, a project ID, or any other identifier you wish
- to use to filter memories.
- """
-
- q: str
- """Optional search query to include search results in the response"""
diff --git a/src/supermemory/types/profile_property_response.py b/src/supermemory/types/profile_property_response.py
deleted file mode 100644
index 6e7e1383..00000000
--- a/src/supermemory/types/profile_property_response.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from typing import List, Optional
-
-from pydantic import Field as FieldInfo
-
-from .._models import BaseModel
-
-__all__ = ["ProfilePropertyResponse", "Profile", "SearchResults"]
-
-
-class Profile(BaseModel):
- dynamic: List[str]
- """Dynamic profile information (recent memories)"""
-
- static: List[str]
- """Static profile information that remains relevant long-term"""
-
-
-class SearchResults(BaseModel):
- results: List[object]
- """Search results for the provided query"""
-
- timing: float
- """Search timing in milliseconds"""
-
- total: float
- """Total number of search results"""
-
-
-class ProfilePropertyResponse(BaseModel):
- profile: Profile
-
- search_results: Optional[SearchResults] = FieldInfo(alias="searchResults", default=None)
- """Search results if a search query was provided"""
diff --git a/tests/api_resources/test_profile.py b/tests/api_resources/test_profile.py
deleted file mode 100644
index 4312ae78..00000000
--- a/tests/api_resources/test_profile.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from __future__ import annotations
-
-import os
-from typing import Any, cast
-
-import pytest
-
-from supermemory import Supermemory, AsyncSupermemory
-from tests.utils import assert_matches_type
-from supermemory.types import ProfilePropertyResponse
-
-base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
-
-
-class TestProfile:
- parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- def test_method_property(self, client: Supermemory) -> None:
- profile = client.profile.property(
- container_tag="containerTag",
- )
- assert_matches_type(ProfilePropertyResponse, profile, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- def test_method_property_with_all_params(self, client: Supermemory) -> None:
- profile = client.profile.property(
- container_tag="containerTag",
- q="q",
- )
- assert_matches_type(ProfilePropertyResponse, profile, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- def test_raw_response_property(self, client: Supermemory) -> None:
- response = client.profile.with_raw_response.property(
- container_tag="containerTag",
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- profile = response.parse()
- assert_matches_type(ProfilePropertyResponse, profile, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- def test_streaming_response_property(self, client: Supermemory) -> None:
- with client.profile.with_streaming_response.property(
- container_tag="containerTag",
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- profile = response.parse()
- assert_matches_type(ProfilePropertyResponse, profile, path=["response"])
-
- assert cast(Any, response.is_closed) is True
-
-
-class TestAsyncProfile:
- parametrize = pytest.mark.parametrize(
- "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
- )
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- async def test_method_property(self, async_client: AsyncSupermemory) -> None:
- profile = await async_client.profile.property(
- container_tag="containerTag",
- )
- assert_matches_type(ProfilePropertyResponse, profile, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- async def test_method_property_with_all_params(self, async_client: AsyncSupermemory) -> None:
- profile = await async_client.profile.property(
- container_tag="containerTag",
- q="q",
- )
- assert_matches_type(ProfilePropertyResponse, profile, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- async def test_raw_response_property(self, async_client: AsyncSupermemory) -> None:
- response = await async_client.profile.with_raw_response.property(
- container_tag="containerTag",
- )
-
- assert response.is_closed is True
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
- profile = await response.parse()
- assert_matches_type(ProfilePropertyResponse, profile, path=["response"])
-
- @pytest.mark.skip(reason="Prism tests are disabled")
- @parametrize
- async def test_streaming_response_property(self, async_client: AsyncSupermemory) -> None:
- async with async_client.profile.with_streaming_response.property(
- container_tag="containerTag",
- ) as response:
- assert not response.is_closed
- assert response.http_request.headers.get("X-Stainless-Lang") == "python"
-
- profile = await response.parse()
- assert_matches_type(ProfilePropertyResponse, profile, path=["response"])
-
- assert cast(Any, response.is_closed) is True