diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f275b5aa1..e5bc9245f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,13 +36,13 @@ jobs: run: ./scripts/lint build: - if: github.repository == 'stainless-sdks/increase-python' && (github.event_name == 'push' || github.event.pull_request.head.repo.fork) + if: github.event_name == 'push' || github.event.pull_request.head.repo.fork timeout-minutes: 10 name: build permissions: contents: read id-token: write - runs-on: depot-ubuntu-24.04 + runs-on: ${{ github.repository == 'stainless-sdks/increase-python' && 'depot-ubuntu-24.04' || 'ubuntu-latest' }} steps: - uses: actions/checkout@v4 @@ -61,12 +61,14 @@ jobs: run: rye build - name: Get GitHub OIDC Token + if: github.repository == 'stainless-sdks/increase-python' id: github-oidc uses: actions/github-script@v6 with: script: core.setOutput('github_token', await core.getIDToken()); - name: Upload tarball + if: github.repository == 'stainless-sdks/increase-python' env: URL: https://pkg.stainless.com/s AUTH: ${{ steps.github-oidc.outputs.github_token }} diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 5739e4841..62a56493a 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.297.0" + ".": "0.298.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 372ce8332..c4ea22888 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 215 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-ead33c34bfbcc450c88d09e7d880fa5be57c504a66102e098ac03c5b220dea80.yml -openapi_spec_hash: 1544de50d73f80b843d5761009764ab6 -config_hash: 0b0a2503208283b283fc5bc6df6a07a5 +configured_endpoints: 216 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-658e39148e80216f2f6064ec405b424afb64c63842e8f6c61f14100bb149d069.yml +openapi_spec_hash: 38618257a4272f341695cd522f3e6dce +config_hash: 29e452035e915a07cd64333b10a83077 diff --git a/CHANGELOG.md b/CHANGELOG.md index 915e97c45..4a71039d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## 0.298.0 (2025-08-25) + +Full Changelog: [v0.297.0...v0.298.0](https://github.com/Increase/increase-python/compare/v0.297.0...v0.298.0) + +### Features + +* **api:** api update ([2f99575](https://github.com/Increase/increase-python/commit/2f995756e809f840847f978c81d47f6a19834ac9)) +* **api:** api update ([cd71c6e](https://github.com/Increase/increase-python/commit/cd71c6e5fb9db33e4d84cfb6b4e07cb8acea0e57)) +* **api:** api update ([5cef34f](https://github.com/Increase/increase-python/commit/5cef34f7fe43f7a82f315a53e0f59938c4bb7885)) +* **api:** api update ([58beb3f](https://github.com/Increase/increase-python/commit/58beb3f7aa0d89787f2aac817926b89eb74e212d)) + + +### Chores + +* **internal:** change ci workflow machines ([37b5b77](https://github.com/Increase/increase-python/commit/37b5b77126340c76eae6b65bea5312d33f9cf4c0)) +* update github action ([72a863f](https://github.com/Increase/increase-python/commit/72a863f01af3fea1e41f0d0dc5e0571a5b88c246)) + ## 0.297.0 (2025-08-21) Full Changelog: [v0.296.0...v0.297.0](https://github.com/Increase/increase-python/compare/v0.296.0...v0.297.0) diff --git a/api.md b/api.md index ea2de8e78..0ea4874f9 100644 --- a/api.md +++ b/api.md @@ -910,6 +910,7 @@ Methods: Methods: - client.simulations.wire_drawdown_requests.refuse(wire_drawdown_request_id) -> WireDrawdownRequest +- client.simulations.wire_drawdown_requests.submit(wire_drawdown_request_id) -> WireDrawdownRequest ## InboundWireDrawdownRequests diff --git a/pyproject.toml b/pyproject.toml index a98446804..a6e4cbd48 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "increase" -version = "0.297.0" +version = "0.298.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 a76a6901d..3d047f0f1 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.297.0" # x-release-please-version +__version__ = "0.298.0" # x-release-please-version diff --git a/src/increase/resources/simulations/inbound_wire_drawdown_requests.py b/src/increase/resources/simulations/inbound_wire_drawdown_requests.py index c6e4e41a9..494eaa8e0 100644 --- a/src/increase/resources/simulations/inbound_wire_drawdown_requests.py +++ b/src/increase/resources/simulations/inbound_wire_drawdown_requests.py @@ -45,25 +45,24 @@ def create( self, *, amount: int, - beneficiary_account_number: str, - beneficiary_routing_number: str, + creditor_account_number: str, + creditor_routing_number: str, currency: str, - message_to_recipient: str, - originator_account_number: str, - originator_routing_number: str, recipient_account_number_id: str, - beneficiary_address_line1: str | NotGiven = NOT_GIVEN, - beneficiary_address_line2: str | NotGiven = NOT_GIVEN, - beneficiary_address_line3: str | NotGiven = NOT_GIVEN, - beneficiary_name: str | NotGiven = NOT_GIVEN, - originator_address_line1: str | NotGiven = NOT_GIVEN, - originator_address_line2: str | NotGiven = NOT_GIVEN, - originator_address_line3: str | NotGiven = NOT_GIVEN, - originator_name: str | NotGiven = NOT_GIVEN, - originator_to_beneficiary_information_line1: str | NotGiven = NOT_GIVEN, - originator_to_beneficiary_information_line2: str | NotGiven = NOT_GIVEN, - originator_to_beneficiary_information_line3: str | NotGiven = NOT_GIVEN, - originator_to_beneficiary_information_line4: str | NotGiven = NOT_GIVEN, + creditor_address_line1: str | NotGiven = NOT_GIVEN, + creditor_address_line2: str | NotGiven = NOT_GIVEN, + creditor_address_line3: str | NotGiven = NOT_GIVEN, + creditor_name: str | NotGiven = NOT_GIVEN, + debtor_account_number: str | NotGiven = NOT_GIVEN, + debtor_address_line1: str | NotGiven = NOT_GIVEN, + debtor_address_line2: str | NotGiven = NOT_GIVEN, + debtor_address_line3: str | NotGiven = NOT_GIVEN, + debtor_name: str | NotGiven = NOT_GIVEN, + debtor_routing_number: str | NotGiven = NOT_GIVEN, + end_to_end_identification: str | NotGiven = NOT_GIVEN, + instruction_identification: str | NotGiven = NOT_GIVEN, + unique_end_to_end_transaction_reference: str | NotGiven = NOT_GIVEN, + unstructured_remittance_information: str | 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, @@ -79,49 +78,50 @@ def create( Args: amount: The amount being requested in cents. - beneficiary_account_number: The drawdown request's beneficiary's account number. + creditor_account_number: The creditor's account number. - beneficiary_routing_number: The drawdown request's beneficiary's routing number. + creditor_routing_number: The creditor's routing number. currency: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the amount being requested. Will always be "USD". - message_to_recipient: A message from the drawdown request's originator. - - originator_account_number: The drawdown request's originator's account number. - - originator_routing_number: The drawdown request's originator's routing number. - recipient_account_number_id: The Account Number to which the recipient of this request is being requested to send funds from. - beneficiary_address_line1: Line 1 of the drawdown request's beneficiary's address. + creditor_address_line1: A free-form address field set by the sender representing the first line of the + creditor's address. + + creditor_address_line2: A free-form address field set by the sender representing the second line of the + creditor's address. + + creditor_address_line3: A free-form address field set by the sender representing the third line of the + creditor's address. - beneficiary_address_line2: Line 2 of the drawdown request's beneficiary's address. + creditor_name: A free-form name field set by the sender representing the creditor's name. - beneficiary_address_line3: Line 3 of the drawdown request's beneficiary's address. + debtor_account_number: The debtor's account number. - beneficiary_name: The drawdown request's beneficiary's name. + debtor_address_line1: A free-form address field set by the sender representing the first line of the + debtor's address. - originator_address_line1: Line 1 of the drawdown request's originator's address. + debtor_address_line2: A free-form address field set by the sender representing the second line of the + debtor's address. - originator_address_line2: Line 2 of the drawdown request's originator's address. + debtor_address_line3: A free-form address field set by the sender. - originator_address_line3: Line 3 of the drawdown request's originator's address. + debtor_name: A free-form name field set by the sender representing the debtor's name. - originator_name: The drawdown request's originator's name. + debtor_routing_number: The debtor's routing number. - originator_to_beneficiary_information_line1: Line 1 of the information conveyed from the originator of the message to the - beneficiary. + end_to_end_identification: A free-form reference string set by the sender, to help identify the transfer. - originator_to_beneficiary_information_line2: Line 2 of the information conveyed from the originator of the message to the - beneficiary. + instruction_identification: The sending bank's identifier for the wire transfer. - originator_to_beneficiary_information_line3: Line 3 of the information conveyed from the originator of the message to the - beneficiary. + unique_end_to_end_transaction_reference: The Unique End-to-end Transaction Reference + ([UETR](https://www.swift.com/payments/what-unique-end-end-transaction-reference-uetr)) + of the transfer. - originator_to_beneficiary_information_line4: Line 4 of the information conveyed from the originator of the message to the - beneficiary. + unstructured_remittance_information: A free-form message set by the sender. extra_headers: Send extra headers @@ -138,25 +138,24 @@ def create( body=maybe_transform( { "amount": amount, - "beneficiary_account_number": beneficiary_account_number, - "beneficiary_routing_number": beneficiary_routing_number, + "creditor_account_number": creditor_account_number, + "creditor_routing_number": creditor_routing_number, "currency": currency, - "message_to_recipient": message_to_recipient, - "originator_account_number": originator_account_number, - "originator_routing_number": originator_routing_number, "recipient_account_number_id": recipient_account_number_id, - "beneficiary_address_line1": beneficiary_address_line1, - "beneficiary_address_line2": beneficiary_address_line2, - "beneficiary_address_line3": beneficiary_address_line3, - "beneficiary_name": beneficiary_name, - "originator_address_line1": originator_address_line1, - "originator_address_line2": originator_address_line2, - "originator_address_line3": originator_address_line3, - "originator_name": originator_name, - "originator_to_beneficiary_information_line1": originator_to_beneficiary_information_line1, - "originator_to_beneficiary_information_line2": originator_to_beneficiary_information_line2, - "originator_to_beneficiary_information_line3": originator_to_beneficiary_information_line3, - "originator_to_beneficiary_information_line4": originator_to_beneficiary_information_line4, + "creditor_address_line1": creditor_address_line1, + "creditor_address_line2": creditor_address_line2, + "creditor_address_line3": creditor_address_line3, + "creditor_name": creditor_name, + "debtor_account_number": debtor_account_number, + "debtor_address_line1": debtor_address_line1, + "debtor_address_line2": debtor_address_line2, + "debtor_address_line3": debtor_address_line3, + "debtor_name": debtor_name, + "debtor_routing_number": debtor_routing_number, + "end_to_end_identification": end_to_end_identification, + "instruction_identification": instruction_identification, + "unique_end_to_end_transaction_reference": unique_end_to_end_transaction_reference, + "unstructured_remittance_information": unstructured_remittance_information, }, inbound_wire_drawdown_request_create_params.InboundWireDrawdownRequestCreateParams, ), @@ -195,25 +194,24 @@ async def create( self, *, amount: int, - beneficiary_account_number: str, - beneficiary_routing_number: str, + creditor_account_number: str, + creditor_routing_number: str, currency: str, - message_to_recipient: str, - originator_account_number: str, - originator_routing_number: str, recipient_account_number_id: str, - beneficiary_address_line1: str | NotGiven = NOT_GIVEN, - beneficiary_address_line2: str | NotGiven = NOT_GIVEN, - beneficiary_address_line3: str | NotGiven = NOT_GIVEN, - beneficiary_name: str | NotGiven = NOT_GIVEN, - originator_address_line1: str | NotGiven = NOT_GIVEN, - originator_address_line2: str | NotGiven = NOT_GIVEN, - originator_address_line3: str | NotGiven = NOT_GIVEN, - originator_name: str | NotGiven = NOT_GIVEN, - originator_to_beneficiary_information_line1: str | NotGiven = NOT_GIVEN, - originator_to_beneficiary_information_line2: str | NotGiven = NOT_GIVEN, - originator_to_beneficiary_information_line3: str | NotGiven = NOT_GIVEN, - originator_to_beneficiary_information_line4: str | NotGiven = NOT_GIVEN, + creditor_address_line1: str | NotGiven = NOT_GIVEN, + creditor_address_line2: str | NotGiven = NOT_GIVEN, + creditor_address_line3: str | NotGiven = NOT_GIVEN, + creditor_name: str | NotGiven = NOT_GIVEN, + debtor_account_number: str | NotGiven = NOT_GIVEN, + debtor_address_line1: str | NotGiven = NOT_GIVEN, + debtor_address_line2: str | NotGiven = NOT_GIVEN, + debtor_address_line3: str | NotGiven = NOT_GIVEN, + debtor_name: str | NotGiven = NOT_GIVEN, + debtor_routing_number: str | NotGiven = NOT_GIVEN, + end_to_end_identification: str | NotGiven = NOT_GIVEN, + instruction_identification: str | NotGiven = NOT_GIVEN, + unique_end_to_end_transaction_reference: str | NotGiven = NOT_GIVEN, + unstructured_remittance_information: str | 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, @@ -229,49 +227,50 @@ async def create( Args: amount: The amount being requested in cents. - beneficiary_account_number: The drawdown request's beneficiary's account number. + creditor_account_number: The creditor's account number. - beneficiary_routing_number: The drawdown request's beneficiary's routing number. + creditor_routing_number: The creditor's routing number. currency: The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code for the amount being requested. Will always be "USD". - message_to_recipient: A message from the drawdown request's originator. - - originator_account_number: The drawdown request's originator's account number. - - originator_routing_number: The drawdown request's originator's routing number. - recipient_account_number_id: The Account Number to which the recipient of this request is being requested to send funds from. - beneficiary_address_line1: Line 1 of the drawdown request's beneficiary's address. + creditor_address_line1: A free-form address field set by the sender representing the first line of the + creditor's address. + + creditor_address_line2: A free-form address field set by the sender representing the second line of the + creditor's address. + + creditor_address_line3: A free-form address field set by the sender representing the third line of the + creditor's address. - beneficiary_address_line2: Line 2 of the drawdown request's beneficiary's address. + creditor_name: A free-form name field set by the sender representing the creditor's name. - beneficiary_address_line3: Line 3 of the drawdown request's beneficiary's address. + debtor_account_number: The debtor's account number. - beneficiary_name: The drawdown request's beneficiary's name. + debtor_address_line1: A free-form address field set by the sender representing the first line of the + debtor's address. - originator_address_line1: Line 1 of the drawdown request's originator's address. + debtor_address_line2: A free-form address field set by the sender representing the second line of the + debtor's address. - originator_address_line2: Line 2 of the drawdown request's originator's address. + debtor_address_line3: A free-form address field set by the sender. - originator_address_line3: Line 3 of the drawdown request's originator's address. + debtor_name: A free-form name field set by the sender representing the debtor's name. - originator_name: The drawdown request's originator's name. + debtor_routing_number: The debtor's routing number. - originator_to_beneficiary_information_line1: Line 1 of the information conveyed from the originator of the message to the - beneficiary. + end_to_end_identification: A free-form reference string set by the sender, to help identify the transfer. - originator_to_beneficiary_information_line2: Line 2 of the information conveyed from the originator of the message to the - beneficiary. + instruction_identification: The sending bank's identifier for the wire transfer. - originator_to_beneficiary_information_line3: Line 3 of the information conveyed from the originator of the message to the - beneficiary. + unique_end_to_end_transaction_reference: The Unique End-to-end Transaction Reference + ([UETR](https://www.swift.com/payments/what-unique-end-end-transaction-reference-uetr)) + of the transfer. - originator_to_beneficiary_information_line4: Line 4 of the information conveyed from the originator of the message to the - beneficiary. + unstructured_remittance_information: A free-form message set by the sender. extra_headers: Send extra headers @@ -288,25 +287,24 @@ async def create( body=await async_maybe_transform( { "amount": amount, - "beneficiary_account_number": beneficiary_account_number, - "beneficiary_routing_number": beneficiary_routing_number, + "creditor_account_number": creditor_account_number, + "creditor_routing_number": creditor_routing_number, "currency": currency, - "message_to_recipient": message_to_recipient, - "originator_account_number": originator_account_number, - "originator_routing_number": originator_routing_number, "recipient_account_number_id": recipient_account_number_id, - "beneficiary_address_line1": beneficiary_address_line1, - "beneficiary_address_line2": beneficiary_address_line2, - "beneficiary_address_line3": beneficiary_address_line3, - "beneficiary_name": beneficiary_name, - "originator_address_line1": originator_address_line1, - "originator_address_line2": originator_address_line2, - "originator_address_line3": originator_address_line3, - "originator_name": originator_name, - "originator_to_beneficiary_information_line1": originator_to_beneficiary_information_line1, - "originator_to_beneficiary_information_line2": originator_to_beneficiary_information_line2, - "originator_to_beneficiary_information_line3": originator_to_beneficiary_information_line3, - "originator_to_beneficiary_information_line4": originator_to_beneficiary_information_line4, + "creditor_address_line1": creditor_address_line1, + "creditor_address_line2": creditor_address_line2, + "creditor_address_line3": creditor_address_line3, + "creditor_name": creditor_name, + "debtor_account_number": debtor_account_number, + "debtor_address_line1": debtor_address_line1, + "debtor_address_line2": debtor_address_line2, + "debtor_address_line3": debtor_address_line3, + "debtor_name": debtor_name, + "debtor_routing_number": debtor_routing_number, + "end_to_end_identification": end_to_end_identification, + "instruction_identification": instruction_identification, + "unique_end_to_end_transaction_reference": unique_end_to_end_transaction_reference, + "unstructured_remittance_information": unstructured_remittance_information, }, inbound_wire_drawdown_request_create_params.InboundWireDrawdownRequestCreateParams, ), diff --git a/src/increase/resources/simulations/wire_drawdown_requests.py b/src/increase/resources/simulations/wire_drawdown_requests.py index f60e766d1..1d4f89344 100644 --- a/src/increase/resources/simulations/wire_drawdown_requests.py +++ b/src/increase/resources/simulations/wire_drawdown_requests.py @@ -83,6 +83,50 @@ def refuse( cast_to=WireDrawdownRequest, ) + def submit( + self, + wire_drawdown_request_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, + ) -> WireDrawdownRequest: + """ + Simulates a Wire Drawdown Request being submitted to Fedwire. + + Args: + wire_drawdown_request_id: The identifier of the Wire Drawdown Request you wish to submit. + + 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 wire_drawdown_request_id: + raise ValueError( + f"Expected a non-empty value for `wire_drawdown_request_id` but received {wire_drawdown_request_id!r}" + ) + return self._post( + f"/simulations/wire_drawdown_requests/{wire_drawdown_request_id}/submit", + options=make_request_options( + extra_headers=extra_headers, + extra_query=extra_query, + extra_body=extra_body, + timeout=timeout, + idempotency_key=idempotency_key, + ), + cast_to=WireDrawdownRequest, + ) + class AsyncWireDrawdownRequestsResource(AsyncAPIResource): @cached_property @@ -148,6 +192,50 @@ async def refuse( cast_to=WireDrawdownRequest, ) + async def submit( + self, + wire_drawdown_request_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, + ) -> WireDrawdownRequest: + """ + Simulates a Wire Drawdown Request being submitted to Fedwire. + + Args: + wire_drawdown_request_id: The identifier of the Wire Drawdown Request you wish to submit. + + 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 wire_drawdown_request_id: + raise ValueError( + f"Expected a non-empty value for `wire_drawdown_request_id` but received {wire_drawdown_request_id!r}" + ) + return await self._post( + f"/simulations/wire_drawdown_requests/{wire_drawdown_request_id}/submit", + options=make_request_options( + extra_headers=extra_headers, + extra_query=extra_query, + extra_body=extra_body, + timeout=timeout, + idempotency_key=idempotency_key, + ), + cast_to=WireDrawdownRequest, + ) + class WireDrawdownRequestsResourceWithRawResponse: def __init__(self, wire_drawdown_requests: WireDrawdownRequestsResource) -> None: @@ -156,6 +244,9 @@ def __init__(self, wire_drawdown_requests: WireDrawdownRequestsResource) -> None self.refuse = to_raw_response_wrapper( wire_drawdown_requests.refuse, ) + self.submit = to_raw_response_wrapper( + wire_drawdown_requests.submit, + ) class AsyncWireDrawdownRequestsResourceWithRawResponse: @@ -165,6 +256,9 @@ def __init__(self, wire_drawdown_requests: AsyncWireDrawdownRequestsResource) -> self.refuse = async_to_raw_response_wrapper( wire_drawdown_requests.refuse, ) + self.submit = async_to_raw_response_wrapper( + wire_drawdown_requests.submit, + ) class WireDrawdownRequestsResourceWithStreamingResponse: @@ -174,6 +268,9 @@ def __init__(self, wire_drawdown_requests: WireDrawdownRequestsResource) -> None self.refuse = to_streamed_response_wrapper( wire_drawdown_requests.refuse, ) + self.submit = to_streamed_response_wrapper( + wire_drawdown_requests.submit, + ) class AsyncWireDrawdownRequestsResourceWithStreamingResponse: @@ -183,3 +280,6 @@ def __init__(self, wire_drawdown_requests: AsyncWireDrawdownRequestsResource) -> self.refuse = async_to_streamed_response_wrapper( wire_drawdown_requests.refuse, ) + self.submit = async_to_streamed_response_wrapper( + wire_drawdown_requests.submit, + ) diff --git a/src/increase/types/account.py b/src/increase/types/account.py index 5921c7098..de69efb7e 100644 --- a/src/increase/types/account.py +++ b/src/increase/types/account.py @@ -13,6 +13,13 @@ class Account(BaseModel): id: str """The Account identifier.""" + account_revenue_rate: Optional[str] = None + """ + The account revenue rate currently being earned on the account, as a string + containing a decimal number. For example, a 1% account revenue rate would be + represented as "0.01". + """ + bank: Literal["core_bank", "first_internet_bank", "grasshopper_bank"] """The bank the Account is with. @@ -77,7 +84,7 @@ class Account(BaseModel): interest_rate: str """ - The Interest Rate currently being earned on the account, as a string containing + 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". """ diff --git a/src/increase/types/inbound_wire_drawdown_request.py b/src/increase/types/inbound_wire_drawdown_request.py index 16e773f3e..3810c3424 100644 --- a/src/increase/types/inbound_wire_drawdown_request.py +++ b/src/increase/types/inbound_wire_drawdown_request.py @@ -16,29 +16,29 @@ class InboundWireDrawdownRequest(BaseModel): amount: int """The amount being requested in cents.""" - beneficiary_account_number: str - """The drawdown request's beneficiary's account number.""" + created_at: datetime + """ + The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time at which + the inbound wire drawdown requested was created. + """ - beneficiary_address_line1: Optional[str] = None - """Line 1 of the drawdown request's beneficiary's address.""" + creditor_account_number: str + """The creditor's account number.""" - beneficiary_address_line2: Optional[str] = None - """Line 2 of the drawdown request's beneficiary's address.""" + creditor_address_line1: Optional[str] = None + """A free-form address field set by the sender.""" - beneficiary_address_line3: Optional[str] = None - """Line 3 of the drawdown request's beneficiary's address.""" + creditor_address_line2: Optional[str] = None + """A free-form address field set by the sender.""" - beneficiary_name: Optional[str] = None - """The drawdown request's beneficiary's name.""" + creditor_address_line3: Optional[str] = None + """A free-form address field set by the sender.""" - beneficiary_routing_number: str - """The drawdown request's beneficiary's routing number.""" + creditor_name: Optional[str] = None + """A name set by the sender.""" - created_at: datetime - """ - The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time at which - the inbound wire drawdown requested was created. - """ + creditor_routing_number: str + """The creditor's routing number.""" currency: str """ @@ -46,50 +46,33 @@ class InboundWireDrawdownRequest(BaseModel): requested. Will always be "USD". """ - message_to_recipient: Optional[str] = None - """A message from the drawdown request's originator.""" - - originator_account_number: Optional[str] = None - """The drawdown request's originator's account number.""" + debtor_address_line1: Optional[str] = None + """A free-form address field set by the sender.""" - originator_address_line1: Optional[str] = None - """Line 1 of the drawdown request's originator's address.""" + debtor_address_line2: Optional[str] = None + """A free-form address field set by the sender.""" - originator_address_line2: Optional[str] = None - """Line 2 of the drawdown request's originator's address.""" + debtor_address_line3: Optional[str] = None + """A free-form address field set by the sender.""" - originator_address_line3: Optional[str] = None - """Line 3 of the drawdown request's originator's address.""" + debtor_name: Optional[str] = None + """A name set by the sender.""" - originator_name: Optional[str] = None - """The drawdown request's originator's name.""" - - originator_routing_number: str - """The drawdown request's originator's routing number.""" - - originator_to_beneficiary_information_line1: Optional[str] = None + end_to_end_identification: Optional[str] = None """ - Line 1 of the information conveyed from the originator of the message to the - beneficiary. + A free-form reference string set by the sender, to help identify the drawdown + request. """ - originator_to_beneficiary_information_line2: Optional[str] = None + input_message_accountability_data: Optional[str] = None """ - Line 2 of the information conveyed from the originator of the message to the - beneficiary. + A unique identifier available to the originating and receiving banks, commonly + abbreviated as IMAD. It is created when the wire is submitted to the Fedwire + service and is helpful when debugging wires with the originating bank. """ - originator_to_beneficiary_information_line3: Optional[str] = None - """ - Line 3 of the information conveyed from the originator of the message to the - beneficiary. - """ - - originator_to_beneficiary_information_line4: Optional[str] = None - """ - Line 4 of the information conveyed from the originator of the message to the - beneficiary. - """ + instruction_identification: Optional[str] = None + """The sending bank's identifier for the drawdown request.""" recipient_account_number_id: str """ @@ -102,3 +85,13 @@ class InboundWireDrawdownRequest(BaseModel): For this resource it will always be `inbound_wire_drawdown_request`. """ + + unique_end_to_end_transaction_reference: Optional[str] = None + """ + The Unique End-to-end Transaction Reference + ([UETR](https://www.swift.com/payments/what-unique-end-end-transaction-reference-uetr)) + of the drawdown request. + """ + + unstructured_remittance_information: Optional[str] = None + """A free-form message set by the sender.""" diff --git a/src/increase/types/simulations/inbound_wire_drawdown_request_create_params.py b/src/increase/types/simulations/inbound_wire_drawdown_request_create_params.py index 5aac92594..224b6766f 100644 --- a/src/increase/types/simulations/inbound_wire_drawdown_request_create_params.py +++ b/src/increase/types/simulations/inbound_wire_drawdown_request_create_params.py @@ -11,11 +11,11 @@ class InboundWireDrawdownRequestCreateParams(TypedDict, total=False): amount: Required[int] """The amount being requested in cents.""" - beneficiary_account_number: Required[str] - """The drawdown request's beneficiary's account number.""" + creditor_account_number: Required[str] + """The creditor's account number.""" - beneficiary_routing_number: Required[str] - """The drawdown request's beneficiary's routing number.""" + creditor_routing_number: Required[str] + """The creditor's routing number.""" currency: Required[str] """ @@ -23,65 +23,69 @@ class InboundWireDrawdownRequestCreateParams(TypedDict, total=False): requested. Will always be "USD". """ - message_to_recipient: Required[str] - """A message from the drawdown request's originator.""" - - originator_account_number: Required[str] - """The drawdown request's originator's account number.""" - - originator_routing_number: Required[str] - """The drawdown request's originator's routing number.""" - recipient_account_number_id: Required[str] """ The Account Number to which the recipient of this request is being requested to send funds from. """ - beneficiary_address_line1: str - """Line 1 of the drawdown request's beneficiary's address.""" - - beneficiary_address_line2: str - """Line 2 of the drawdown request's beneficiary's address.""" - - beneficiary_address_line3: str - """Line 3 of the drawdown request's beneficiary's address.""" - - beneficiary_name: str - """The drawdown request's beneficiary's name.""" + creditor_address_line1: str + """ + A free-form address field set by the sender representing the first line of the + creditor's address. + """ - originator_address_line1: str - """Line 1 of the drawdown request's originator's address.""" + creditor_address_line2: str + """ + A free-form address field set by the sender representing the second line of the + creditor's address. + """ - originator_address_line2: str - """Line 2 of the drawdown request's originator's address.""" + creditor_address_line3: str + """ + A free-form address field set by the sender representing the third line of the + creditor's address. + """ - originator_address_line3: str - """Line 3 of the drawdown request's originator's address.""" + creditor_name: str + """A free-form name field set by the sender representing the creditor's name.""" - originator_name: str - """The drawdown request's originator's name.""" + debtor_account_number: str + """The debtor's account number.""" - originator_to_beneficiary_information_line1: str + debtor_address_line1: str """ - Line 1 of the information conveyed from the originator of the message to the - beneficiary. + A free-form address field set by the sender representing the first line of the + debtor's address. """ - originator_to_beneficiary_information_line2: str + debtor_address_line2: str """ - Line 2 of the information conveyed from the originator of the message to the - beneficiary. + A free-form address field set by the sender representing the second line of the + debtor's address. """ - originator_to_beneficiary_information_line3: str - """ - Line 3 of the information conveyed from the originator of the message to the - beneficiary. - """ + debtor_address_line3: str + """A free-form address field set by the sender.""" + + debtor_name: str + """A free-form name field set by the sender representing the debtor's name.""" - originator_to_beneficiary_information_line4: str + debtor_routing_number: str + """The debtor's routing number.""" + + end_to_end_identification: str + """A free-form reference string set by the sender, to help identify the transfer.""" + + instruction_identification: str + """The sending bank's identifier for the wire transfer.""" + + unique_end_to_end_transaction_reference: str """ - Line 4 of the information conveyed from the originator of the message to the - beneficiary. + The Unique End-to-end Transaction Reference + ([UETR](https://www.swift.com/payments/what-unique-end-end-transaction-reference-uetr)) + of the transfer. """ + + unstructured_remittance_information: str + """A free-form message set by the sender.""" diff --git a/src/increase/types/transaction.py b/src/increase/types/transaction.py index 0b3762cf5..0af672c4a 100644 --- a/src/increase/types/transaction.py +++ b/src/increase/types/transaction.py @@ -54,7 +54,6 @@ "SourceInboundCheckAdjustment", "SourceInboundCheckDepositReturnIntention", "SourceInboundRealTimePaymentsTransferConfirmation", - "SourceInboundRealTimePaymentsTransferDecline", "SourceInboundWireReversal", "SourceInboundWireTransfer", "SourceInboundWireTransferReversal", @@ -2024,68 +2023,6 @@ class SourceInboundRealTimePaymentsTransferConfirmation(BaseModel): """The identifier of the Real-Time Payments Transfer that led to this Transaction.""" -class SourceInboundRealTimePaymentsTransferDecline(BaseModel): - amount: int - """The declined amount in the minor unit of the destination account currency. - - For dollars, for example, this is cents. - """ - - creditor_name: str - """The name the sender of the transfer specified as the recipient of the transfer.""" - - currency: Literal["CAD", "CHF", "EUR", "GBP", "JPY", "USD"] - """ - The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code of the declined - transfer's currency. This will always be "USD" for a Real-Time Payments - transfer. - - - `CAD` - Canadian Dollar (CAD) - - `CHF` - Swiss Franc (CHF) - - `EUR` - Euro (EUR) - - `GBP` - British Pound (GBP) - - `JPY` - Japanese Yen (JPY) - - `USD` - US Dollar (USD) - """ - - debtor_account_number: str - """The account number of the account that sent the transfer.""" - - debtor_name: str - """The name provided by the sender of the transfer.""" - - debtor_routing_number: str - """The routing number of the account that sent the transfer.""" - - reason: Literal[ - "account_number_canceled", - "account_number_disabled", - "account_restricted", - "group_locked", - "entity_not_active", - "real_time_payments_not_enabled", - ] - """Why the transfer was declined. - - - `account_number_canceled` - The account number is canceled. - - `account_number_disabled` - The account number is disabled. - - `account_restricted` - Your account is restricted. - - `group_locked` - Your account is inactive. - - `entity_not_active` - The account's entity is not active. - - `real_time_payments_not_enabled` - Your account is not enabled to receive - Real-Time Payments transfers. - """ - - remittance_information: Optional[str] = None - """Additional information included with the transfer.""" - - transaction_identification: str - """The Real-Time Payments network identification of the declined transfer.""" - - transfer_id: str - """The identifier of the Real-Time Payments Transfer that led to this Transaction.""" - - class SourceInboundWireReversal(BaseModel): amount: int """The amount that was reversed in USD cents.""" @@ -2494,7 +2431,6 @@ class Source(BaseModel): "inbound_check_deposit_return_intention", "inbound_check_adjustment", "inbound_real_time_payments_transfer_confirmation", - "inbound_real_time_payments_transfer_decline", "inbound_wire_reversal", "inbound_wire_transfer", "inbound_wire_transfer_reversal", @@ -2554,9 +2490,6 @@ class Source(BaseModel): - `inbound_real_time_payments_transfer_confirmation` - Inbound Real-Time Payments Transfer Confirmation: details will be under the `inbound_real_time_payments_transfer_confirmation` object. - - `inbound_real_time_payments_transfer_decline` - Inbound Real-Time Payments - Transfer Decline: details will be under the - `inbound_real_time_payments_transfer_decline` object. - `inbound_wire_reversal` - Inbound Wire Reversal: details will be under the `inbound_wire_reversal` object. - `inbound_wire_transfer` - Inbound Wire Transfer Intention: details will be @@ -2662,13 +2595,6 @@ class Source(BaseModel): transfer is initiated at another bank and received by Increase. """ - inbound_real_time_payments_transfer_decline: Optional[SourceInboundRealTimePaymentsTransferDecline] = None - """An Inbound Real-Time Payments Transfer Decline object. - - This field will be present in the JSON response if and only if `category` is - equal to `inbound_real_time_payments_transfer_decline`. - """ - inbound_wire_reversal: Optional[SourceInboundWireReversal] = None """An Inbound Wire Reversal object. diff --git a/src/increase/types/transaction_list_params.py b/src/increase/types/transaction_list_params.py index e7f4a3fa4..d975132b9 100644 --- a/src/increase/types/transaction_list_params.py +++ b/src/increase/types/transaction_list_params.py @@ -60,7 +60,6 @@ class TransactionListParams(TypedDict, total=False): "inbound_check_deposit_return_intention", "inbound_check_adjustment", "inbound_real_time_payments_transfer_confirmation", - "inbound_real_time_payments_transfer_decline", "inbound_wire_reversal", "inbound_wire_transfer", "inbound_wire_transfer_reversal", diff --git a/tests/api_resources/simulations/test_inbound_wire_drawdown_requests.py b/tests/api_resources/simulations/test_inbound_wire_drawdown_requests.py index 181c8e96e..7a3b305ec 100644 --- a/tests/api_resources/simulations/test_inbound_wire_drawdown_requests.py +++ b/tests/api_resources/simulations/test_inbound_wire_drawdown_requests.py @@ -21,12 +21,9 @@ class TestInboundWireDrawdownRequests: def test_method_create(self, client: Increase) -> None: inbound_wire_drawdown_request = client.simulations.inbound_wire_drawdown_requests.create( amount=10000, - beneficiary_account_number="987654321", - beneficiary_routing_number="101050001", + creditor_account_number="987654321", + creditor_routing_number="101050001", currency="USD", - message_to_recipient="Invoice 29582", - originator_account_number="987654321", - originator_routing_number="101050001", recipient_account_number_id="account_number_v18nkfqm6afpsrvy82b2", ) assert_matches_type(InboundWireDrawdownRequest, inbound_wire_drawdown_request, path=["response"]) @@ -35,25 +32,24 @@ def test_method_create(self, client: Increase) -> None: def test_method_create_with_all_params(self, client: Increase) -> None: inbound_wire_drawdown_request = client.simulations.inbound_wire_drawdown_requests.create( amount=10000, - beneficiary_account_number="987654321", - beneficiary_routing_number="101050001", + creditor_account_number="987654321", + creditor_routing_number="101050001", currency="USD", - message_to_recipient="Invoice 29582", - originator_account_number="987654321", - originator_routing_number="101050001", recipient_account_number_id="account_number_v18nkfqm6afpsrvy82b2", - beneficiary_address_line1="33 Liberty Street", - beneficiary_address_line2="New York, NY, 10045", - beneficiary_address_line3="x", - beneficiary_name="Ian Crease", - originator_address_line1="33 Liberty Street", - originator_address_line2="New York, NY, 10045", - originator_address_line3="x", - originator_name="Ian Crease", - originator_to_beneficiary_information_line1="x", - originator_to_beneficiary_information_line2="x", - originator_to_beneficiary_information_line3="x", - originator_to_beneficiary_information_line4="x", + creditor_address_line1="33 Liberty Street", + creditor_address_line2="New York, NY, 10045", + creditor_address_line3="x", + creditor_name="Ian Crease", + debtor_account_number="987654321", + debtor_address_line1="33 Liberty Street", + debtor_address_line2="New York, NY, 10045", + debtor_address_line3="x", + debtor_name="Ian Crease", + debtor_routing_number="101050001", + end_to_end_identification="x", + instruction_identification="x", + unique_end_to_end_transaction_reference="x", + unstructured_remittance_information="x", ) assert_matches_type(InboundWireDrawdownRequest, inbound_wire_drawdown_request, path=["response"]) @@ -61,12 +57,9 @@ def test_method_create_with_all_params(self, client: Increase) -> None: def test_raw_response_create(self, client: Increase) -> None: response = client.simulations.inbound_wire_drawdown_requests.with_raw_response.create( amount=10000, - beneficiary_account_number="987654321", - beneficiary_routing_number="101050001", + creditor_account_number="987654321", + creditor_routing_number="101050001", currency="USD", - message_to_recipient="Invoice 29582", - originator_account_number="987654321", - originator_routing_number="101050001", recipient_account_number_id="account_number_v18nkfqm6afpsrvy82b2", ) @@ -79,12 +72,9 @@ def test_raw_response_create(self, client: Increase) -> None: def test_streaming_response_create(self, client: Increase) -> None: with client.simulations.inbound_wire_drawdown_requests.with_streaming_response.create( amount=10000, - beneficiary_account_number="987654321", - beneficiary_routing_number="101050001", + creditor_account_number="987654321", + creditor_routing_number="101050001", currency="USD", - message_to_recipient="Invoice 29582", - originator_account_number="987654321", - originator_routing_number="101050001", recipient_account_number_id="account_number_v18nkfqm6afpsrvy82b2", ) as response: assert not response.is_closed @@ -105,12 +95,9 @@ class TestAsyncInboundWireDrawdownRequests: async def test_method_create(self, async_client: AsyncIncrease) -> None: inbound_wire_drawdown_request = await async_client.simulations.inbound_wire_drawdown_requests.create( amount=10000, - beneficiary_account_number="987654321", - beneficiary_routing_number="101050001", + creditor_account_number="987654321", + creditor_routing_number="101050001", currency="USD", - message_to_recipient="Invoice 29582", - originator_account_number="987654321", - originator_routing_number="101050001", recipient_account_number_id="account_number_v18nkfqm6afpsrvy82b2", ) assert_matches_type(InboundWireDrawdownRequest, inbound_wire_drawdown_request, path=["response"]) @@ -119,25 +106,24 @@ async def test_method_create(self, async_client: AsyncIncrease) -> None: async def test_method_create_with_all_params(self, async_client: AsyncIncrease) -> None: inbound_wire_drawdown_request = await async_client.simulations.inbound_wire_drawdown_requests.create( amount=10000, - beneficiary_account_number="987654321", - beneficiary_routing_number="101050001", + creditor_account_number="987654321", + creditor_routing_number="101050001", currency="USD", - message_to_recipient="Invoice 29582", - originator_account_number="987654321", - originator_routing_number="101050001", recipient_account_number_id="account_number_v18nkfqm6afpsrvy82b2", - beneficiary_address_line1="33 Liberty Street", - beneficiary_address_line2="New York, NY, 10045", - beneficiary_address_line3="x", - beneficiary_name="Ian Crease", - originator_address_line1="33 Liberty Street", - originator_address_line2="New York, NY, 10045", - originator_address_line3="x", - originator_name="Ian Crease", - originator_to_beneficiary_information_line1="x", - originator_to_beneficiary_information_line2="x", - originator_to_beneficiary_information_line3="x", - originator_to_beneficiary_information_line4="x", + creditor_address_line1="33 Liberty Street", + creditor_address_line2="New York, NY, 10045", + creditor_address_line3="x", + creditor_name="Ian Crease", + debtor_account_number="987654321", + debtor_address_line1="33 Liberty Street", + debtor_address_line2="New York, NY, 10045", + debtor_address_line3="x", + debtor_name="Ian Crease", + debtor_routing_number="101050001", + end_to_end_identification="x", + instruction_identification="x", + unique_end_to_end_transaction_reference="x", + unstructured_remittance_information="x", ) assert_matches_type(InboundWireDrawdownRequest, inbound_wire_drawdown_request, path=["response"]) @@ -145,12 +131,9 @@ async def test_method_create_with_all_params(self, async_client: AsyncIncrease) async def test_raw_response_create(self, async_client: AsyncIncrease) -> None: response = await async_client.simulations.inbound_wire_drawdown_requests.with_raw_response.create( amount=10000, - beneficiary_account_number="987654321", - beneficiary_routing_number="101050001", + creditor_account_number="987654321", + creditor_routing_number="101050001", currency="USD", - message_to_recipient="Invoice 29582", - originator_account_number="987654321", - originator_routing_number="101050001", recipient_account_number_id="account_number_v18nkfqm6afpsrvy82b2", ) @@ -163,12 +146,9 @@ async def test_raw_response_create(self, async_client: AsyncIncrease) -> None: async def test_streaming_response_create(self, async_client: AsyncIncrease) -> None: async with async_client.simulations.inbound_wire_drawdown_requests.with_streaming_response.create( amount=10000, - beneficiary_account_number="987654321", - beneficiary_routing_number="101050001", + creditor_account_number="987654321", + creditor_routing_number="101050001", currency="USD", - message_to_recipient="Invoice 29582", - originator_account_number="987654321", - originator_routing_number="101050001", recipient_account_number_id="account_number_v18nkfqm6afpsrvy82b2", ) as response: assert not response.is_closed diff --git a/tests/api_resources/simulations/test_wire_drawdown_requests.py b/tests/api_resources/simulations/test_wire_drawdown_requests.py index 938fd5a3f..2a2c3172b 100644 --- a/tests/api_resources/simulations/test_wire_drawdown_requests.py +++ b/tests/api_resources/simulations/test_wire_drawdown_requests.py @@ -57,6 +57,46 @@ def test_path_params_refuse(self, client: Increase) -> None: "", ) + @parametrize + def test_method_submit(self, client: Increase) -> None: + wire_drawdown_request = client.simulations.wire_drawdown_requests.submit( + "wire_drawdown_request_id", + ) + assert_matches_type(WireDrawdownRequest, wire_drawdown_request, path=["response"]) + + @parametrize + def test_raw_response_submit(self, client: Increase) -> None: + response = client.simulations.wire_drawdown_requests.with_raw_response.submit( + "wire_drawdown_request_id", + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + wire_drawdown_request = response.parse() + assert_matches_type(WireDrawdownRequest, wire_drawdown_request, path=["response"]) + + @parametrize + def test_streaming_response_submit(self, client: Increase) -> None: + with client.simulations.wire_drawdown_requests.with_streaming_response.submit( + "wire_drawdown_request_id", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + wire_drawdown_request = response.parse() + assert_matches_type(WireDrawdownRequest, wire_drawdown_request, path=["response"]) + + assert cast(Any, response.is_closed) is True + + @parametrize + def test_path_params_submit(self, client: Increase) -> None: + with pytest.raises( + ValueError, match=r"Expected a non-empty value for `wire_drawdown_request_id` but received ''" + ): + client.simulations.wire_drawdown_requests.with_raw_response.submit( + "", + ) + class TestAsyncWireDrawdownRequests: parametrize = pytest.mark.parametrize( @@ -102,3 +142,43 @@ async def test_path_params_refuse(self, async_client: AsyncIncrease) -> None: await async_client.simulations.wire_drawdown_requests.with_raw_response.refuse( "", ) + + @parametrize + async def test_method_submit(self, async_client: AsyncIncrease) -> None: + wire_drawdown_request = await async_client.simulations.wire_drawdown_requests.submit( + "wire_drawdown_request_id", + ) + assert_matches_type(WireDrawdownRequest, wire_drawdown_request, path=["response"]) + + @parametrize + async def test_raw_response_submit(self, async_client: AsyncIncrease) -> None: + response = await async_client.simulations.wire_drawdown_requests.with_raw_response.submit( + "wire_drawdown_request_id", + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + wire_drawdown_request = await response.parse() + assert_matches_type(WireDrawdownRequest, wire_drawdown_request, path=["response"]) + + @parametrize + async def test_streaming_response_submit(self, async_client: AsyncIncrease) -> None: + async with async_client.simulations.wire_drawdown_requests.with_streaming_response.submit( + "wire_drawdown_request_id", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + wire_drawdown_request = await response.parse() + assert_matches_type(WireDrawdownRequest, wire_drawdown_request, path=["response"]) + + assert cast(Any, response.is_closed) is True + + @parametrize + async def test_path_params_submit(self, async_client: AsyncIncrease) -> None: + with pytest.raises( + ValueError, match=r"Expected a non-empty value for `wire_drawdown_request_id` but received ''" + ): + await async_client.simulations.wire_drawdown_requests.with_raw_response.submit( + "", + )