diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 98af54b2..32ac2e3a 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.430.0"
+ ".": "0.431.0"
}
\ No newline at end of file
diff --git a/.stats.yml b/.stats.yml
index 61c2836e..ec36c3af 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 236
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-010fcebf036b735c59221760be7726699913ed68102323b49939ddd880a12e32.yml
-openapi_spec_hash: 92d7bc1bf2f3034735206e358249ba5c
-config_hash: dda988c5565c2f15cc708122984d7691
+configured_endpoints: 237
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-defae23482710e9c09a4a09f19b5de303c58f4b3ffd937c6dfafacb4124f4378.yml
+openapi_spec_hash: f1404bbd3ac5cbd9cfb952f3c65bb406
+config_hash: 896b006f9647a513eda3b228cf17c199
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d752b80f..17e00596 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## 0.431.0 (2026-03-11)
+
+Full Changelog: [v0.430.0...v0.431.0](https://github.com/Increase/increase-python/compare/v0.430.0...v0.431.0)
+
+### Features
+
+* **api:** api update ([4afe591](https://github.com/Increase/increase-python/commit/4afe5916d301d55c896451c0354b1135026df588))
+
## 0.430.0 (2026-03-11)
Full Changelog: [v0.429.0...v0.430.0](https://github.com/Increase/increase-python/compare/v0.429.0...v0.430.0)
diff --git a/api.md b/api.md
index 19a49271..6a8ad2a2 100644
--- a/api.md
+++ b/api.md
@@ -516,6 +516,7 @@ from increase.types import EntityBeneficialOwner
Methods:
- client.beneficial_owners.retrieve(entity_beneficial_owner_id) -> EntityBeneficialOwner
+- client.beneficial_owners.update(entity_beneficial_owner_id, \*\*params) -> EntityBeneficialOwner
- client.beneficial_owners.list(\*\*params) -> SyncPage[EntityBeneficialOwner]
# SupplementalDocuments
diff --git a/pyproject.toml b/pyproject.toml
index d57e2fa9..55f91093 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "increase"
-version = "0.430.0"
+version = "0.431.0"
description = "The official Python library for the increase API"
dynamic = ["readme"]
license = "Apache-2.0"
diff --git a/src/increase/_version.py b/src/increase/_version.py
index f8545a5e..5159786e 100644
--- a/src/increase/_version.py
+++ b/src/increase/_version.py
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
__title__ = "increase"
-__version__ = "0.430.0" # x-release-please-version
+__version__ = "0.431.0" # x-release-please-version
diff --git a/src/increase/resources/beneficial_owners.py b/src/increase/resources/beneficial_owners.py
index 37f6eb07..8bed8ef8 100644
--- a/src/increase/resources/beneficial_owners.py
+++ b/src/increase/resources/beneficial_owners.py
@@ -4,9 +4,9 @@
import httpx
-from ..types import beneficial_owner_list_params
+from ..types import beneficial_owner_list_params, beneficial_owner_update_params
from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
-from .._utils import maybe_transform
+from .._utils import maybe_transform, async_maybe_transform
from .._compat import cached_property
from .._resource import SyncAPIResource, AsyncAPIResource
from .._response import (
@@ -79,6 +79,55 @@ def retrieve(
cast_to=EntityBeneficialOwner,
)
+ def update(
+ self,
+ entity_beneficial_owner_id: str,
+ *,
+ address: beneficial_owner_update_params.Address | 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,
+ idempotency_key: str | None = None,
+ ) -> EntityBeneficialOwner:
+ """
+ Update a Beneficial Owner
+
+ Args:
+ entity_beneficial_owner_id: The identifier of the Beneficial Owner to update.
+
+ address: The individual's physical address. Mail receiving locations like PO Boxes and
+ PMB's are disallowed.
+
+ 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
+
+ idempotency_key: Specify a custom idempotency key for this request
+ """
+ if not entity_beneficial_owner_id:
+ raise ValueError(
+ f"Expected a non-empty value for `entity_beneficial_owner_id` but received {entity_beneficial_owner_id!r}"
+ )
+ return self._patch(
+ f"/entity_beneficial_owners/{entity_beneficial_owner_id}",
+ body=maybe_transform({"address": address}, beneficial_owner_update_params.BeneficialOwnerUpdateParams),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ idempotency_key=idempotency_key,
+ ),
+ cast_to=EntityBeneficialOwner,
+ )
+
def list(
self,
*,
@@ -197,6 +246,57 @@ async def retrieve(
cast_to=EntityBeneficialOwner,
)
+ async def update(
+ self,
+ entity_beneficial_owner_id: str,
+ *,
+ address: beneficial_owner_update_params.Address | 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,
+ idempotency_key: str | None = None,
+ ) -> EntityBeneficialOwner:
+ """
+ Update a Beneficial Owner
+
+ Args:
+ entity_beneficial_owner_id: The identifier of the Beneficial Owner to update.
+
+ address: The individual's physical address. Mail receiving locations like PO Boxes and
+ PMB's are disallowed.
+
+ 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
+
+ idempotency_key: Specify a custom idempotency key for this request
+ """
+ if not entity_beneficial_owner_id:
+ raise ValueError(
+ f"Expected a non-empty value for `entity_beneficial_owner_id` but received {entity_beneficial_owner_id!r}"
+ )
+ return await self._patch(
+ f"/entity_beneficial_owners/{entity_beneficial_owner_id}",
+ body=await async_maybe_transform(
+ {"address": address}, beneficial_owner_update_params.BeneficialOwnerUpdateParams
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ idempotency_key=idempotency_key,
+ ),
+ cast_to=EntityBeneficialOwner,
+ )
+
def list(
self,
*,
@@ -265,6 +365,9 @@ def __init__(self, beneficial_owners: BeneficialOwnersResource) -> None:
self.retrieve = to_raw_response_wrapper(
beneficial_owners.retrieve,
)
+ self.update = to_raw_response_wrapper(
+ beneficial_owners.update,
+ )
self.list = to_raw_response_wrapper(
beneficial_owners.list,
)
@@ -277,6 +380,9 @@ def __init__(self, beneficial_owners: AsyncBeneficialOwnersResource) -> None:
self.retrieve = async_to_raw_response_wrapper(
beneficial_owners.retrieve,
)
+ self.update = async_to_raw_response_wrapper(
+ beneficial_owners.update,
+ )
self.list = async_to_raw_response_wrapper(
beneficial_owners.list,
)
@@ -289,6 +395,9 @@ def __init__(self, beneficial_owners: BeneficialOwnersResource) -> None:
self.retrieve = to_streamed_response_wrapper(
beneficial_owners.retrieve,
)
+ self.update = to_streamed_response_wrapper(
+ beneficial_owners.update,
+ )
self.list = to_streamed_response_wrapper(
beneficial_owners.list,
)
@@ -301,6 +410,9 @@ def __init__(self, beneficial_owners: AsyncBeneficialOwnersResource) -> None:
self.retrieve = async_to_streamed_response_wrapper(
beneficial_owners.retrieve,
)
+ self.update = async_to_streamed_response_wrapper(
+ beneficial_owners.update,
+ )
self.list = async_to_streamed_response_wrapper(
beneficial_owners.list,
)
diff --git a/src/increase/types/__init__.py b/src/increase/types/__init__.py
index 8fa2797b..654a6772 100644
--- a/src/increase/types/__init__.py
+++ b/src/increase/types/__init__.py
@@ -123,6 +123,7 @@
from .intrafi_exclusion_list_params import IntrafiExclusionListParams as IntrafiExclusionListParams
from .oauth_application_list_params import OAuthApplicationListParams as OAuthApplicationListParams
from .account_transfer_create_params import AccountTransferCreateParams as AccountTransferCreateParams
+from .beneficial_owner_update_params import BeneficialOwnerUpdateParams as BeneficialOwnerUpdateParams
from .card_push_transfer_list_params import CardPushTransferListParams as CardPushTransferListParams
from .event_subscription_list_params import EventSubscriptionListParams as EventSubscriptionListParams
from .external_account_create_params import ExternalAccountCreateParams as ExternalAccountCreateParams
diff --git a/src/increase/types/beneficial_owner_update_params.py b/src/increase/types/beneficial_owner_update_params.py
new file mode 100644
index 00000000..62ebcd51
--- /dev/null
+++ b/src/increase/types/beneficial_owner_update_params.py
@@ -0,0 +1,43 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing_extensions import Required, TypedDict
+
+__all__ = ["BeneficialOwnerUpdateParams", "Address"]
+
+
+class BeneficialOwnerUpdateParams(TypedDict, total=False):
+ address: Address
+ """The individual's physical address.
+
+ Mail receiving locations like PO Boxes and PMB's are disallowed.
+ """
+
+
+class Address(TypedDict, total=False):
+ """The individual's physical address.
+
+ Mail receiving locations like PO Boxes and PMB's are disallowed.
+ """
+
+ city: Required[str]
+ """The city, district, town, or village of the address."""
+
+ country: Required[str]
+ """The two-letter ISO 3166-1 alpha-2 code for the country of the address."""
+
+ line1: Required[str]
+ """The first line of the address. This is usually the street number and street."""
+
+ line2: str
+ """The second line of the address. This might be the floor or room number."""
+
+ state: str
+ """
+ The two-letter United States Postal Service (USPS) abbreviation for the US
+ state, province, or region of the address. Required in certain countries.
+ """
+
+ zip: str
+ """The ZIP or postal code of the address. Required in certain countries."""
diff --git a/tests/api_resources/test_beneficial_owners.py b/tests/api_resources/test_beneficial_owners.py
index 3edaf063..e1c3bbcb 100644
--- a/tests/api_resources/test_beneficial_owners.py
+++ b/tests/api_resources/test_beneficial_owners.py
@@ -58,6 +58,61 @@ def test_path_params_retrieve(self, client: Increase) -> None:
"",
)
+ @parametrize
+ def test_method_update(self, client: Increase) -> None:
+ beneficial_owner = client.beneficial_owners.update(
+ entity_beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7",
+ )
+ assert_matches_type(EntityBeneficialOwner, beneficial_owner, path=["response"])
+
+ @parametrize
+ def test_method_update_with_all_params(self, client: Increase) -> None:
+ beneficial_owner = client.beneficial_owners.update(
+ entity_beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7",
+ address={
+ "city": "New York",
+ "country": "US",
+ "line1": "33 Liberty Street",
+ "line2": "Unit 2",
+ "state": "NY",
+ "zip": "10045",
+ },
+ )
+ assert_matches_type(EntityBeneficialOwner, beneficial_owner, path=["response"])
+
+ @parametrize
+ def test_raw_response_update(self, client: Increase) -> None:
+ response = client.beneficial_owners.with_raw_response.update(
+ entity_beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ beneficial_owner = response.parse()
+ assert_matches_type(EntityBeneficialOwner, beneficial_owner, path=["response"])
+
+ @parametrize
+ def test_streaming_response_update(self, client: Increase) -> None:
+ with client.beneficial_owners.with_streaming_response.update(
+ entity_beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ beneficial_owner = response.parse()
+ assert_matches_type(EntityBeneficialOwner, beneficial_owner, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_path_params_update(self, client: Increase) -> None:
+ with pytest.raises(
+ ValueError, match=r"Expected a non-empty value for `entity_beneficial_owner_id` but received ''"
+ ):
+ client.beneficial_owners.with_raw_response.update(
+ entity_beneficial_owner_id="",
+ )
+
@parametrize
def test_method_list(self, client: Increase) -> None:
beneficial_owner = client.beneficial_owners.list(
@@ -145,6 +200,61 @@ async def test_path_params_retrieve(self, async_client: AsyncIncrease) -> None:
"",
)
+ @parametrize
+ async def test_method_update(self, async_client: AsyncIncrease) -> None:
+ beneficial_owner = await async_client.beneficial_owners.update(
+ entity_beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7",
+ )
+ assert_matches_type(EntityBeneficialOwner, beneficial_owner, path=["response"])
+
+ @parametrize
+ async def test_method_update_with_all_params(self, async_client: AsyncIncrease) -> None:
+ beneficial_owner = await async_client.beneficial_owners.update(
+ entity_beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7",
+ address={
+ "city": "New York",
+ "country": "US",
+ "line1": "33 Liberty Street",
+ "line2": "Unit 2",
+ "state": "NY",
+ "zip": "10045",
+ },
+ )
+ assert_matches_type(EntityBeneficialOwner, beneficial_owner, path=["response"])
+
+ @parametrize
+ async def test_raw_response_update(self, async_client: AsyncIncrease) -> None:
+ response = await async_client.beneficial_owners.with_raw_response.update(
+ entity_beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ beneficial_owner = await response.parse()
+ assert_matches_type(EntityBeneficialOwner, beneficial_owner, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_update(self, async_client: AsyncIncrease) -> None:
+ async with async_client.beneficial_owners.with_streaming_response.update(
+ entity_beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ beneficial_owner = await response.parse()
+ assert_matches_type(EntityBeneficialOwner, beneficial_owner, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_path_params_update(self, async_client: AsyncIncrease) -> None:
+ with pytest.raises(
+ ValueError, match=r"Expected a non-empty value for `entity_beneficial_owner_id` but received ''"
+ ):
+ await async_client.beneficial_owners.with_raw_response.update(
+ entity_beneficial_owner_id="",
+ )
+
@parametrize
async def test_method_list(self, async_client: AsyncIncrease) -> None:
beneficial_owner = await async_client.beneficial_owners.list(