From 2c988fdb653a808d93c27b06a2897f49fd97c8cc Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Tue, 3 Jun 2025 03:56:33 +0000
Subject: [PATCH 1/4] feat(api): api update
---
.stats.yml | 8 +-
api.md | 1 +
src/increase/resources/documents.py | 122 ++++++++++++++++++-
src/increase/types/__init__.py | 1 +
src/increase/types/document.py | 10 +-
src/increase/types/document_create_params.py | 30 +++++
tests/api_resources/test_documents.py | 86 ++++++++++++-
7 files changed, 250 insertions(+), 8 deletions(-)
create mode 100644 src/increase/types/document_create_params.py
diff --git a/.stats.yml b/.stats.yml
index 8953883b1..43c250262 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 196
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-68bbd789dfbd107f02c29239ae129a21d004842700dea205f234136ac27352eb.yml
-openapi_spec_hash: 7692e2b2d4fdeac7ff58b07c9d8fef2c
-config_hash: c4ca49f6bac6268578b0734a33a9d1fd
+configured_endpoints: 197
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-b9a610bb578b82c46d4222f4746d69c8e422f9cfad51a6d72d44c64f8746d709.yml
+openapi_spec_hash: a63cc36300445b0201442108b6cc8530
+config_hash: 85850cd9055db4b9e43bcc4aa1a2dcea
diff --git a/api.md b/api.md
index 1d07c6adb..80ca6056e 100644
--- a/api.md
+++ b/api.md
@@ -528,6 +528,7 @@ from increase.types import Document
Methods:
+- client.documents.create(\*\*params) -> Document
- client.documents.retrieve(document_id) -> Document
- client.documents.list(\*\*params) -> SyncPage[Document]
diff --git a/src/increase/resources/documents.py b/src/increase/resources/documents.py
index 298b3737b..f83829f62 100644
--- a/src/increase/resources/documents.py
+++ b/src/increase/resources/documents.py
@@ -2,11 +2,13 @@
from __future__ import annotations
+from typing_extensions import Literal
+
import httpx
-from ..types import document_list_params
+from ..types import document_list_params, document_create_params
from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven
-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 (
@@ -42,6 +44,58 @@ def with_streaming_response(self) -> DocumentsResourceWithStreamingResponse:
"""
return DocumentsResourceWithStreamingResponse(self)
+ def create(
+ self,
+ *,
+ category: Literal["account_verification_letter"],
+ account_verification_letter: document_create_params.AccountVerificationLetter | NotGiven = NOT_GIVEN,
+ # 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,
+ ) -> Document:
+ """
+ Create a Document
+
+ Args:
+ category: The type of document to create.
+
+ - `account_verification_letter` - An account verification letter.
+
+ account_verification_letter: An account verification letter.
+
+ 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
+ """
+ return self._post(
+ "/documents",
+ body=maybe_transform(
+ {
+ "category": category,
+ "account_verification_letter": account_verification_letter,
+ },
+ document_create_params.DocumentCreateParams,
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ idempotency_key=idempotency_key,
+ ),
+ cast_to=Document,
+ )
+
def retrieve(
self,
document_id: str,
@@ -161,6 +215,58 @@ def with_streaming_response(self) -> AsyncDocumentsResourceWithStreamingResponse
"""
return AsyncDocumentsResourceWithStreamingResponse(self)
+ async def create(
+ self,
+ *,
+ category: Literal["account_verification_letter"],
+ account_verification_letter: document_create_params.AccountVerificationLetter | NotGiven = NOT_GIVEN,
+ # 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,
+ ) -> Document:
+ """
+ Create a Document
+
+ Args:
+ category: The type of document to create.
+
+ - `account_verification_letter` - An account verification letter.
+
+ account_verification_letter: An account verification letter.
+
+ 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
+ """
+ return await self._post(
+ "/documents",
+ body=await async_maybe_transform(
+ {
+ "category": category,
+ "account_verification_letter": account_verification_letter,
+ },
+ document_create_params.DocumentCreateParams,
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ idempotency_key=idempotency_key,
+ ),
+ cast_to=Document,
+ )
+
async def retrieve(
self,
document_id: str,
@@ -264,6 +370,9 @@ class DocumentsResourceWithRawResponse:
def __init__(self, documents: DocumentsResource) -> None:
self._documents = documents
+ self.create = to_raw_response_wrapper(
+ documents.create,
+ )
self.retrieve = to_raw_response_wrapper(
documents.retrieve,
)
@@ -276,6 +385,9 @@ class AsyncDocumentsResourceWithRawResponse:
def __init__(self, documents: AsyncDocumentsResource) -> None:
self._documents = documents
+ self.create = async_to_raw_response_wrapper(
+ documents.create,
+ )
self.retrieve = async_to_raw_response_wrapper(
documents.retrieve,
)
@@ -288,6 +400,9 @@ class DocumentsResourceWithStreamingResponse:
def __init__(self, documents: DocumentsResource) -> None:
self._documents = documents
+ self.create = to_streamed_response_wrapper(
+ documents.create,
+ )
self.retrieve = to_streamed_response_wrapper(
documents.retrieve,
)
@@ -300,6 +415,9 @@ class AsyncDocumentsResourceWithStreamingResponse:
def __init__(self, documents: AsyncDocumentsResource) -> None:
self._documents = documents
+ self.create = async_to_streamed_response_wrapper(
+ documents.create,
+ )
self.retrieve = async_to_streamed_response_wrapper(
documents.retrieve,
)
diff --git a/src/increase/types/__init__.py b/src/increase/types/__init__.py
index c6b3cb5d8..6b67834ca 100644
--- a/src/increase/types/__init__.py
+++ b/src/increase/types/__init__.py
@@ -68,6 +68,7 @@
from .physical_card_profile import PhysicalCardProfile as PhysicalCardProfile
from .wire_drawdown_request import WireDrawdownRequest as WireDrawdownRequest
from .account_balance_params import AccountBalanceParams as AccountBalanceParams
+from .document_create_params import DocumentCreateParams as DocumentCreateParams
from .file_link_create_params import FileLinkCreateParams as FileLinkCreateParams
from .transaction_list_params import TransactionListParams as TransactionListParams
from .ach_transfer_list_params import ACHTransferListParams as ACHTransferListParams
diff --git a/src/increase/types/document.py b/src/increase/types/document.py
index 8f9d6d8cc..941ee35dc 100644
--- a/src/increase/types/document.py
+++ b/src/increase/types/document.py
@@ -6,13 +6,21 @@
from .._models import BaseModel
-__all__ = ["Document"]
+__all__ = ["Document", "AccountVerificationLetter"]
+
+
+class AccountVerificationLetter(BaseModel):
+ account_number_id: str
+ """The identifier of the Account Number the document was generated for."""
class Document(BaseModel):
id: str
"""The Document identifier."""
+ account_verification_letter: Optional[AccountVerificationLetter] = None
+ """Properties of an account verification letter document."""
+
category: Literal[
"form_1099_int",
"form_1099_misc",
diff --git a/src/increase/types/document_create_params.py b/src/increase/types/document_create_params.py
new file mode 100644
index 000000000..0470cb7fb
--- /dev/null
+++ b/src/increase/types/document_create_params.py
@@ -0,0 +1,30 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing import Union
+from datetime import date
+from typing_extensions import Literal, Required, Annotated, TypedDict
+
+from .._utils import PropertyInfo
+
+__all__ = ["DocumentCreateParams", "AccountVerificationLetter"]
+
+
+class DocumentCreateParams(TypedDict, total=False):
+ category: Required[Literal["account_verification_letter"]]
+ """The type of document to create.
+
+ - `account_verification_letter` - An account verification letter.
+ """
+
+ account_verification_letter: AccountVerificationLetter
+ """An account verification letter."""
+
+
+class AccountVerificationLetter(TypedDict, total=False):
+ account_number_id: Required[str]
+ """The Account Number the bank letter should be generated for."""
+
+ balance_date: Annotated[Union[str, date], PropertyInfo(format="iso8601")]
+ """If provided, the letter will include the Account's balance as of the date."""
diff --git a/tests/api_resources/test_documents.py b/tests/api_resources/test_documents.py
index 2133f0ac3..078706b41 100644
--- a/tests/api_resources/test_documents.py
+++ b/tests/api_resources/test_documents.py
@@ -10,7 +10,7 @@
from increase import Increase, AsyncIncrease
from tests.utils import assert_matches_type
from increase.types import Document
-from increase._utils import parse_datetime
+from increase._utils import parse_date, parse_datetime
from increase.pagination import SyncPage, AsyncPage
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -19,6 +19,48 @@
class TestDocuments:
parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
+ @parametrize
+ def test_method_create(self, client: Increase) -> None:
+ document = client.documents.create(
+ category="account_verification_letter",
+ )
+ assert_matches_type(Document, document, path=["response"])
+
+ @parametrize
+ def test_method_create_with_all_params(self, client: Increase) -> None:
+ document = client.documents.create(
+ category="account_verification_letter",
+ account_verification_letter={
+ "account_number_id": "account_number_v18nkfqm6afpsrvy82b2",
+ "balance_date": parse_date("2024-12-31"),
+ },
+ )
+ assert_matches_type(Document, document, path=["response"])
+
+ @parametrize
+ def test_raw_response_create(self, client: Increase) -> None:
+ response = client.documents.with_raw_response.create(
+ category="account_verification_letter",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ document = response.parse()
+ assert_matches_type(Document, document, path=["response"])
+
+ @parametrize
+ def test_streaming_response_create(self, client: Increase) -> None:
+ with client.documents.with_streaming_response.create(
+ category="account_verification_letter",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ document = response.parse()
+ assert_matches_type(Document, document, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
@parametrize
def test_method_retrieve(self, client: Increase) -> None:
document = client.documents.retrieve(
@@ -103,6 +145,48 @@ def test_streaming_response_list(self, client: Increase) -> None:
class TestAsyncDocuments:
parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"])
+ @parametrize
+ async def test_method_create(self, async_client: AsyncIncrease) -> None:
+ document = await async_client.documents.create(
+ category="account_verification_letter",
+ )
+ assert_matches_type(Document, document, path=["response"])
+
+ @parametrize
+ async def test_method_create_with_all_params(self, async_client: AsyncIncrease) -> None:
+ document = await async_client.documents.create(
+ category="account_verification_letter",
+ account_verification_letter={
+ "account_number_id": "account_number_v18nkfqm6afpsrvy82b2",
+ "balance_date": parse_date("2024-12-31"),
+ },
+ )
+ assert_matches_type(Document, document, path=["response"])
+
+ @parametrize
+ async def test_raw_response_create(self, async_client: AsyncIncrease) -> None:
+ response = await async_client.documents.with_raw_response.create(
+ category="account_verification_letter",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ document = await response.parse()
+ assert_matches_type(Document, document, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_create(self, async_client: AsyncIncrease) -> None:
+ async with async_client.documents.with_streaming_response.create(
+ category="account_verification_letter",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ document = await response.parse()
+ assert_matches_type(Document, document, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
@parametrize
async def test_method_retrieve(self, async_client: AsyncIncrease) -> None:
document = await async_client.documents.retrieve(
From 12b4c34895e61a3bff66e6f5e17c128751118a61 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Tue, 3 Jun 2025 20:06:19 +0000
Subject: [PATCH 2/4] codegen metadata
---
.stats.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 43c250262..94d59c04b 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 197
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-b9a610bb578b82c46d4222f4746d69c8e422f9cfad51a6d72d44c64f8746d709.yml
-openapi_spec_hash: a63cc36300445b0201442108b6cc8530
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-644c7608acea9983d97a58a2b89d0f3f6d641c6dba30270e6ed03ea4f9942a90.yml
+openapi_spec_hash: a024db2f41e8a801204741e95c4e57fd
config_hash: 85850cd9055db4b9e43bcc4aa1a2dcea
From cb4c03bee372c8d5584f1b151c4d1435763af20a Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Tue, 3 Jun 2025 20:20:43 +0000
Subject: [PATCH 3/4] feat(api): api update
---
.stats.yml | 4 ++--
src/increase/types/external_account.py | 8 --------
2 files changed, 2 insertions(+), 10 deletions(-)
diff --git a/.stats.yml b/.stats.yml
index 94d59c04b..b6b5d3758 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 197
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-644c7608acea9983d97a58a2b89d0f3f6d641c6dba30270e6ed03ea4f9942a90.yml
-openapi_spec_hash: a024db2f41e8a801204741e95c4e57fd
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-075bbbfbc34a6e34519bb157c21f280d0ba941ce2ddf834eafbbde3dbd3b52b9.yml
+openapi_spec_hash: e0f7bef65d2cb1f3332b969254dee00a
config_hash: 85850cd9055db4b9e43bcc4aa1a2dcea
diff --git a/src/increase/types/external_account.py b/src/increase/types/external_account.py
index d263f8e1c..1e59efa5b 100644
--- a/src/increase/types/external_account.py
+++ b/src/increase/types/external_account.py
@@ -65,11 +65,3 @@ class ExternalAccount(BaseModel):
For this resource it will always be `external_account`.
"""
-
- verification_status: Literal["unverified", "pending", "verified"]
- """If you have verified ownership of the External Account.
-
- - `unverified` - The External Account has not been verified.
- - `pending` - The External Account is in the process of being verified.
- - `verified` - The External Account is verified.
- """
From ba3c84936c85635508bf5b1f730ff58b556301fc Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Tue, 3 Jun 2025 20:21:04 +0000
Subject: [PATCH 4/4] release: 0.247.0
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 9 +++++++++
pyproject.toml | 2 +-
src/increase/_version.py | 2 +-
4 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index be2cee26e..098de4c09 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.246.0"
+ ".": "0.247.0"
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 10b58d6d1..3d1a270c5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,14 @@
# Changelog
+## 0.247.0 (2025-06-03)
+
+Full Changelog: [v0.246.0...v0.247.0](https://github.com/Increase/increase-python/compare/v0.246.0...v0.247.0)
+
+### Features
+
+* **api:** api update ([cb4c03b](https://github.com/Increase/increase-python/commit/cb4c03bee372c8d5584f1b151c4d1435763af20a))
+* **api:** api update ([2c988fd](https://github.com/Increase/increase-python/commit/2c988fdb653a808d93c27b06a2897f49fd97c8cc))
+
## 0.246.0 (2025-06-02)
Full Changelog: [v0.245.0...v0.246.0](https://github.com/Increase/increase-python/compare/v0.245.0...v0.246.0)
diff --git a/pyproject.toml b/pyproject.toml
index a449abb2c..2840a695e 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "increase"
-version = "0.246.0"
+version = "0.247.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 b4725c512..88b5f51c8 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.246.0" # x-release-please-version
+__version__ = "0.247.0" # x-release-please-version