diff --git a/.stats.yml b/.stats.yml
index 97e2fbfc3..4bb27f8b2 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1 +1 @@
-configured_endpoints: 131
+configured_endpoints: 133
diff --git a/api.md b/api.md
index a78c2d087..7c74f39ea 100644
--- a/api.md
+++ b/api.md
@@ -388,9 +388,16 @@ Methods:
## SupplementalDocuments
+Types:
+
+```python
+from increase.types.entities import SupplementalDocument
+```
+
Methods:
- client.entities.supplemental_documents.create(entity_id, \*\*params) -> Entity
+- client.entities.supplemental_documents.list(\*\*params) -> SyncPage[SupplementalDocument]
# InboundWireDrawdownRequests
@@ -599,6 +606,12 @@ Methods:
- client.simulations.check*deposits.return*(check_deposit_id) -> CheckDeposit
- client.simulations.check_deposits.submit(check_deposit_id) -> CheckDeposit
+## Programs
+
+Methods:
+
+- client.simulations.programs.create(\*\*params) -> Program
+
## InboundWireDrawdownRequests
Methods:
diff --git a/src/increase/resources/accounts.py b/src/increase/resources/accounts.py
index 154d68dc4..acfc64a76 100644
--- a/src/increase/resources/accounts.py
+++ b/src/increase/resources/accounts.py
@@ -46,7 +46,8 @@ def create(
informational_entity_id: The identifier of an Entity that, while not owning the Account, is associated
with its activity. Its relationship to your group must be `informational`.
- program_id: The identifier for the Program that this Account falls under.
+ program_id: The identifier for the Program that this Account falls under. Required if you
+ operate more than one Program.
extra_headers: Send extra headers
@@ -162,6 +163,7 @@ def list(
created_at: account_list_params.CreatedAt | NotGiven = NOT_GIVEN,
cursor: str | NotGiven = NOT_GIVEN,
entity_id: str | NotGiven = NOT_GIVEN,
+ informational_entity_id: str | NotGiven = NOT_GIVEN,
limit: int | NotGiven = NOT_GIVEN,
status: Literal["open", "closed"] | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
@@ -179,6 +181,8 @@ def list(
entity_id: Filter Accounts for those belonging to the specified Entity.
+ informational_entity_id: Filter Accounts for those belonging to the specified Entity as informational.
+
limit: Limit the size of the list that is returned. The default (and maximum) is 100
objects.
@@ -205,6 +209,7 @@ def list(
"created_at": created_at,
"cursor": cursor,
"entity_id": entity_id,
+ "informational_entity_id": informational_entity_id,
"limit": limit,
"status": status,
},
@@ -282,7 +287,8 @@ async def create(
informational_entity_id: The identifier of an Entity that, while not owning the Account, is associated
with its activity. Its relationship to your group must be `informational`.
- program_id: The identifier for the Program that this Account falls under.
+ program_id: The identifier for the Program that this Account falls under. Required if you
+ operate more than one Program.
extra_headers: Send extra headers
@@ -398,6 +404,7 @@ def list(
created_at: account_list_params.CreatedAt | NotGiven = NOT_GIVEN,
cursor: str | NotGiven = NOT_GIVEN,
entity_id: str | NotGiven = NOT_GIVEN,
+ informational_entity_id: str | NotGiven = NOT_GIVEN,
limit: int | NotGiven = NOT_GIVEN,
status: Literal["open", "closed"] | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
@@ -415,6 +422,8 @@ def list(
entity_id: Filter Accounts for those belonging to the specified Entity.
+ informational_entity_id: Filter Accounts for those belonging to the specified Entity as informational.
+
limit: Limit the size of the list that is returned. The default (and maximum) is 100
objects.
@@ -441,6 +450,7 @@ def list(
"created_at": created_at,
"cursor": cursor,
"entity_id": entity_id,
+ "informational_entity_id": informational_entity_id,
"limit": limit,
"status": status,
},
diff --git a/src/increase/resources/entities/supplemental_documents.py b/src/increase/resources/entities/supplemental_documents.py
index 542f67d74..866746f45 100644
--- a/src/increase/resources/entities/supplemental_documents.py
+++ b/src/increase/resources/entities/supplemental_documents.py
@@ -6,8 +6,13 @@
from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from ..._utils import maybe_transform
from ..._resource import SyncAPIResource, AsyncAPIResource
-from ..._base_client import make_request_options
-from ...types.entities import supplemental_document_create_params
+from ...pagination import SyncPage, AsyncPage
+from ..._base_client import AsyncPaginator, make_request_options
+from ...types.entities import (
+ SupplementalDocument,
+ supplemental_document_list_params,
+ supplemental_document_create_params,
+)
__all__ = ["SupplementalDocuments", "AsyncSupplementalDocuments"]
@@ -59,6 +64,58 @@ def create(
cast_to=Entity,
)
+ def list(
+ self,
+ *,
+ entity_id: str,
+ cursor: str | NotGiven = NOT_GIVEN,
+ limit: int | 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 | None | NotGiven = NOT_GIVEN,
+ ) -> SyncPage[SupplementalDocument]:
+ """
+ List Entity Supplemental Document Submissionss
+
+ Args:
+ entity_id: The identifier of the Entity to list supplemental documents for.
+
+ cursor: Return the page of entries after this one.
+
+ limit: Limit the size of the list that is returned. The default (and maximum) is 100
+ objects.
+
+ 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._get_api_list(
+ "/entity_supplemental_documents",
+ page=SyncPage[SupplementalDocument],
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ query=maybe_transform(
+ {
+ "entity_id": entity_id,
+ "cursor": cursor,
+ "limit": limit,
+ },
+ supplemental_document_list_params.SupplementalDocumentListParams,
+ ),
+ ),
+ model=SupplementalDocument,
+ )
+
class AsyncSupplementalDocuments(AsyncAPIResource):
async def create(
@@ -106,3 +163,55 @@ async def create(
),
cast_to=Entity,
)
+
+ def list(
+ self,
+ *,
+ entity_id: str,
+ cursor: str | NotGiven = NOT_GIVEN,
+ limit: int | 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 | None | NotGiven = NOT_GIVEN,
+ ) -> AsyncPaginator[SupplementalDocument, AsyncPage[SupplementalDocument]]:
+ """
+ List Entity Supplemental Document Submissionss
+
+ Args:
+ entity_id: The identifier of the Entity to list supplemental documents for.
+
+ cursor: Return the page of entries after this one.
+
+ limit: Limit the size of the list that is returned. The default (and maximum) is 100
+ objects.
+
+ 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._get_api_list(
+ "/entity_supplemental_documents",
+ page=AsyncPage[SupplementalDocument],
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ query=maybe_transform(
+ {
+ "entity_id": entity_id,
+ "cursor": cursor,
+ "limit": limit,
+ },
+ supplemental_document_list_params.SupplementalDocumentListParams,
+ ),
+ ),
+ model=SupplementalDocument,
+ )
diff --git a/src/increase/resources/simulations/__init__.py b/src/increase/resources/simulations/__init__.py
index 31b2fc52f..b033c6f90 100644
--- a/src/increase/resources/simulations/__init__.py
+++ b/src/increase/resources/simulations/__init__.py
@@ -1,6 +1,7 @@
# File generated from our OpenAPI spec by Stainless.
from .cards import Cards, AsyncCards
+from .programs import Programs, AsyncPrograms
from .documents import Documents, AsyncDocuments
from .simulations import Simulations, AsyncSimulations
from .card_refunds import CardRefunds, AsyncCardRefunds
@@ -44,6 +45,8 @@
"AsyncDigitalWalletTokenRequests",
"CheckDeposits",
"AsyncCheckDeposits",
+ "Programs",
+ "AsyncPrograms",
"InboundWireDrawdownRequests",
"AsyncInboundWireDrawdownRequests",
"InterestPayments",
diff --git a/src/increase/resources/simulations/ach_transfers.py b/src/increase/resources/simulations/ach_transfers.py
index 90902c83c..b38bf244d 100644
--- a/src/increase/resources/simulations/ach_transfers.py
+++ b/src/increase/resources/simulations/ach_transfers.py
@@ -121,10 +121,58 @@ def return_(
"file_record_edit_criteria",
"enr_invalid_individual_name",
"returned_per_odfi_request",
- "addenda_error",
"limited_participation_dfi",
"incorrectly_coded_outbound_international_payment",
"other",
+ "account_sold_to_another_dfi",
+ "addenda_error",
+ "beneficiary_or_account_holder_deceased",
+ "check_truncation_entry_return",
+ "corrected_return",
+ "duplicate_entry",
+ "duplicate_return",
+ "enr_duplicate_enrollment",
+ "enr_invalid_dfi_account_number",
+ "enr_invalid_individual_id_number",
+ "enr_invalid_representative_payee_indicator",
+ "enr_invalid_transaction_code",
+ "enr_return_of_enr_entry",
+ "enr_routing_number_check_digit_error",
+ "entry_not_processed_by_gateway",
+ "field_error",
+ "foreign_receiving_dfi_unable_to_settle",
+ "iat_entry_coding_error",
+ "improper_effective_entry_date",
+ "improper_source_document_source_document_presented",
+ "invalid_company_id",
+ "invalid_foreign_receiving_dfi_identification",
+ "invalid_individual_id_number",
+ "item_and_rck_entry_presented_for_payment",
+ "item_related_to_rck_entry_is_ineligible",
+ "mandatory_field_error",
+ "misrouted_dishonored_return",
+ "misrouted_return",
+ "no_errors_found",
+ "non_acceptance_of_r62_dishonored_return",
+ "non_participant_in_iat_program",
+ "permissible_return_entry",
+ "permissible_return_entry_not_accepted",
+ "rdfi_non_settlement",
+ "rdfi_participant_in_check_truncation_program",
+ "representative_payee_deceased_or_unable_to_continue_in_that_capacity",
+ "return_not_a_duplicate",
+ "return_of_erroneous_or_reversing_debit",
+ "return_of_improper_credit_entry",
+ "return_of_improper_debit_entry",
+ "return_of_xck_entry",
+ "source_document_presented_for_payment",
+ "state_law_affecting_rck_acceptance",
+ "stop_payment_on_item_related_to_rck_entry",
+ "stop_payment_on_source_document",
+ "timely_original_return",
+ "trace_number_error",
+ "untimely_dishonored_return",
+ "untimely_return",
]
| NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
@@ -318,10 +366,58 @@ async def return_(
"file_record_edit_criteria",
"enr_invalid_individual_name",
"returned_per_odfi_request",
- "addenda_error",
"limited_participation_dfi",
"incorrectly_coded_outbound_international_payment",
"other",
+ "account_sold_to_another_dfi",
+ "addenda_error",
+ "beneficiary_or_account_holder_deceased",
+ "check_truncation_entry_return",
+ "corrected_return",
+ "duplicate_entry",
+ "duplicate_return",
+ "enr_duplicate_enrollment",
+ "enr_invalid_dfi_account_number",
+ "enr_invalid_individual_id_number",
+ "enr_invalid_representative_payee_indicator",
+ "enr_invalid_transaction_code",
+ "enr_return_of_enr_entry",
+ "enr_routing_number_check_digit_error",
+ "entry_not_processed_by_gateway",
+ "field_error",
+ "foreign_receiving_dfi_unable_to_settle",
+ "iat_entry_coding_error",
+ "improper_effective_entry_date",
+ "improper_source_document_source_document_presented",
+ "invalid_company_id",
+ "invalid_foreign_receiving_dfi_identification",
+ "invalid_individual_id_number",
+ "item_and_rck_entry_presented_for_payment",
+ "item_related_to_rck_entry_is_ineligible",
+ "mandatory_field_error",
+ "misrouted_dishonored_return",
+ "misrouted_return",
+ "no_errors_found",
+ "non_acceptance_of_r62_dishonored_return",
+ "non_participant_in_iat_program",
+ "permissible_return_entry",
+ "permissible_return_entry_not_accepted",
+ "rdfi_non_settlement",
+ "rdfi_participant_in_check_truncation_program",
+ "representative_payee_deceased_or_unable_to_continue_in_that_capacity",
+ "return_not_a_duplicate",
+ "return_of_erroneous_or_reversing_debit",
+ "return_of_improper_credit_entry",
+ "return_of_improper_debit_entry",
+ "return_of_xck_entry",
+ "source_document_presented_for_payment",
+ "state_law_affecting_rck_acceptance",
+ "stop_payment_on_item_related_to_rck_entry",
+ "stop_payment_on_source_document",
+ "timely_original_return",
+ "trace_number_error",
+ "untimely_dishonored_return",
+ "untimely_return",
]
| NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
diff --git a/src/increase/resources/simulations/programs.py b/src/increase/resources/simulations/programs.py
new file mode 100644
index 000000000..8f606de76
--- /dev/null
+++ b/src/increase/resources/simulations/programs.py
@@ -0,0 +1,104 @@
+# File generated from our OpenAPI spec by Stainless.
+
+from __future__ import annotations
+
+from ...types import Program
+from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
+from ..._utils import maybe_transform
+from ..._resource import SyncAPIResource, AsyncAPIResource
+from ..._base_client import make_request_options
+from ...types.simulations import program_create_params
+
+__all__ = ["Programs", "AsyncPrograms"]
+
+
+class Programs(SyncAPIResource):
+ def create(
+ self,
+ *,
+ name: 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 | None | NotGiven = NOT_GIVEN,
+ idempotency_key: str | None = None,
+ ) -> Program:
+ """Simulates a program being created in your group.
+
+ By default, your group has one
+ program called Commercial Banking. Note that when your group operates more than
+ one program, `program_id` is a required field when creating accounts.
+
+ Args:
+ name: The name of the program being added.
+
+ 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(
+ "/simulations/programs",
+ body=maybe_transform({"name": name}, program_create_params.ProgramCreateParams),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ idempotency_key=idempotency_key,
+ ),
+ cast_to=Program,
+ )
+
+
+class AsyncPrograms(AsyncAPIResource):
+ async def create(
+ self,
+ *,
+ name: 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 | None | NotGiven = NOT_GIVEN,
+ idempotency_key: str | None = None,
+ ) -> Program:
+ """Simulates a program being created in your group.
+
+ By default, your group has one
+ program called Commercial Banking. Note that when your group operates more than
+ one program, `program_id` is a required field when creating accounts.
+
+ Args:
+ name: The name of the program being added.
+
+ 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(
+ "/simulations/programs",
+ body=maybe_transform({"name": name}, program_create_params.ProgramCreateParams),
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ idempotency_key=idempotency_key,
+ ),
+ cast_to=Program,
+ )
diff --git a/src/increase/resources/simulations/simulations.py b/src/increase/resources/simulations/simulations.py
index 94c213ce3..3fdefe948 100644
--- a/src/increase/resources/simulations/simulations.py
+++ b/src/increase/resources/simulations/simulations.py
@@ -5,6 +5,7 @@
from typing import TYPE_CHECKING
from .cards import Cards, AsyncCards
+from .programs import Programs, AsyncPrograms
from .documents import Documents, AsyncDocuments
from ..._resource import SyncAPIResource, AsyncAPIResource
from .card_refunds import CardRefunds, AsyncCardRefunds
@@ -45,6 +46,7 @@ class Simulations(SyncAPIResource):
documents: Documents
digital_wallet_token_requests: DigitalWalletTokenRequests
check_deposits: CheckDeposits
+ programs: Programs
inbound_wire_drawdown_requests: InboundWireDrawdownRequests
interest_payments: InterestPayments
wire_transfers: WireTransfers
@@ -62,6 +64,7 @@ def __init__(self, client: Increase) -> None:
self.documents = Documents(client)
self.digital_wallet_token_requests = DigitalWalletTokenRequests(client)
self.check_deposits = CheckDeposits(client)
+ self.programs = Programs(client)
self.inbound_wire_drawdown_requests = InboundWireDrawdownRequests(client)
self.interest_payments = InterestPayments(client)
self.wire_transfers = WireTransfers(client)
@@ -79,6 +82,7 @@ class AsyncSimulations(AsyncAPIResource):
documents: AsyncDocuments
digital_wallet_token_requests: AsyncDigitalWalletTokenRequests
check_deposits: AsyncCheckDeposits
+ programs: AsyncPrograms
inbound_wire_drawdown_requests: AsyncInboundWireDrawdownRequests
interest_payments: AsyncInterestPayments
wire_transfers: AsyncWireTransfers
@@ -96,6 +100,7 @@ def __init__(self, client: AsyncIncrease) -> None:
self.documents = AsyncDocuments(client)
self.digital_wallet_token_requests = AsyncDigitalWalletTokenRequests(client)
self.check_deposits = AsyncCheckDeposits(client)
+ self.programs = AsyncPrograms(client)
self.inbound_wire_drawdown_requests = AsyncInboundWireDrawdownRequests(client)
self.interest_payments = AsyncInterestPayments(client)
self.wire_transfers = AsyncWireTransfers(client)
diff --git a/src/increase/types/account.py b/src/increase/types/account.py
index 1ff104996..a12b2b93c 100644
--- a/src/increase/types/account.py
+++ b/src/increase/types/account.py
@@ -46,6 +46,13 @@ class Account(BaseModel):
interest was accrued.
"""
+ interest_rate: str
+ """
+ The Interest Rate currently being earned on the account, as a string containing
+ a decimal number. For example, a 1% interest rate would be represented as
+ "0.01".
+ """
+
name: str
"""The name you choose for the Account."""
diff --git a/src/increase/types/account_create_params.py b/src/increase/types/account_create_params.py
index ed9fbcaed..0f9d3edd1 100644
--- a/src/increase/types/account_create_params.py
+++ b/src/increase/types/account_create_params.py
@@ -21,4 +21,7 @@ class AccountCreateParams(TypedDict, total=False):
"""
program_id: str
- """The identifier for the Program that this Account falls under."""
+ """The identifier for the Program that this Account falls under.
+
+ Required if you operate more than one Program.
+ """
diff --git a/src/increase/types/account_list_params.py b/src/increase/types/account_list_params.py
index 3d022f4b1..fec74ac9f 100644
--- a/src/increase/types/account_list_params.py
+++ b/src/increase/types/account_list_params.py
@@ -20,6 +20,9 @@ class AccountListParams(TypedDict, total=False):
entity_id: str
"""Filter Accounts for those belonging to the specified Entity."""
+ informational_entity_id: str
+ """Filter Accounts for those belonging to the specified Entity as informational."""
+
limit: int
"""Limit the size of the list that is returned.
diff --git a/src/increase/types/ach_transfer.py b/src/increase/types/ach_transfer.py
index 7158ad16d..bac1c84d7 100644
--- a/src/increase/types/ach_transfer.py
+++ b/src/increase/types/ach_transfer.py
@@ -60,6 +60,9 @@ class Return(BaseModel):
the transfer was created.
"""
+ raw_return_reason_code: str
+ """The three character ACH return code, in the range R01 to R85."""
+
return_reason_code: Literal[
"insufficient_fund",
"no_account",
@@ -80,10 +83,58 @@ class Return(BaseModel):
"file_record_edit_criteria",
"enr_invalid_individual_name",
"returned_per_odfi_request",
- "addenda_error",
"limited_participation_dfi",
"incorrectly_coded_outbound_international_payment",
"other",
+ "account_sold_to_another_dfi",
+ "addenda_error",
+ "beneficiary_or_account_holder_deceased",
+ "check_truncation_entry_return",
+ "corrected_return",
+ "duplicate_entry",
+ "duplicate_return",
+ "enr_duplicate_enrollment",
+ "enr_invalid_dfi_account_number",
+ "enr_invalid_individual_id_number",
+ "enr_invalid_representative_payee_indicator",
+ "enr_invalid_transaction_code",
+ "enr_return_of_enr_entry",
+ "enr_routing_number_check_digit_error",
+ "entry_not_processed_by_gateway",
+ "field_error",
+ "foreign_receiving_dfi_unable_to_settle",
+ "iat_entry_coding_error",
+ "improper_effective_entry_date",
+ "improper_source_document_source_document_presented",
+ "invalid_company_id",
+ "invalid_foreign_receiving_dfi_identification",
+ "invalid_individual_id_number",
+ "item_and_rck_entry_presented_for_payment",
+ "item_related_to_rck_entry_is_ineligible",
+ "mandatory_field_error",
+ "misrouted_dishonored_return",
+ "misrouted_return",
+ "no_errors_found",
+ "non_acceptance_of_r62_dishonored_return",
+ "non_participant_in_iat_program",
+ "permissible_return_entry",
+ "permissible_return_entry_not_accepted",
+ "rdfi_non_settlement",
+ "rdfi_participant_in_check_truncation_program",
+ "representative_payee_deceased_or_unable_to_continue_in_that_capacity",
+ "return_not_a_duplicate",
+ "return_of_erroneous_or_reversing_debit",
+ "return_of_improper_credit_entry",
+ "return_of_improper_debit_entry",
+ "return_of_xck_entry",
+ "source_document_presented_for_payment",
+ "state_law_affecting_rck_acceptance",
+ "stop_payment_on_item_related_to_rck_entry",
+ "stop_payment_on_source_document",
+ "timely_original_return",
+ "trace_number_error",
+ "untimely_dishonored_return",
+ "untimely_return",
]
"""Why the ACH Transfer was returned."""
diff --git a/src/increase/types/declined_transaction.py b/src/increase/types/declined_transaction.py
index db7c60051..ace8ed443 100644
--- a/src/increase/types/declined_transaction.py
+++ b/src/increase/types/declined_transaction.py
@@ -181,6 +181,7 @@ class SourceCheckDecline(BaseModel):
"group_locked",
"insufficient_funds",
"unable_to_locate_account",
+ "not_our_item",
"unable_to_process",
"refer_to_image",
"stop_payment_requested",
diff --git a/src/increase/types/entities/__init__.py b/src/increase/types/entities/__init__.py
index 38c593958..c7bf63561 100644
--- a/src/increase/types/entities/__init__.py
+++ b/src/increase/types/entities/__init__.py
@@ -2,6 +2,10 @@
from __future__ import annotations
+from .supplemental_document import SupplementalDocument as SupplementalDocument
+from .supplemental_document_list_params import (
+ SupplementalDocumentListParams as SupplementalDocumentListParams,
+)
from .supplemental_document_create_params import (
SupplementalDocumentCreateParams as SupplementalDocumentCreateParams,
)
diff --git a/src/increase/types/entities/supplemental_document.py b/src/increase/types/entities/supplemental_document.py
new file mode 100644
index 000000000..e2ea94ffa
--- /dev/null
+++ b/src/increase/types/entities/supplemental_document.py
@@ -0,0 +1,25 @@
+# File generated from our OpenAPI spec by Stainless.
+
+from datetime import datetime
+from typing_extensions import Literal
+
+from ..._models import BaseModel
+
+__all__ = ["SupplementalDocument"]
+
+
+class SupplementalDocument(BaseModel):
+ created_at: datetime
+ """
+ The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time at which the
+ Supplemental Document was created.
+ """
+
+ file_id: str
+ """The File containing the document."""
+
+ type: Literal["entity_supplemental_document"]
+ """A constant representing the object's type.
+
+ For this resource it will always be `entity_supplemental_document`.
+ """
diff --git a/src/increase/types/entities/supplemental_document_list_params.py b/src/increase/types/entities/supplemental_document_list_params.py
new file mode 100644
index 000000000..a910f20aa
--- /dev/null
+++ b/src/increase/types/entities/supplemental_document_list_params.py
@@ -0,0 +1,21 @@
+# File generated from our OpenAPI spec by Stainless.
+
+from __future__ import annotations
+
+from typing_extensions import Required, TypedDict
+
+__all__ = ["SupplementalDocumentListParams"]
+
+
+class SupplementalDocumentListParams(TypedDict, total=False):
+ entity_id: Required[str]
+ """The identifier of the Entity to list supplemental documents for."""
+
+ cursor: str
+ """Return the page of entries after this one."""
+
+ limit: int
+ """Limit the size of the list that is returned.
+
+ The default (and maximum) is 100 objects.
+ """
diff --git a/src/increase/types/entity.py b/src/increase/types/entity.py
index f51fbbf9b..91d4917b1 100644
--- a/src/increase/types/entity.py
+++ b/src/increase/types/entity.py
@@ -1,7 +1,7 @@
# File generated from our OpenAPI spec by Stainless.
from typing import List, Optional
-from datetime import date
+from datetime import date, datetime
from typing_extensions import Literal
from .._models import BaseModel
@@ -395,9 +395,21 @@ class Trust(BaseModel):
class SupplementalDocument(BaseModel):
+ created_at: datetime
+ """
+ The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time at which the
+ Supplemental Document was created.
+ """
+
file_id: str
"""The File containing the document."""
+ type: Literal["entity_supplemental_document"]
+ """A constant representing the object's type.
+
+ For this resource it will always be `entity_supplemental_document`.
+ """
+
class Entity(BaseModel):
corporation: Optional[Corporation]
@@ -431,7 +443,12 @@ class Entity(BaseModel):
"""The entity's legal structure."""
supplemental_documents: List[SupplementalDocument]
- """Additional documentation associated with the entity."""
+ """Additional documentation associated with the entity.
+
+ This is limited to the first 10 documents for an entity. If an entity has more
+ than 10 documents, use the GET /entity_supplemental_documents list endpoint to
+ retrieve them.
+ """
trust: Optional[Trust]
"""Details of the trust entity.
diff --git a/src/increase/types/simulations/__init__.py b/src/increase/types/simulations/__init__.py
index 203bb4fb7..f55dfe43c 100644
--- a/src/increase/types/simulations/__init__.py
+++ b/src/increase/types/simulations/__init__.py
@@ -3,6 +3,7 @@
from __future__ import annotations
from .card_authorize_params import CardAuthorizeParams as CardAuthorizeParams
+from .program_create_params import ProgramCreateParams as ProgramCreateParams
from .card_settlement_params import CardSettlementParams as CardSettlementParams
from .document_create_params import DocumentCreateParams as DocumentCreateParams
from .ach_transfer_simulation import ACHTransferSimulation as ACHTransferSimulation
diff --git a/src/increase/types/simulations/ach_transfer_return_params.py b/src/increase/types/simulations/ach_transfer_return_params.py
index 8fbfae11e..2f8a2dd06 100644
--- a/src/increase/types/simulations/ach_transfer_return_params.py
+++ b/src/increase/types/simulations/ach_transfer_return_params.py
@@ -28,10 +28,58 @@ class ACHTransferReturnParams(TypedDict, total=False):
"file_record_edit_criteria",
"enr_invalid_individual_name",
"returned_per_odfi_request",
- "addenda_error",
"limited_participation_dfi",
"incorrectly_coded_outbound_international_payment",
"other",
+ "account_sold_to_another_dfi",
+ "addenda_error",
+ "beneficiary_or_account_holder_deceased",
+ "check_truncation_entry_return",
+ "corrected_return",
+ "duplicate_entry",
+ "duplicate_return",
+ "enr_duplicate_enrollment",
+ "enr_invalid_dfi_account_number",
+ "enr_invalid_individual_id_number",
+ "enr_invalid_representative_payee_indicator",
+ "enr_invalid_transaction_code",
+ "enr_return_of_enr_entry",
+ "enr_routing_number_check_digit_error",
+ "entry_not_processed_by_gateway",
+ "field_error",
+ "foreign_receiving_dfi_unable_to_settle",
+ "iat_entry_coding_error",
+ "improper_effective_entry_date",
+ "improper_source_document_source_document_presented",
+ "invalid_company_id",
+ "invalid_foreign_receiving_dfi_identification",
+ "invalid_individual_id_number",
+ "item_and_rck_entry_presented_for_payment",
+ "item_related_to_rck_entry_is_ineligible",
+ "mandatory_field_error",
+ "misrouted_dishonored_return",
+ "misrouted_return",
+ "no_errors_found",
+ "non_acceptance_of_r62_dishonored_return",
+ "non_participant_in_iat_program",
+ "permissible_return_entry",
+ "permissible_return_entry_not_accepted",
+ "rdfi_non_settlement",
+ "rdfi_participant_in_check_truncation_program",
+ "representative_payee_deceased_or_unable_to_continue_in_that_capacity",
+ "return_not_a_duplicate",
+ "return_of_erroneous_or_reversing_debit",
+ "return_of_improper_credit_entry",
+ "return_of_improper_debit_entry",
+ "return_of_xck_entry",
+ "source_document_presented_for_payment",
+ "state_law_affecting_rck_acceptance",
+ "stop_payment_on_item_related_to_rck_entry",
+ "stop_payment_on_source_document",
+ "timely_original_return",
+ "trace_number_error",
+ "untimely_dishonored_return",
+ "untimely_return",
]
"""The reason why the Federal Reserve or destination bank returned this transfer.
diff --git a/src/increase/types/simulations/ach_transfer_simulation.py b/src/increase/types/simulations/ach_transfer_simulation.py
index 9b4ffe8cd..72749df7c 100644
--- a/src/increase/types/simulations/ach_transfer_simulation.py
+++ b/src/increase/types/simulations/ach_transfer_simulation.py
@@ -139,6 +139,9 @@ class TransactionSourceACHTransferReturn(BaseModel):
the transfer was created.
"""
+ raw_return_reason_code: str
+ """The three character ACH return code, in the range R01 to R85."""
+
return_reason_code: Literal[
"insufficient_fund",
"no_account",
@@ -159,10 +162,58 @@ class TransactionSourceACHTransferReturn(BaseModel):
"file_record_edit_criteria",
"enr_invalid_individual_name",
"returned_per_odfi_request",
- "addenda_error",
"limited_participation_dfi",
"incorrectly_coded_outbound_international_payment",
"other",
+ "account_sold_to_another_dfi",
+ "addenda_error",
+ "beneficiary_or_account_holder_deceased",
+ "check_truncation_entry_return",
+ "corrected_return",
+ "duplicate_entry",
+ "duplicate_return",
+ "enr_duplicate_enrollment",
+ "enr_invalid_dfi_account_number",
+ "enr_invalid_individual_id_number",
+ "enr_invalid_representative_payee_indicator",
+ "enr_invalid_transaction_code",
+ "enr_return_of_enr_entry",
+ "enr_routing_number_check_digit_error",
+ "entry_not_processed_by_gateway",
+ "field_error",
+ "foreign_receiving_dfi_unable_to_settle",
+ "iat_entry_coding_error",
+ "improper_effective_entry_date",
+ "improper_source_document_source_document_presented",
+ "invalid_company_id",
+ "invalid_foreign_receiving_dfi_identification",
+ "invalid_individual_id_number",
+ "item_and_rck_entry_presented_for_payment",
+ "item_related_to_rck_entry_is_ineligible",
+ "mandatory_field_error",
+ "misrouted_dishonored_return",
+ "misrouted_return",
+ "no_errors_found",
+ "non_acceptance_of_r62_dishonored_return",
+ "non_participant_in_iat_program",
+ "permissible_return_entry",
+ "permissible_return_entry_not_accepted",
+ "rdfi_non_settlement",
+ "rdfi_participant_in_check_truncation_program",
+ "representative_payee_deceased_or_unable_to_continue_in_that_capacity",
+ "return_not_a_duplicate",
+ "return_of_erroneous_or_reversing_debit",
+ "return_of_improper_credit_entry",
+ "return_of_improper_debit_entry",
+ "return_of_xck_entry",
+ "source_document_presented_for_payment",
+ "state_law_affecting_rck_acceptance",
+ "stop_payment_on_item_related_to_rck_entry",
+ "stop_payment_on_source_document",
+ "timely_original_return",
+ "trace_number_error",
+ "untimely_dishonored_return",
+ "untimely_return",
]
"""Why the ACH Transfer was returned."""
@@ -866,6 +917,7 @@ class TransactionSourceInternalSource(BaseModel):
"""
reason: Literal[
+ "account_closure",
"bank_migration",
"cashback",
"collection_receivable",
@@ -1518,6 +1570,7 @@ class DeclinedTransactionSourceCheckDecline(BaseModel):
"group_locked",
"insufficient_funds",
"unable_to_locate_account",
+ "not_our_item",
"unable_to_process",
"refer_to_image",
"stop_payment_requested",
diff --git a/src/increase/types/simulations/card_authorization_simulation.py b/src/increase/types/simulations/card_authorization_simulation.py
index 7210e46a7..dbcc49938 100644
--- a/src/increase/types/simulations/card_authorization_simulation.py
+++ b/src/increase/types/simulations/card_authorization_simulation.py
@@ -639,6 +639,7 @@ class DeclinedTransactionSourceCheckDecline(BaseModel):
"group_locked",
"insufficient_funds",
"unable_to_locate_account",
+ "not_our_item",
"unable_to_process",
"refer_to_image",
"stop_payment_requested",
diff --git a/src/increase/types/simulations/inbound_real_time_payments_transfer_simulation_result.py b/src/increase/types/simulations/inbound_real_time_payments_transfer_simulation_result.py
index 8b4ec4388..9ddb7cc3e 100644
--- a/src/increase/types/simulations/inbound_real_time_payments_transfer_simulation_result.py
+++ b/src/increase/types/simulations/inbound_real_time_payments_transfer_simulation_result.py
@@ -139,6 +139,9 @@ class TransactionSourceACHTransferReturn(BaseModel):
the transfer was created.
"""
+ raw_return_reason_code: str
+ """The three character ACH return code, in the range R01 to R85."""
+
return_reason_code: Literal[
"insufficient_fund",
"no_account",
@@ -159,10 +162,58 @@ class TransactionSourceACHTransferReturn(BaseModel):
"file_record_edit_criteria",
"enr_invalid_individual_name",
"returned_per_odfi_request",
- "addenda_error",
"limited_participation_dfi",
"incorrectly_coded_outbound_international_payment",
"other",
+ "account_sold_to_another_dfi",
+ "addenda_error",
+ "beneficiary_or_account_holder_deceased",
+ "check_truncation_entry_return",
+ "corrected_return",
+ "duplicate_entry",
+ "duplicate_return",
+ "enr_duplicate_enrollment",
+ "enr_invalid_dfi_account_number",
+ "enr_invalid_individual_id_number",
+ "enr_invalid_representative_payee_indicator",
+ "enr_invalid_transaction_code",
+ "enr_return_of_enr_entry",
+ "enr_routing_number_check_digit_error",
+ "entry_not_processed_by_gateway",
+ "field_error",
+ "foreign_receiving_dfi_unable_to_settle",
+ "iat_entry_coding_error",
+ "improper_effective_entry_date",
+ "improper_source_document_source_document_presented",
+ "invalid_company_id",
+ "invalid_foreign_receiving_dfi_identification",
+ "invalid_individual_id_number",
+ "item_and_rck_entry_presented_for_payment",
+ "item_related_to_rck_entry_is_ineligible",
+ "mandatory_field_error",
+ "misrouted_dishonored_return",
+ "misrouted_return",
+ "no_errors_found",
+ "non_acceptance_of_r62_dishonored_return",
+ "non_participant_in_iat_program",
+ "permissible_return_entry",
+ "permissible_return_entry_not_accepted",
+ "rdfi_non_settlement",
+ "rdfi_participant_in_check_truncation_program",
+ "representative_payee_deceased_or_unable_to_continue_in_that_capacity",
+ "return_not_a_duplicate",
+ "return_of_erroneous_or_reversing_debit",
+ "return_of_improper_credit_entry",
+ "return_of_improper_debit_entry",
+ "return_of_xck_entry",
+ "source_document_presented_for_payment",
+ "state_law_affecting_rck_acceptance",
+ "stop_payment_on_item_related_to_rck_entry",
+ "stop_payment_on_source_document",
+ "timely_original_return",
+ "trace_number_error",
+ "untimely_dishonored_return",
+ "untimely_return",
]
"""Why the ACH Transfer was returned."""
@@ -866,6 +917,7 @@ class TransactionSourceInternalSource(BaseModel):
"""
reason: Literal[
+ "account_closure",
"bank_migration",
"cashback",
"collection_receivable",
@@ -1518,6 +1570,7 @@ class DeclinedTransactionSourceCheckDecline(BaseModel):
"group_locked",
"insufficient_funds",
"unable_to_locate_account",
+ "not_our_item",
"unable_to_process",
"refer_to_image",
"stop_payment_requested",
diff --git a/src/increase/types/simulations/interest_payment_simulation_result.py b/src/increase/types/simulations/interest_payment_simulation_result.py
index ed2d564b3..d1e5dea22 100644
--- a/src/increase/types/simulations/interest_payment_simulation_result.py
+++ b/src/increase/types/simulations/interest_payment_simulation_result.py
@@ -127,6 +127,9 @@ class TransactionSourceACHTransferReturn(BaseModel):
the transfer was created.
"""
+ raw_return_reason_code: str
+ """The three character ACH return code, in the range R01 to R85."""
+
return_reason_code: Literal[
"insufficient_fund",
"no_account",
@@ -147,10 +150,58 @@ class TransactionSourceACHTransferReturn(BaseModel):
"file_record_edit_criteria",
"enr_invalid_individual_name",
"returned_per_odfi_request",
- "addenda_error",
"limited_participation_dfi",
"incorrectly_coded_outbound_international_payment",
"other",
+ "account_sold_to_another_dfi",
+ "addenda_error",
+ "beneficiary_or_account_holder_deceased",
+ "check_truncation_entry_return",
+ "corrected_return",
+ "duplicate_entry",
+ "duplicate_return",
+ "enr_duplicate_enrollment",
+ "enr_invalid_dfi_account_number",
+ "enr_invalid_individual_id_number",
+ "enr_invalid_representative_payee_indicator",
+ "enr_invalid_transaction_code",
+ "enr_return_of_enr_entry",
+ "enr_routing_number_check_digit_error",
+ "entry_not_processed_by_gateway",
+ "field_error",
+ "foreign_receiving_dfi_unable_to_settle",
+ "iat_entry_coding_error",
+ "improper_effective_entry_date",
+ "improper_source_document_source_document_presented",
+ "invalid_company_id",
+ "invalid_foreign_receiving_dfi_identification",
+ "invalid_individual_id_number",
+ "item_and_rck_entry_presented_for_payment",
+ "item_related_to_rck_entry_is_ineligible",
+ "mandatory_field_error",
+ "misrouted_dishonored_return",
+ "misrouted_return",
+ "no_errors_found",
+ "non_acceptance_of_r62_dishonored_return",
+ "non_participant_in_iat_program",
+ "permissible_return_entry",
+ "permissible_return_entry_not_accepted",
+ "rdfi_non_settlement",
+ "rdfi_participant_in_check_truncation_program",
+ "representative_payee_deceased_or_unable_to_continue_in_that_capacity",
+ "return_not_a_duplicate",
+ "return_of_erroneous_or_reversing_debit",
+ "return_of_improper_credit_entry",
+ "return_of_improper_debit_entry",
+ "return_of_xck_entry",
+ "source_document_presented_for_payment",
+ "state_law_affecting_rck_acceptance",
+ "stop_payment_on_item_related_to_rck_entry",
+ "stop_payment_on_source_document",
+ "timely_original_return",
+ "trace_number_error",
+ "untimely_dishonored_return",
+ "untimely_return",
]
"""Why the ACH Transfer was returned."""
@@ -854,6 +905,7 @@ class TransactionSourceInternalSource(BaseModel):
"""
reason: Literal[
+ "account_closure",
"bank_migration",
"cashback",
"collection_receivable",
diff --git a/src/increase/types/simulations/program_create_params.py b/src/increase/types/simulations/program_create_params.py
new file mode 100644
index 000000000..22b346cec
--- /dev/null
+++ b/src/increase/types/simulations/program_create_params.py
@@ -0,0 +1,12 @@
+# File generated from our OpenAPI spec by Stainless.
+
+from __future__ import annotations
+
+from typing_extensions import Required, TypedDict
+
+__all__ = ["ProgramCreateParams"]
+
+
+class ProgramCreateParams(TypedDict, total=False):
+ name: Required[str]
+ """The name of the program being added."""
diff --git a/src/increase/types/simulations/wire_transfer_simulation.py b/src/increase/types/simulations/wire_transfer_simulation.py
index 383035787..113e9de12 100644
--- a/src/increase/types/simulations/wire_transfer_simulation.py
+++ b/src/increase/types/simulations/wire_transfer_simulation.py
@@ -127,6 +127,9 @@ class TransactionSourceACHTransferReturn(BaseModel):
the transfer was created.
"""
+ raw_return_reason_code: str
+ """The three character ACH return code, in the range R01 to R85."""
+
return_reason_code: Literal[
"insufficient_fund",
"no_account",
@@ -147,10 +150,58 @@ class TransactionSourceACHTransferReturn(BaseModel):
"file_record_edit_criteria",
"enr_invalid_individual_name",
"returned_per_odfi_request",
- "addenda_error",
"limited_participation_dfi",
"incorrectly_coded_outbound_international_payment",
"other",
+ "account_sold_to_another_dfi",
+ "addenda_error",
+ "beneficiary_or_account_holder_deceased",
+ "check_truncation_entry_return",
+ "corrected_return",
+ "duplicate_entry",
+ "duplicate_return",
+ "enr_duplicate_enrollment",
+ "enr_invalid_dfi_account_number",
+ "enr_invalid_individual_id_number",
+ "enr_invalid_representative_payee_indicator",
+ "enr_invalid_transaction_code",
+ "enr_return_of_enr_entry",
+ "enr_routing_number_check_digit_error",
+ "entry_not_processed_by_gateway",
+ "field_error",
+ "foreign_receiving_dfi_unable_to_settle",
+ "iat_entry_coding_error",
+ "improper_effective_entry_date",
+ "improper_source_document_source_document_presented",
+ "invalid_company_id",
+ "invalid_foreign_receiving_dfi_identification",
+ "invalid_individual_id_number",
+ "item_and_rck_entry_presented_for_payment",
+ "item_related_to_rck_entry_is_ineligible",
+ "mandatory_field_error",
+ "misrouted_dishonored_return",
+ "misrouted_return",
+ "no_errors_found",
+ "non_acceptance_of_r62_dishonored_return",
+ "non_participant_in_iat_program",
+ "permissible_return_entry",
+ "permissible_return_entry_not_accepted",
+ "rdfi_non_settlement",
+ "rdfi_participant_in_check_truncation_program",
+ "representative_payee_deceased_or_unable_to_continue_in_that_capacity",
+ "return_not_a_duplicate",
+ "return_of_erroneous_or_reversing_debit",
+ "return_of_improper_credit_entry",
+ "return_of_improper_debit_entry",
+ "return_of_xck_entry",
+ "source_document_presented_for_payment",
+ "state_law_affecting_rck_acceptance",
+ "stop_payment_on_item_related_to_rck_entry",
+ "stop_payment_on_source_document",
+ "timely_original_return",
+ "trace_number_error",
+ "untimely_dishonored_return",
+ "untimely_return",
]
"""Why the ACH Transfer was returned."""
@@ -854,6 +905,7 @@ class TransactionSourceInternalSource(BaseModel):
"""
reason: Literal[
+ "account_closure",
"bank_migration",
"cashback",
"collection_receivable",
diff --git a/src/increase/types/transaction.py b/src/increase/types/transaction.py
index a9bf97bfe..ab95b02f5 100644
--- a/src/increase/types/transaction.py
+++ b/src/increase/types/transaction.py
@@ -126,6 +126,9 @@ class SourceACHTransferReturn(BaseModel):
the transfer was created.
"""
+ raw_return_reason_code: str
+ """The three character ACH return code, in the range R01 to R85."""
+
return_reason_code: Literal[
"insufficient_fund",
"no_account",
@@ -146,10 +149,58 @@ class SourceACHTransferReturn(BaseModel):
"file_record_edit_criteria",
"enr_invalid_individual_name",
"returned_per_odfi_request",
- "addenda_error",
"limited_participation_dfi",
"incorrectly_coded_outbound_international_payment",
"other",
+ "account_sold_to_another_dfi",
+ "addenda_error",
+ "beneficiary_or_account_holder_deceased",
+ "check_truncation_entry_return",
+ "corrected_return",
+ "duplicate_entry",
+ "duplicate_return",
+ "enr_duplicate_enrollment",
+ "enr_invalid_dfi_account_number",
+ "enr_invalid_individual_id_number",
+ "enr_invalid_representative_payee_indicator",
+ "enr_invalid_transaction_code",
+ "enr_return_of_enr_entry",
+ "enr_routing_number_check_digit_error",
+ "entry_not_processed_by_gateway",
+ "field_error",
+ "foreign_receiving_dfi_unable_to_settle",
+ "iat_entry_coding_error",
+ "improper_effective_entry_date",
+ "improper_source_document_source_document_presented",
+ "invalid_company_id",
+ "invalid_foreign_receiving_dfi_identification",
+ "invalid_individual_id_number",
+ "item_and_rck_entry_presented_for_payment",
+ "item_related_to_rck_entry_is_ineligible",
+ "mandatory_field_error",
+ "misrouted_dishonored_return",
+ "misrouted_return",
+ "no_errors_found",
+ "non_acceptance_of_r62_dishonored_return",
+ "non_participant_in_iat_program",
+ "permissible_return_entry",
+ "permissible_return_entry_not_accepted",
+ "rdfi_non_settlement",
+ "rdfi_participant_in_check_truncation_program",
+ "representative_payee_deceased_or_unable_to_continue_in_that_capacity",
+ "return_not_a_duplicate",
+ "return_of_erroneous_or_reversing_debit",
+ "return_of_improper_credit_entry",
+ "return_of_improper_debit_entry",
+ "return_of_xck_entry",
+ "source_document_presented_for_payment",
+ "state_law_affecting_rck_acceptance",
+ "stop_payment_on_item_related_to_rck_entry",
+ "stop_payment_on_source_document",
+ "timely_original_return",
+ "trace_number_error",
+ "untimely_dishonored_return",
+ "untimely_return",
]
"""Why the ACH Transfer was returned."""
@@ -853,6 +904,7 @@ class SourceInternalSource(BaseModel):
"""
reason: Literal[
+ "account_closure",
"bank_migration",
"cashback",
"collection_receivable",
diff --git a/tests/api_resources/entities/test_supplemental_documents.py b/tests/api_resources/entities/test_supplemental_documents.py
index 4f8a89822..08b95da2c 100644
--- a/tests/api_resources/entities/test_supplemental_documents.py
+++ b/tests/api_resources/entities/test_supplemental_documents.py
@@ -9,6 +9,8 @@
from increase import Increase, AsyncIncrease
from tests.utils import assert_matches_type
from increase.types import Entity
+from increase.pagination import SyncPage, AsyncPage
+from increase.types.entities import SupplementalDocument
base_url = os.environ.get("API_BASE_URL", "http://127.0.0.1:4010")
api_key = os.environ.get("API_KEY", "something1234")
@@ -27,6 +29,22 @@ def test_method_create(self, client: Increase) -> None:
)
assert_matches_type(Entity, supplemental_document, path=["response"])
+ @parametrize
+ def test_method_list(self, client: Increase) -> None:
+ supplemental_document = client.entities.supplemental_documents.list(
+ entity_id="string",
+ )
+ assert_matches_type(SyncPage[SupplementalDocument], supplemental_document, path=["response"])
+
+ @parametrize
+ def test_method_list_with_all_params(self, client: Increase) -> None:
+ supplemental_document = client.entities.supplemental_documents.list(
+ entity_id="string",
+ cursor="string",
+ limit=0,
+ )
+ assert_matches_type(SyncPage[SupplementalDocument], supplemental_document, path=["response"])
+
class TestAsyncSupplementalDocuments:
strict_client = AsyncIncrease(base_url=base_url, api_key=api_key, _strict_response_validation=True)
@@ -40,3 +58,19 @@ async def test_method_create(self, client: AsyncIncrease) -> None:
file_id="string",
)
assert_matches_type(Entity, supplemental_document, path=["response"])
+
+ @parametrize
+ async def test_method_list(self, client: AsyncIncrease) -> None:
+ supplemental_document = await client.entities.supplemental_documents.list(
+ entity_id="string",
+ )
+ assert_matches_type(AsyncPage[SupplementalDocument], supplemental_document, path=["response"])
+
+ @parametrize
+ async def test_method_list_with_all_params(self, client: AsyncIncrease) -> None:
+ supplemental_document = await client.entities.supplemental_documents.list(
+ entity_id="string",
+ cursor="string",
+ limit=0,
+ )
+ assert_matches_type(AsyncPage[SupplementalDocument], supplemental_document, path=["response"])
diff --git a/tests/api_resources/simulations/test_programs.py b/tests/api_resources/simulations/test_programs.py
new file mode 100644
index 000000000..38fea4d1c
--- /dev/null
+++ b/tests/api_resources/simulations/test_programs.py
@@ -0,0 +1,40 @@
+# File generated from our OpenAPI spec by Stainless.
+
+from __future__ import annotations
+
+import os
+
+import pytest
+
+from increase import Increase, AsyncIncrease
+from tests.utils import assert_matches_type
+from increase.types import Program
+
+base_url = os.environ.get("API_BASE_URL", "http://127.0.0.1:4010")
+api_key = os.environ.get("API_KEY", "something1234")
+
+
+class TestPrograms:
+ strict_client = Increase(base_url=base_url, api_key=api_key, _strict_response_validation=True)
+ loose_client = Increase(base_url=base_url, api_key=api_key, _strict_response_validation=False)
+ parametrize = pytest.mark.parametrize("client", [strict_client, loose_client], ids=["strict", "loose"])
+
+ @parametrize
+ def test_method_create(self, client: Increase) -> None:
+ program = client.simulations.programs.create(
+ name="x",
+ )
+ assert_matches_type(Program, program, path=["response"])
+
+
+class TestAsyncPrograms:
+ strict_client = AsyncIncrease(base_url=base_url, api_key=api_key, _strict_response_validation=True)
+ loose_client = AsyncIncrease(base_url=base_url, api_key=api_key, _strict_response_validation=False)
+ parametrize = pytest.mark.parametrize("client", [strict_client, loose_client], ids=["strict", "loose"])
+
+ @parametrize
+ async def test_method_create(self, client: AsyncIncrease) -> None:
+ program = await client.simulations.programs.create(
+ name="x",
+ )
+ assert_matches_type(Program, program, path=["response"])
diff --git a/tests/api_resources/test_accounts.py b/tests/api_resources/test_accounts.py
index b0656ebd5..57003932c 100644
--- a/tests/api_resources/test_accounts.py
+++ b/tests/api_resources/test_accounts.py
@@ -76,6 +76,7 @@ def test_method_list_with_all_params(self, client: Increase) -> None:
},
cursor="string",
entity_id="string",
+ informational_entity_id="string",
limit=0,
status="open",
)
@@ -150,6 +151,7 @@ async def test_method_list_with_all_params(self, client: AsyncIncrease) -> None:
},
cursor="string",
entity_id="string",
+ informational_entity_id="string",
limit=0,
status="open",
)