From 915d6cc439a9f01f796a7a6780e117fd2944ebf4 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 12 Mar 2026 01:36:47 +0000 Subject: [PATCH 1/4] feat(api): api update --- .stats.yml | 8 +- api.md | 2 - src/increase/resources/entities.py | 244 ------------------ src/increase/types/__init__.py | 6 - .../entity_archive_beneficial_owner_params.py | 15 -- ..._update_beneficial_owner_address_params.py | 49 ---- tests/api_resources/test_entities.py | 240 ----------------- 7 files changed, 4 insertions(+), 560 deletions(-) delete mode 100644 src/increase/types/entity_archive_beneficial_owner_params.py delete mode 100644 src/increase/types/entity_update_beneficial_owner_address_params.py diff --git a/.stats.yml b/.stats.yml index 2c77a37fa..3bab826d6 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 238 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-1ce680832c1cad08fe72f9d4b9df37379affbe88f539448d991039474dce6674.yml -openapi_spec_hash: 5d9c89c10f5987dc5596134d1f2c1668 -config_hash: e75db3094e90d5e48a2077b010b620f0 +configured_endpoints: 236 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-c289d5d6e979a7ac26b8475a36fb0f4fc74528eb5f5efc20848411443a6608cb.yml +openapi_spec_hash: eeda9bd525ea98d52a27642bd26c4b89 +config_hash: e73b1147c039cb3d6a2c56ae5926bca8 diff --git a/api.md b/api.md index f0601bac8..59ec1baca 100644 --- a/api.md +++ b/api.md @@ -501,9 +501,7 @@ Methods: - client.entities.update(entity_id, \*\*params) -> Entity - client.entities.list(\*\*params) -> SyncPage[Entity] - client.entities.archive(entity_id) -> Entity -- client.entities.archive_beneficial_owner(entity_id, \*\*params) -> Entity - client.entities.create_beneficial_owner(entity_id, \*\*params) -> Entity -- client.entities.update_beneficial_owner_address(entity_id, \*\*params) -> Entity # BeneficialOwners diff --git a/src/increase/resources/entities.py b/src/increase/resources/entities.py index 19c079d72..3d535c6f4 100644 --- a/src/increase/resources/entities.py +++ b/src/increase/resources/entities.py @@ -13,8 +13,6 @@ entity_create_params, entity_update_params, entity_create_beneficial_owner_params, - entity_archive_beneficial_owner_params, - entity_update_beneficial_owner_address_params, ) from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given from .._utils import maybe_transform, async_maybe_transform @@ -378,57 +376,6 @@ def archive( cast_to=Entity, ) - def archive_beneficial_owner( - self, - entity_id: str, - *, - beneficial_owner_id: str, - # 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, - ) -> Entity: - """ - Archive a beneficial owner for a corporate Entity - - Args: - entity_id: The identifier of the Entity associated with the Beneficial Owner that is being - archived. - - beneficial_owner_id: The identifying details of anyone controlling or owning 25% or more of the - corporation. - - 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_id: - raise ValueError(f"Expected a non-empty value for `entity_id` but received {entity_id!r}") - return self._post( - f"/entities/{entity_id}/archive_beneficial_owner", - body=maybe_transform( - {"beneficial_owner_id": beneficial_owner_id}, - entity_archive_beneficial_owner_params.EntityArchiveBeneficialOwnerParams, - ), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - idempotency_key=idempotency_key, - ), - cast_to=Entity, - ) - def create_beneficial_owner( self, entity_id: str, @@ -479,64 +426,6 @@ def create_beneficial_owner( cast_to=Entity, ) - def update_beneficial_owner_address( - self, - entity_id: str, - *, - address: entity_update_beneficial_owner_address_params.Address, - beneficial_owner_id: str, - # 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, - ) -> Entity: - """ - Update the address for a beneficial owner belonging to a corporate Entity - - Args: - entity_id: The identifier of the Entity associated with the Beneficial Owner whose address - is being updated. - - address: The individual's physical address. Mail receiving locations like PO Boxes and - PMB's are disallowed. - - beneficial_owner_id: The identifying details of anyone controlling or owning 25% or more of the - corporation. - - 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_id: - raise ValueError(f"Expected a non-empty value for `entity_id` but received {entity_id!r}") - return self._post( - f"/entities/{entity_id}/update_beneficial_owner_address", - body=maybe_transform( - { - "address": address, - "beneficial_owner_id": beneficial_owner_id, - }, - entity_update_beneficial_owner_address_params.EntityUpdateBeneficialOwnerAddressParams, - ), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - idempotency_key=idempotency_key, - ), - cast_to=Entity, - ) - class AsyncEntitiesResource(AsyncAPIResource): @cached_property @@ -883,57 +772,6 @@ async def archive( cast_to=Entity, ) - async def archive_beneficial_owner( - self, - entity_id: str, - *, - beneficial_owner_id: str, - # 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, - ) -> Entity: - """ - Archive a beneficial owner for a corporate Entity - - Args: - entity_id: The identifier of the Entity associated with the Beneficial Owner that is being - archived. - - beneficial_owner_id: The identifying details of anyone controlling or owning 25% or more of the - corporation. - - 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_id: - raise ValueError(f"Expected a non-empty value for `entity_id` but received {entity_id!r}") - return await self._post( - f"/entities/{entity_id}/archive_beneficial_owner", - body=await async_maybe_transform( - {"beneficial_owner_id": beneficial_owner_id}, - entity_archive_beneficial_owner_params.EntityArchiveBeneficialOwnerParams, - ), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - idempotency_key=idempotency_key, - ), - cast_to=Entity, - ) - async def create_beneficial_owner( self, entity_id: str, @@ -984,64 +822,6 @@ async def create_beneficial_owner( cast_to=Entity, ) - async def update_beneficial_owner_address( - self, - entity_id: str, - *, - address: entity_update_beneficial_owner_address_params.Address, - beneficial_owner_id: str, - # 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, - ) -> Entity: - """ - Update the address for a beneficial owner belonging to a corporate Entity - - Args: - entity_id: The identifier of the Entity associated with the Beneficial Owner whose address - is being updated. - - address: The individual's physical address. Mail receiving locations like PO Boxes and - PMB's are disallowed. - - beneficial_owner_id: The identifying details of anyone controlling or owning 25% or more of the - corporation. - - 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_id: - raise ValueError(f"Expected a non-empty value for `entity_id` but received {entity_id!r}") - return await self._post( - f"/entities/{entity_id}/update_beneficial_owner_address", - body=await async_maybe_transform( - { - "address": address, - "beneficial_owner_id": beneficial_owner_id, - }, - entity_update_beneficial_owner_address_params.EntityUpdateBeneficialOwnerAddressParams, - ), - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - idempotency_key=idempotency_key, - ), - cast_to=Entity, - ) - class EntitiesResourceWithRawResponse: def __init__(self, entities: EntitiesResource) -> None: @@ -1062,15 +842,9 @@ def __init__(self, entities: EntitiesResource) -> None: self.archive = to_raw_response_wrapper( entities.archive, ) - self.archive_beneficial_owner = to_raw_response_wrapper( - entities.archive_beneficial_owner, - ) self.create_beneficial_owner = to_raw_response_wrapper( entities.create_beneficial_owner, ) - self.update_beneficial_owner_address = to_raw_response_wrapper( - entities.update_beneficial_owner_address, - ) class AsyncEntitiesResourceWithRawResponse: @@ -1092,15 +866,9 @@ def __init__(self, entities: AsyncEntitiesResource) -> None: self.archive = async_to_raw_response_wrapper( entities.archive, ) - self.archive_beneficial_owner = async_to_raw_response_wrapper( - entities.archive_beneficial_owner, - ) self.create_beneficial_owner = async_to_raw_response_wrapper( entities.create_beneficial_owner, ) - self.update_beneficial_owner_address = async_to_raw_response_wrapper( - entities.update_beneficial_owner_address, - ) class EntitiesResourceWithStreamingResponse: @@ -1122,15 +890,9 @@ def __init__(self, entities: EntitiesResource) -> None: self.archive = to_streamed_response_wrapper( entities.archive, ) - self.archive_beneficial_owner = to_streamed_response_wrapper( - entities.archive_beneficial_owner, - ) self.create_beneficial_owner = to_streamed_response_wrapper( entities.create_beneficial_owner, ) - self.update_beneficial_owner_address = to_streamed_response_wrapper( - entities.update_beneficial_owner_address, - ) class AsyncEntitiesResourceWithStreamingResponse: @@ -1152,12 +914,6 @@ def __init__(self, entities: AsyncEntitiesResource) -> None: self.archive = async_to_streamed_response_wrapper( entities.archive, ) - self.archive_beneficial_owner = async_to_streamed_response_wrapper( - entities.archive_beneficial_owner, - ) self.create_beneficial_owner = async_to_streamed_response_wrapper( entities.create_beneficial_owner, ) - self.update_beneficial_owner_address = async_to_streamed_response_wrapper( - entities.update_beneficial_owner_address, - ) diff --git a/src/increase/types/__init__.py b/src/increase/types/__init__.py index 654a67726..8543aee38 100644 --- a/src/increase/types/__init__.py +++ b/src/increase/types/__init__.py @@ -170,9 +170,6 @@ from .entity_create_beneficial_owner_params import ( EntityCreateBeneficialOwnerParams as EntityCreateBeneficialOwnerParams, ) -from .entity_archive_beneficial_owner_params import ( - EntityArchiveBeneficialOwnerParams as EntityArchiveBeneficialOwnerParams, -) from .intrafi_account_enrollment_list_params import ( IntrafiAccountEnrollmentListParams as IntrafiAccountEnrollmentListParams, ) @@ -194,9 +191,6 @@ from .inbound_ach_transfer_transfer_return_params import ( InboundACHTransferTransferReturnParams as InboundACHTransferTransferReturnParams, ) -from .entity_update_beneficial_owner_address_params import ( - EntityUpdateBeneficialOwnerAddressParams as EntityUpdateBeneficialOwnerAddressParams, -) from .inbound_real_time_payments_transfer_list_params import ( InboundRealTimePaymentsTransferListParams as InboundRealTimePaymentsTransferListParams, ) diff --git a/src/increase/types/entity_archive_beneficial_owner_params.py b/src/increase/types/entity_archive_beneficial_owner_params.py deleted file mode 100644 index d430cf7e4..000000000 --- a/src/increase/types/entity_archive_beneficial_owner_params.py +++ /dev/null @@ -1,15 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import Required, TypedDict - -__all__ = ["EntityArchiveBeneficialOwnerParams"] - - -class EntityArchiveBeneficialOwnerParams(TypedDict, total=False): - beneficial_owner_id: Required[str] - """ - The identifying details of anyone controlling or owning 25% or more of the - corporation. - """ diff --git a/src/increase/types/entity_update_beneficial_owner_address_params.py b/src/increase/types/entity_update_beneficial_owner_address_params.py deleted file mode 100644 index 5848cc86c..000000000 --- a/src/increase/types/entity_update_beneficial_owner_address_params.py +++ /dev/null @@ -1,49 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing_extensions import Required, TypedDict - -__all__ = ["EntityUpdateBeneficialOwnerAddressParams", "Address"] - - -class EntityUpdateBeneficialOwnerAddressParams(TypedDict, total=False): - address: Required[Address] - """The individual's physical address. - - Mail receiving locations like PO Boxes and PMB's are disallowed. - """ - - beneficial_owner_id: Required[str] - """ - The identifying details of anyone controlling or owning 25% or more of the - corporation. - """ - - -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_entities.py b/tests/api_resources/test_entities.py index 96e4f3ea4..d26d50469 100644 --- a/tests/api_resources/test_entities.py +++ b/tests/api_resources/test_entities.py @@ -521,48 +521,6 @@ def test_path_params_archive(self, client: Increase) -> None: "", ) - @parametrize - def test_method_archive_beneficial_owner(self, client: Increase) -> None: - entity = client.entities.archive_beneficial_owner( - entity_id="entity_n8y8tnk2p9339ti393yi", - beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7", - ) - assert_matches_type(Entity, entity, path=["response"]) - - @parametrize - def test_raw_response_archive_beneficial_owner(self, client: Increase) -> None: - response = client.entities.with_raw_response.archive_beneficial_owner( - entity_id="entity_n8y8tnk2p9339ti393yi", - 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" - entity = response.parse() - assert_matches_type(Entity, entity, path=["response"]) - - @parametrize - def test_streaming_response_archive_beneficial_owner(self, client: Increase) -> None: - with client.entities.with_streaming_response.archive_beneficial_owner( - entity_id="entity_n8y8tnk2p9339ti393yi", - 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" - - entity = response.parse() - assert_matches_type(Entity, entity, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_path_params_archive_beneficial_owner(self, client: Increase) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `entity_id` but received ''"): - client.entities.with_raw_response.archive_beneficial_owner( - entity_id="", - beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7", - ) - @parametrize def test_method_create_beneficial_owner(self, client: Increase) -> None: entity = client.entities.create_beneficial_owner( @@ -711,84 +669,6 @@ def test_path_params_create_beneficial_owner(self, client: Increase) -> None: }, ) - @parametrize - def test_method_update_beneficial_owner_address(self, client: Increase) -> None: - entity = client.entities.update_beneficial_owner_address( - entity_id="entity_n8y8tnk2p9339ti393yi", - address={ - "city": "New York", - "country": "US", - "line1": "33 Liberty Street", - }, - beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7", - ) - assert_matches_type(Entity, entity, path=["response"]) - - @parametrize - def test_method_update_beneficial_owner_address_with_all_params(self, client: Increase) -> None: - entity = client.entities.update_beneficial_owner_address( - entity_id="entity_n8y8tnk2p9339ti393yi", - address={ - "city": "New York", - "country": "US", - "line1": "33 Liberty Street", - "line2": "Unit 2", - "state": "NY", - "zip": "10045", - }, - beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7", - ) - assert_matches_type(Entity, entity, path=["response"]) - - @parametrize - def test_raw_response_update_beneficial_owner_address(self, client: Increase) -> None: - response = client.entities.with_raw_response.update_beneficial_owner_address( - entity_id="entity_n8y8tnk2p9339ti393yi", - address={ - "city": "New York", - "country": "US", - "line1": "33 Liberty Street", - }, - 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" - entity = response.parse() - assert_matches_type(Entity, entity, path=["response"]) - - @parametrize - def test_streaming_response_update_beneficial_owner_address(self, client: Increase) -> None: - with client.entities.with_streaming_response.update_beneficial_owner_address( - entity_id="entity_n8y8tnk2p9339ti393yi", - address={ - "city": "New York", - "country": "US", - "line1": "33 Liberty Street", - }, - 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" - - entity = response.parse() - assert_matches_type(Entity, entity, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_path_params_update_beneficial_owner_address(self, client: Increase) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `entity_id` but received ''"): - client.entities.with_raw_response.update_beneficial_owner_address( - entity_id="", - address={ - "city": "New York", - "country": "US", - "line1": "33 Liberty Street", - }, - beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7", - ) - class TestAsyncEntities: parametrize = pytest.mark.parametrize( @@ -1295,48 +1175,6 @@ async def test_path_params_archive(self, async_client: AsyncIncrease) -> None: "", ) - @parametrize - async def test_method_archive_beneficial_owner(self, async_client: AsyncIncrease) -> None: - entity = await async_client.entities.archive_beneficial_owner( - entity_id="entity_n8y8tnk2p9339ti393yi", - beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7", - ) - assert_matches_type(Entity, entity, path=["response"]) - - @parametrize - async def test_raw_response_archive_beneficial_owner(self, async_client: AsyncIncrease) -> None: - response = await async_client.entities.with_raw_response.archive_beneficial_owner( - entity_id="entity_n8y8tnk2p9339ti393yi", - 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" - entity = await response.parse() - assert_matches_type(Entity, entity, path=["response"]) - - @parametrize - async def test_streaming_response_archive_beneficial_owner(self, async_client: AsyncIncrease) -> None: - async with async_client.entities.with_streaming_response.archive_beneficial_owner( - entity_id="entity_n8y8tnk2p9339ti393yi", - 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" - - entity = await response.parse() - assert_matches_type(Entity, entity, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_path_params_archive_beneficial_owner(self, async_client: AsyncIncrease) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `entity_id` but received ''"): - await async_client.entities.with_raw_response.archive_beneficial_owner( - entity_id="", - beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7", - ) - @parametrize async def test_method_create_beneficial_owner(self, async_client: AsyncIncrease) -> None: entity = await async_client.entities.create_beneficial_owner( @@ -1484,81 +1322,3 @@ async def test_path_params_create_beneficial_owner(self, async_client: AsyncIncr "prongs": ["control"], }, ) - - @parametrize - async def test_method_update_beneficial_owner_address(self, async_client: AsyncIncrease) -> None: - entity = await async_client.entities.update_beneficial_owner_address( - entity_id="entity_n8y8tnk2p9339ti393yi", - address={ - "city": "New York", - "country": "US", - "line1": "33 Liberty Street", - }, - beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7", - ) - assert_matches_type(Entity, entity, path=["response"]) - - @parametrize - async def test_method_update_beneficial_owner_address_with_all_params(self, async_client: AsyncIncrease) -> None: - entity = await async_client.entities.update_beneficial_owner_address( - entity_id="entity_n8y8tnk2p9339ti393yi", - address={ - "city": "New York", - "country": "US", - "line1": "33 Liberty Street", - "line2": "Unit 2", - "state": "NY", - "zip": "10045", - }, - beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7", - ) - assert_matches_type(Entity, entity, path=["response"]) - - @parametrize - async def test_raw_response_update_beneficial_owner_address(self, async_client: AsyncIncrease) -> None: - response = await async_client.entities.with_raw_response.update_beneficial_owner_address( - entity_id="entity_n8y8tnk2p9339ti393yi", - address={ - "city": "New York", - "country": "US", - "line1": "33 Liberty Street", - }, - 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" - entity = await response.parse() - assert_matches_type(Entity, entity, path=["response"]) - - @parametrize - async def test_streaming_response_update_beneficial_owner_address(self, async_client: AsyncIncrease) -> None: - async with async_client.entities.with_streaming_response.update_beneficial_owner_address( - entity_id="entity_n8y8tnk2p9339ti393yi", - address={ - "city": "New York", - "country": "US", - "line1": "33 Liberty Street", - }, - 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" - - entity = await response.parse() - assert_matches_type(Entity, entity, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_path_params_update_beneficial_owner_address(self, async_client: AsyncIncrease) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `entity_id` but received ''"): - await async_client.entities.with_raw_response.update_beneficial_owner_address( - entity_id="", - address={ - "city": "New York", - "country": "US", - "line1": "33 Liberty Street", - }, - beneficial_owner_id="entity_setup_beneficial_owner_submission_vgkyk7dj5eb4sfhdbkx7", - ) From 30d9bbde4016c31b8396e9b182e3911f0bc2e55d Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 12 Mar 2026 02:48:44 +0000 Subject: [PATCH 2/4] feat(api): api update --- .stats.yml | 4 ++-- src/increase/types/entity_beneficial_owner.py | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 3bab826d6..06f5ab863 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-c289d5d6e979a7ac26b8475a36fb0f4fc74528eb5f5efc20848411443a6608cb.yml -openapi_spec_hash: eeda9bd525ea98d52a27642bd26c4b89 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-5a342683774b79b3ee013a195d77a651ea053be4ec6a314e92ab08b62f62517b.yml +openapi_spec_hash: 2c87b069a3c3e1c647251016452c0b28 config_hash: e73b1147c039cb3d6a2c56ae5926bca8 diff --git a/src/increase/types/entity_beneficial_owner.py b/src/increase/types/entity_beneficial_owner.py index 86907ad5c..1fc813c18 100644 --- a/src/increase/types/entity_beneficial_owner.py +++ b/src/increase/types/entity_beneficial_owner.py @@ -88,6 +88,10 @@ class Individual(BaseModel): class EntityBeneficialOwner(BaseModel): + """ + Beneficial owners are the individuals who control or own 25% or more of a `corporation` entity. Beneficial owners are always people, and never organizations. Generally, you will need to submit between 1 and 5 beneficial owners for every `corporation` entity. You should update and archive beneficial owners for a corporation entity as their details change. + """ + id: str """The identifier of this beneficial owner.""" From 43c7e4c349ce6ffbcd9aa6e368e6fe6cc04f75c1 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 12 Mar 2026 11:44:08 +0000 Subject: [PATCH 3/4] feat(api): api update --- .stats.yml | 4 ++-- src/increase/resources/files.py | 6 +++++ src/increase/types/check_transfer.py | 18 ++++++++++---- .../types/check_transfer_create_params.py | 24 ++++++++++++++++--- src/increase/types/file.py | 3 +++ src/increase/types/file_create_params.py | 3 +++ src/increase/types/file_list_params.py | 1 + tests/api_resources/test_check_transfers.py | 10 ++++++-- 8 files changed, 57 insertions(+), 12 deletions(-) diff --git a/.stats.yml b/.stats.yml index 06f5ab863..c29f1d485 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-5a342683774b79b3ee013a195d77a651ea053be4ec6a314e92ab08b62f62517b.yml -openapi_spec_hash: 2c87b069a3c3e1c647251016452c0b28 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-4d9e8a8a1909ef7c96fe28293ab07720938ce09be84687c57e3cf95890a78205.yml +openapi_spec_hash: 4b3867a81a8429bf6ab119f910e72865 config_hash: e73b1147c039cb3d6a2c56ae5926bca8 diff --git a/src/increase/resources/files.py b/src/increase/resources/files.py index d86cd1f58..c45ef807b 100644 --- a/src/increase/resources/files.py +++ b/src/increase/resources/files.py @@ -56,6 +56,7 @@ def create( "mailed_check_image", "check_attachment", "check_voucher_image", + "check_signature", "form_ss_4", "identity_document", "loan_application_supplemental_document", @@ -102,6 +103,8 @@ def create( - `check_voucher_image` - An image to be used as the check voucher image, which is printed in the middle of the trifold area of a check. This must be a 2550x1100 pixel PNG. + - `check_signature` - A signature image to be printed on a check. This must be a + 1320x120 pixel PNG. - `form_ss_4` - IRS Form SS-4. - `identity_document` - An image of a government-issued ID. - `loan_application_supplemental_document` - A supplemental document for a Loan @@ -289,6 +292,7 @@ async def create( "mailed_check_image", "check_attachment", "check_voucher_image", + "check_signature", "form_ss_4", "identity_document", "loan_application_supplemental_document", @@ -335,6 +339,8 @@ async def create( - `check_voucher_image` - An image to be used as the check voucher image, which is printed in the middle of the trifold area of a check. This must be a 2550x1100 pixel PNG. + - `check_signature` - A signature image to be printed on a check. This must be a + 1320x120 pixel PNG. - `form_ss_4` - IRS Form SS-4. - `identity_document` - An image of a government-issued ID. - `loan_application_supplemental_document` - A supplemental document for a Loan diff --git a/src/increase/types/check_transfer.py b/src/increase/types/check_transfer.py index de76a0375..9e31266d5 100644 --- a/src/increase/types/check_transfer.py +++ b/src/increase/types/check_transfer.py @@ -21,6 +21,7 @@ "PhysicalCheckMailingAddress", "PhysicalCheckPayer", "PhysicalCheckReturnAddress", + "PhysicalCheckSignature", "PhysicalCheckTrackingUpdate", "StopPaymentRequest", "Submission", @@ -194,6 +195,16 @@ class PhysicalCheckReturnAddress(BaseModel): """The state of the check's destination.""" +class PhysicalCheckSignature(BaseModel): + """The signature that will appear on the check.""" + + image_file_id: Optional[str] = None + """The ID of a File containing a PNG of the signature.""" + + text: Optional[str] = None + """The text that will appear as the signature on the check in cursive font.""" + + class PhysicalCheckTrackingUpdate(BaseModel): category: Literal["in_transit", "processed_for_delivery", "delivered", "delivery_issue", "returned_to_sender"] """The type of tracking event. @@ -258,11 +269,8 @@ class PhysicalCheck(BaseModel): - `fedex_overnight` - FedEx Overnight """ - signature_text: Optional[str] = None - """The text that will appear as the signature on the check in cursive font. - - If blank, the check will be printed with 'No signature required'. - """ + signature: PhysicalCheckSignature + """The signature that will appear on the check.""" tracking_updates: List[PhysicalCheckTrackingUpdate] """Tracking updates relating to the physical check's delivery.""" diff --git a/src/increase/types/check_transfer_create_params.py b/src/increase/types/check_transfer_create_params.py index e812775d2..183996766 100644 --- a/src/increase/types/check_transfer_create_params.py +++ b/src/increase/types/check_transfer_create_params.py @@ -14,6 +14,7 @@ "PhysicalCheckMailingAddress", "PhysicalCheckPayer", "PhysicalCheckReturnAddress", + "PhysicalCheckSignature", "ThirdParty", ] @@ -156,6 +157,22 @@ class PhysicalCheckReturnAddress(TypedDict, total=False): """ +class PhysicalCheckSignature(TypedDict, total=False): + """The signature that will appear on the check. + + If not provided, the check will be printed with 'No Signature Required'. At most one of `text` and `image_file_id` may be provided. + """ + + image_file_id: str + """The ID of a File containing a PNG of the signature. + + This must have `purpose: check_signature` and be a 1320x120 pixel PNG. + """ + + text: str + """The text that will appear as the signature on the check in cursive font.""" + + class PhysicalCheck(TypedDict, total=False, extra_items=object): # type: ignore[call-arg] """Details relating to the physical check that Increase will print and mail. @@ -215,10 +232,11 @@ class PhysicalCheck(TypedDict, total=False, extra_items=object): # type: ignore - `fedex_overnight` - FedEx Overnight """ - signature_text: str - """The text that will appear as the signature on the check in cursive font. + signature: PhysicalCheckSignature + """The signature that will appear on the check. - If not provided, the check will be printed with 'No signature required'. + If not provided, the check will be printed with 'No Signature Required'. At most + one of `text` and `image_file_id` may be provided. """ diff --git a/src/increase/types/file.py b/src/increase/types/file.py index 45939cdbb..3cf091ae3 100644 --- a/src/increase/types/file.py +++ b/src/increase/types/file.py @@ -56,6 +56,7 @@ class File(BaseModel): "mailed_check_image", "check_attachment", "check_voucher_image", + "check_signature", "inbound_mail_item", "form_1099_int", "form_1099_misc", @@ -101,6 +102,8 @@ class File(BaseModel): - `check_voucher_image` - An image to be used as the check voucher image, which is printed in the middle of the trifold area of a check. This must be a 2550x1100 pixel PNG. + - `check_signature` - A signature image to be printed on a check. This must be a + 1320x120 pixel PNG. - `inbound_mail_item` - A scanned mail item sent to Increase. - `form_1099_int` - IRS Form 1099-INT. - `form_1099_misc` - IRS Form 1099-MISC. diff --git a/src/increase/types/file_create_params.py b/src/increase/types/file_create_params.py index a2ea75d87..069840ff4 100644 --- a/src/increase/types/file_create_params.py +++ b/src/increase/types/file_create_params.py @@ -26,6 +26,7 @@ class FileCreateParams(TypedDict, total=False): "mailed_check_image", "check_attachment", "check_voucher_image", + "check_signature", "form_ss_4", "identity_document", "loan_application_supplemental_document", @@ -54,6 +55,8 @@ class FileCreateParams(TypedDict, total=False): - `check_voucher_image` - An image to be used as the check voucher image, which is printed in the middle of the trifold area of a check. This must be a 2550x1100 pixel PNG. + - `check_signature` - A signature image to be printed on a check. This must be a + 1320x120 pixel PNG. - `form_ss_4` - IRS Form SS-4. - `identity_document` - An image of a government-issued ID. - `loan_application_supplemental_document` - A supplemental document for a Loan diff --git a/src/increase/types/file_list_params.py b/src/increase/types/file_list_params.py index 2e6f4332b..6376de639 100644 --- a/src/increase/types/file_list_params.py +++ b/src/increase/types/file_list_params.py @@ -73,6 +73,7 @@ class CreatedAt(TypedDict, total=False): "mailed_check_image", "check_attachment", "check_voucher_image", + "check_signature", "inbound_mail_item", "form_1099_int", "form_1099_misc", diff --git a/tests/api_resources/test_check_transfers.py b/tests/api_resources/test_check_transfers.py index c3d6def2c..fa0afb17e 100644 --- a/tests/api_resources/test_check_transfers.py +++ b/tests/api_resources/test_check_transfers.py @@ -66,7 +66,10 @@ def test_method_create_with_all_params(self, client: Increase) -> None: "phone": "x", }, "shipping_method": "usps_first_class", - "signature_text": "Ian Crease", + "signature": { + "image_file_id": "image_file_id", + "text": "Ian Crease", + }, }, require_approval=True, third_party={"recipient_name": "x"}, @@ -357,7 +360,10 @@ async def test_method_create_with_all_params(self, async_client: AsyncIncrease) "phone": "x", }, "shipping_method": "usps_first_class", - "signature_text": "Ian Crease", + "signature": { + "image_file_id": "image_file_id", + "text": "Ian Crease", + }, }, require_approval=True, third_party={"recipient_name": "x"}, From 0a99da9faf54b9abe3829ad4b23e0d8f454ad847 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 12 Mar 2026 11:44:31 +0000 Subject: [PATCH 4/4] release: 0.435.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 10 ++++++++++ pyproject.toml | 2 +- src/increase/_version.py | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index a59deb77e..d260e00dd 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.434.0" + ".": "0.435.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index ec099f24d..90ee33dd4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 0.435.0 (2026-03-12) + +Full Changelog: [v0.434.0...v0.435.0](https://github.com/Increase/increase-python/compare/v0.434.0...v0.435.0) + +### Features + +* **api:** api update ([43c7e4c](https://github.com/Increase/increase-python/commit/43c7e4c349ce6ffbcd9aa6e368e6fe6cc04f75c1)) +* **api:** api update ([30d9bbd](https://github.com/Increase/increase-python/commit/30d9bbde4016c31b8396e9b182e3911f0bc2e55d)) +* **api:** api update ([915d6cc](https://github.com/Increase/increase-python/commit/915d6cc439a9f01f796a7a6780e117fd2944ebf4)) + ## 0.434.0 (2026-03-12) Full Changelog: [v0.433.0...v0.434.0](https://github.com/Increase/increase-python/compare/v0.433.0...v0.434.0) diff --git a/pyproject.toml b/pyproject.toml index 1551af291..c0463bc1e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "increase" -version = "0.434.0" +version = "0.435.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 98c0006a2..c5b629559 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.434.0" # x-release-please-version +__version__ = "0.435.0" # x-release-please-version