From a6837bcb1f4ab0d357274b86f098ccd636ddb467 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 19 Mar 2026 15:43:28 +0000 Subject: [PATCH 1/2] fix: sanitize endpoint path params --- src/increase/_utils/__init__.py | 1 + src/increase/_utils/_path.py | 127 ++++++++++++++++++ src/increase/resources/account_numbers.py | 10 +- src/increase/resources/account_statements.py | 6 +- src/increase/resources/account_transfers.py | 14 +- src/increase/resources/accounts.py | 18 +-- .../resources/ach_prenotifications.py | 10 +- src/increase/resources/ach_transfers.py | 14 +- src/increase/resources/beneficial_owners.py | 32 ++++- .../resources/bookkeeping_accounts.py | 18 ++- src/increase/resources/bookkeeping_entries.py | 6 +- .../resources/bookkeeping_entry_sets.py | 10 +- src/increase/resources/card_disputes.py | 14 +- src/increase/resources/card_payments.py | 6 +- .../resources/card_purchase_supplements.py | 12 +- src/increase/resources/card_push_transfers.py | 22 ++- src/increase/resources/card_tokens.py | 10 +- src/increase/resources/card_validations.py | 6 +- src/increase/resources/cards.py | 22 +-- src/increase/resources/check_deposits.py | 6 +- src/increase/resources/check_transfers.py | 18 +-- .../resources/declined_transactions.py | 10 +- .../resources/digital_card_profiles.py | 30 ++++- .../resources/digital_wallet_tokens.py | 10 +- src/increase/resources/entities.py | 14 +- src/increase/resources/event_subscriptions.py | 10 +- src/increase/resources/events.py | 6 +- src/increase/resources/exports.py | 6 +- src/increase/resources/external_accounts.py | 10 +- src/increase/resources/fednow_transfers.py | 14 +- src/increase/resources/files.py | 6 +- .../resources/inbound_ach_transfers.py | 40 ++++-- .../resources/inbound_check_deposits.py | 30 ++++- .../resources/inbound_fednow_transfers.py | 12 +- src/increase/resources/inbound_mail_items.py | 14 +- .../inbound_real_time_payments_transfers.py | 12 +- .../inbound_wire_drawdown_requests.py | 12 +- .../resources/inbound_wire_transfers.py | 20 ++- .../resources/intrafi_account_enrollments.py | 22 ++- src/increase/resources/intrafi_balances.py | 5 +- src/increase/resources/intrafi_exclusions.py | 14 +- src/increase/resources/lockboxes.py | 10 +- src/increase/resources/oauth_applications.py | 6 +- src/increase/resources/oauth_connections.py | 6 +- .../resources/pending_transactions.py | 18 ++- .../resources/physical_card_profiles.py | 30 ++++- src/increase/resources/physical_cards.py | 10 +- src/increase/resources/programs.py | 6 +- src/increase/resources/real_time_decisions.py | 14 +- .../resources/real_time_payments_transfers.py | 32 ++++- .../simulations/account_transfers.py | 9 +- .../resources/simulations/ach_transfers.py | 28 ++-- .../simulations/card_authentications.py | 20 ++- .../resources/simulations/card_disputes.py | 6 +- .../resources/simulations/check_deposits.py | 22 +-- .../resources/simulations/check_transfers.py | 5 +- .../simulations/inbound_check_deposits.py | 12 +- .../simulations/pending_transactions.py | 11 +- .../resources/simulations/physical_cards.py | 18 ++- .../real_time_payments_transfers.py | 12 +- .../simulations/wire_drawdown_requests.py | 21 ++- .../resources/simulations/wire_transfers.py | 9 +- src/increase/resources/swift_transfers.py | 14 +- src/increase/resources/transactions.py | 6 +- .../resources/wire_drawdown_requests.py | 10 +- src/increase/resources/wire_transfers.py | 14 +- tests/test_utils/test_path.py | 89 ++++++++++++ 67 files changed, 805 insertions(+), 312 deletions(-) create mode 100644 src/increase/_utils/_path.py create mode 100644 tests/test_utils/test_path.py diff --git a/src/increase/_utils/__init__.py b/src/increase/_utils/__init__.py index dc64e29a1..10cb66d2d 100644 --- a/src/increase/_utils/__init__.py +++ b/src/increase/_utils/__init__.py @@ -1,3 +1,4 @@ +from ._path import path_template as path_template from ._sync import asyncify as asyncify from ._proxy import LazyProxy as LazyProxy from ._utils import ( diff --git a/src/increase/_utils/_path.py b/src/increase/_utils/_path.py new file mode 100644 index 000000000..4d6e1e4cb --- /dev/null +++ b/src/increase/_utils/_path.py @@ -0,0 +1,127 @@ +from __future__ import annotations + +import re +from typing import ( + Any, + Mapping, + Callable, +) +from urllib.parse import quote + +# Matches '.' or '..' where each dot is either literal or percent-encoded (%2e / %2E). +_DOT_SEGMENT_RE = re.compile(r"^(?:\.|%2[eE]){1,2}$") + +_PLACEHOLDER_RE = re.compile(r"\{(\w+)\}") + + +def _quote_path_segment_part(value: str) -> str: + """Percent-encode `value` for use in a URI path segment. + + Considers characters not in `pchar` set from RFC 3986 §3.3 to be unsafe. + https://datatracker.ietf.org/doc/html/rfc3986#section-3.3 + """ + # quote() already treats unreserved characters (letters, digits, and -._~) + # as safe, so we only need to add sub-delims, ':', and '@'. + # Notably, unlike the default `safe` for quote(), / is unsafe and must be quoted. + return quote(value, safe="!$&'()*+,;=:@") + + +def _quote_query_part(value: str) -> str: + """Percent-encode `value` for use in a URI query string. + + Considers &, = and characters not in `query` set from RFC 3986 §3.4 to be unsafe. + https://datatracker.ietf.org/doc/html/rfc3986#section-3.4 + """ + return quote(value, safe="!$'()*+,;:@/?") + + +def _quote_fragment_part(value: str) -> str: + """Percent-encode `value` for use in a URI fragment. + + Considers characters not in `fragment` set from RFC 3986 §3.5 to be unsafe. + https://datatracker.ietf.org/doc/html/rfc3986#section-3.5 + """ + return quote(value, safe="!$&'()*+,;=:@/?") + + +def _interpolate( + template: str, + values: Mapping[str, Any], + quoter: Callable[[str], str], +) -> str: + """Replace {name} placeholders in `template`, quoting each value with `quoter`. + + Placeholder names are looked up in `values`. + + Raises: + KeyError: If a placeholder is not found in `values`. + """ + # re.split with a capturing group returns alternating + # [text, name, text, name, ..., text] elements. + parts = _PLACEHOLDER_RE.split(template) + + for i in range(1, len(parts), 2): + name = parts[i] + if name not in values: + raise KeyError(f"a value for placeholder {{{name}}} was not provided") + val = values[name] + if val is None: + parts[i] = "null" + elif isinstance(val, bool): + parts[i] = "true" if val else "false" + else: + parts[i] = quoter(str(values[name])) + + return "".join(parts) + + +def path_template(template: str, /, **kwargs: Any) -> str: + """Interpolate {name} placeholders in `template` from keyword arguments. + + Args: + template: The template string containing {name} placeholders. + **kwargs: Keyword arguments to interpolate into the template. + + Returns: + The template with placeholders interpolated and percent-encoded. + + Safe characters for percent-encoding are dependent on the URI component. + Placeholders in path and fragment portions are percent-encoded where the `segment` + and `fragment` sets from RFC 3986 respectively are considered safe. + Placeholders in the query portion are percent-encoded where the `query` set from + RFC 3986 §3.3 is considered safe except for = and & characters. + + Raises: + KeyError: If a placeholder is not found in `kwargs`. + ValueError: If resulting path contains /./ or /../ segments (including percent-encoded dot-segments). + """ + # Split the template into path, query, and fragment portions. + fragment_template: str | None = None + query_template: str | None = None + + rest = template + if "#" in rest: + rest, fragment_template = rest.split("#", 1) + if "?" in rest: + rest, query_template = rest.split("?", 1) + path_template = rest + + # Interpolate each portion with the appropriate quoting rules. + path_result = _interpolate(path_template, kwargs, _quote_path_segment_part) + + # Reject dot-segments (. and ..) in the final assembled path. The check + # runs after interpolation so that adjacent placeholders or a mix of static + # text and placeholders that together form a dot-segment are caught. + # Also reject percent-encoded dot-segments to protect against incorrectly + # implemented normalization in servers/proxies. + for segment in path_result.split("/"): + if _DOT_SEGMENT_RE.match(segment): + raise ValueError(f"Constructed path {path_result!r} contains dot-segment {segment!r} which is not allowed") + + result = path_result + if query_template is not None: + result += "?" + _interpolate(query_template, kwargs, _quote_query_part) + if fragment_template is not None: + result += "#" + _interpolate(fragment_template, kwargs, _quote_fragment_part) + + return result diff --git a/src/increase/resources/account_numbers.py b/src/increase/resources/account_numbers.py index fa2474e34..73d8fb9db 100644 --- a/src/increase/resources/account_numbers.py +++ b/src/increase/resources/account_numbers.py @@ -8,7 +8,7 @@ from ..types import account_number_list_params, account_number_create_params, account_number_update_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -131,7 +131,7 @@ def retrieve( if not account_number_id: raise ValueError(f"Expected a non-empty value for `account_number_id` but received {account_number_id!r}") return self._get( - f"/account_numbers/{account_number_id}", + path_template("/account_numbers/{account_number_id}", account_number_id=account_number_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -186,7 +186,7 @@ def update( if not account_number_id: raise ValueError(f"Expected a non-empty value for `account_number_id` but received {account_number_id!r}") return self._patch( - f"/account_numbers/{account_number_id}", + path_template("/account_numbers/{account_number_id}", account_number_id=account_number_id), body=maybe_transform( { "inbound_ach": inbound_ach, @@ -379,7 +379,7 @@ async def retrieve( if not account_number_id: raise ValueError(f"Expected a non-empty value for `account_number_id` but received {account_number_id!r}") return await self._get( - f"/account_numbers/{account_number_id}", + path_template("/account_numbers/{account_number_id}", account_number_id=account_number_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -434,7 +434,7 @@ async def update( if not account_number_id: raise ValueError(f"Expected a non-empty value for `account_number_id` but received {account_number_id!r}") return await self._patch( - f"/account_numbers/{account_number_id}", + path_template("/account_numbers/{account_number_id}", account_number_id=account_number_id), body=await async_maybe_transform( { "inbound_ach": inbound_ach, diff --git a/src/increase/resources/account_statements.py b/src/increase/resources/account_statements.py index 879016421..5812d40f2 100644 --- a/src/increase/resources/account_statements.py +++ b/src/increase/resources/account_statements.py @@ -6,7 +6,7 @@ from ..types import account_statement_list_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform +from .._utils import path_template, maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -72,7 +72,7 @@ def retrieve( f"Expected a non-empty value for `account_statement_id` but received {account_statement_id!r}" ) return self._get( - f"/account_statements/{account_statement_id}", + path_template("/account_statements/{account_statement_id}", account_statement_id=account_statement_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -184,7 +184,7 @@ async def retrieve( f"Expected a non-empty value for `account_statement_id` but received {account_statement_id!r}" ) return await self._get( - f"/account_statements/{account_statement_id}", + path_template("/account_statements/{account_statement_id}", account_statement_id=account_statement_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/account_transfers.py b/src/increase/resources/account_transfers.py index 6aa93303e..df0901fcf 100644 --- a/src/increase/resources/account_transfers.py +++ b/src/increase/resources/account_transfers.py @@ -6,7 +6,7 @@ from ..types import account_transfer_list_params, account_transfer_create_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -138,7 +138,7 @@ def retrieve( f"Expected a non-empty value for `account_transfer_id` but received {account_transfer_id!r}" ) return self._get( - f"/account_transfers/{account_transfer_id}", + path_template("/account_transfers/{account_transfer_id}", account_transfer_id=account_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -239,7 +239,7 @@ def approve( f"Expected a non-empty value for `account_transfer_id` but received {account_transfer_id!r}" ) return self._post( - f"/account_transfers/{account_transfer_id}/approve", + path_template("/account_transfers/{account_transfer_id}/approve", account_transfer_id=account_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -283,7 +283,7 @@ def cancel( f"Expected a non-empty value for `account_transfer_id` but received {account_transfer_id!r}" ) return self._post( - f"/account_transfers/{account_transfer_id}/cancel", + path_template("/account_transfers/{account_transfer_id}/cancel", account_transfer_id=account_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -411,7 +411,7 @@ async def retrieve( f"Expected a non-empty value for `account_transfer_id` but received {account_transfer_id!r}" ) return await self._get( - f"/account_transfers/{account_transfer_id}", + path_template("/account_transfers/{account_transfer_id}", account_transfer_id=account_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -512,7 +512,7 @@ async def approve( f"Expected a non-empty value for `account_transfer_id` but received {account_transfer_id!r}" ) return await self._post( - f"/account_transfers/{account_transfer_id}/approve", + path_template("/account_transfers/{account_transfer_id}/approve", account_transfer_id=account_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -556,7 +556,7 @@ async def cancel( f"Expected a non-empty value for `account_transfer_id` but received {account_transfer_id!r}" ) return await self._post( - f"/account_transfers/{account_transfer_id}/cancel", + path_template("/account_transfers/{account_transfer_id}/cancel", account_transfer_id=account_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/accounts.py b/src/increase/resources/accounts.py index 7fe998692..8d72838a7 100644 --- a/src/increase/resources/accounts.py +++ b/src/increase/resources/accounts.py @@ -10,7 +10,7 @@ from ..types import account_list_params, account_create_params, account_update_params, account_balance_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -147,7 +147,7 @@ def retrieve( if not account_id: raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}") return self._get( - f"/accounts/{account_id}", + path_template("/accounts/{account_id}", account_id=account_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -191,7 +191,7 @@ def update( if not account_id: raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}") return self._patch( - f"/accounts/{account_id}", + path_template("/accounts/{account_id}", account_id=account_id), body=maybe_transform( { "loan": loan, @@ -312,7 +312,7 @@ def balance( if not account_id: raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}") return self._get( - f"/accounts/{account_id}/balance", + path_template("/accounts/{account_id}/balance", account_id=account_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -355,7 +355,7 @@ def close( if not account_id: raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}") return self._post( - f"/accounts/{account_id}/close", + path_template("/accounts/{account_id}/close", account_id=account_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -487,7 +487,7 @@ async def retrieve( if not account_id: raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}") return await self._get( - f"/accounts/{account_id}", + path_template("/accounts/{account_id}", account_id=account_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -531,7 +531,7 @@ async def update( if not account_id: raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}") return await self._patch( - f"/accounts/{account_id}", + path_template("/accounts/{account_id}", account_id=account_id), body=await async_maybe_transform( { "loan": loan, @@ -652,7 +652,7 @@ async def balance( if not account_id: raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}") return await self._get( - f"/accounts/{account_id}/balance", + path_template("/accounts/{account_id}/balance", account_id=account_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -695,7 +695,7 @@ async def close( if not account_id: raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}") return await self._post( - f"/accounts/{account_id}/close", + path_template("/accounts/{account_id}/close", account_id=account_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/ach_prenotifications.py b/src/increase/resources/ach_prenotifications.py index 04c6bbdd5..519363f54 100644 --- a/src/increase/resources/ach_prenotifications.py +++ b/src/increase/resources/ach_prenotifications.py @@ -10,7 +10,7 @@ from ..types import ach_prenotification_list_params, ach_prenotification_create_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -196,7 +196,9 @@ def retrieve( f"Expected a non-empty value for `ach_prenotification_id` but received {ach_prenotification_id!r}" ) return self._get( - f"/ach_prenotifications/{ach_prenotification_id}", + path_template( + "/ach_prenotifications/{ach_prenotification_id}", ach_prenotification_id=ach_prenotification_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -431,7 +433,9 @@ async def retrieve( f"Expected a non-empty value for `ach_prenotification_id` but received {ach_prenotification_id!r}" ) return await self._get( - f"/ach_prenotifications/{ach_prenotification_id}", + path_template( + "/ach_prenotifications/{ach_prenotification_id}", ach_prenotification_id=ach_prenotification_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/ach_transfers.py b/src/increase/resources/ach_transfers.py index 04b4d624b..a8611e0e9 100644 --- a/src/increase/resources/ach_transfers.py +++ b/src/increase/resources/ach_transfers.py @@ -8,7 +8,7 @@ from ..types import ach_transfer_list_params, ach_transfer_create_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -242,7 +242,7 @@ def retrieve( if not ach_transfer_id: raise ValueError(f"Expected a non-empty value for `ach_transfer_id` but received {ach_transfer_id!r}") return self._get( - f"/ach_transfers/{ach_transfer_id}", + path_template("/ach_transfers/{ach_transfer_id}", ach_transfer_id=ach_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -347,7 +347,7 @@ def approve( if not ach_transfer_id: raise ValueError(f"Expected a non-empty value for `ach_transfer_id` but received {ach_transfer_id!r}") return self._post( - f"/ach_transfers/{ach_transfer_id}/approve", + path_template("/ach_transfers/{ach_transfer_id}/approve", ach_transfer_id=ach_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -389,7 +389,7 @@ def cancel( if not ach_transfer_id: raise ValueError(f"Expected a non-empty value for `ach_transfer_id` but received {ach_transfer_id!r}") return self._post( - f"/ach_transfers/{ach_transfer_id}/cancel", + path_template("/ach_transfers/{ach_transfer_id}/cancel", ach_transfer_id=ach_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -619,7 +619,7 @@ async def retrieve( if not ach_transfer_id: raise ValueError(f"Expected a non-empty value for `ach_transfer_id` but received {ach_transfer_id!r}") return await self._get( - f"/ach_transfers/{ach_transfer_id}", + path_template("/ach_transfers/{ach_transfer_id}", ach_transfer_id=ach_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -724,7 +724,7 @@ async def approve( if not ach_transfer_id: raise ValueError(f"Expected a non-empty value for `ach_transfer_id` but received {ach_transfer_id!r}") return await self._post( - f"/ach_transfers/{ach_transfer_id}/approve", + path_template("/ach_transfers/{ach_transfer_id}/approve", ach_transfer_id=ach_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -766,7 +766,7 @@ async def cancel( if not ach_transfer_id: raise ValueError(f"Expected a non-empty value for `ach_transfer_id` but received {ach_transfer_id!r}") return await self._post( - f"/ach_transfers/{ach_transfer_id}/cancel", + path_template("/ach_transfers/{ach_transfer_id}/cancel", ach_transfer_id=ach_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/beneficial_owners.py b/src/increase/resources/beneficial_owners.py index c5117b765..f7142ea39 100644 --- a/src/increase/resources/beneficial_owners.py +++ b/src/increase/resources/beneficial_owners.py @@ -9,7 +9,7 @@ from ..types import beneficial_owner_list_params, beneficial_owner_create_params, beneficial_owner_update_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -135,7 +135,10 @@ def retrieve( f"Expected a non-empty value for `entity_beneficial_owner_id` but received {entity_beneficial_owner_id!r}" ) return self._get( - f"/entity_beneficial_owners/{entity_beneficial_owner_id}", + path_template( + "/entity_beneficial_owners/{entity_beneficial_owner_id}", + entity_beneficial_owner_id=entity_beneficial_owner_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -191,7 +194,10 @@ def update( f"Expected a non-empty value for `entity_beneficial_owner_id` but received {entity_beneficial_owner_id!r}" ) return self._patch( - f"/entity_beneficial_owners/{entity_beneficial_owner_id}", + path_template( + "/entity_beneficial_owners/{entity_beneficial_owner_id}", + entity_beneficial_owner_id=entity_beneficial_owner_id, + ), body=maybe_transform( { "address": address, @@ -304,7 +310,10 @@ def archive( f"Expected a non-empty value for `entity_beneficial_owner_id` but received {entity_beneficial_owner_id!r}" ) return self._post( - f"/entity_beneficial_owners/{entity_beneficial_owner_id}/archive", + path_template( + "/entity_beneficial_owners/{entity_beneficial_owner_id}/archive", + entity_beneficial_owner_id=entity_beneficial_owner_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -426,7 +435,10 @@ async def retrieve( f"Expected a non-empty value for `entity_beneficial_owner_id` but received {entity_beneficial_owner_id!r}" ) return await self._get( - f"/entity_beneficial_owners/{entity_beneficial_owner_id}", + path_template( + "/entity_beneficial_owners/{entity_beneficial_owner_id}", + entity_beneficial_owner_id=entity_beneficial_owner_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -482,7 +494,10 @@ async def update( f"Expected a non-empty value for `entity_beneficial_owner_id` but received {entity_beneficial_owner_id!r}" ) return await self._patch( - f"/entity_beneficial_owners/{entity_beneficial_owner_id}", + path_template( + "/entity_beneficial_owners/{entity_beneficial_owner_id}", + entity_beneficial_owner_id=entity_beneficial_owner_id, + ), body=await async_maybe_transform( { "address": address, @@ -595,7 +610,10 @@ async def archive( f"Expected a non-empty value for `entity_beneficial_owner_id` but received {entity_beneficial_owner_id!r}" ) return await self._post( - f"/entity_beneficial_owners/{entity_beneficial_owner_id}/archive", + path_template( + "/entity_beneficial_owners/{entity_beneficial_owner_id}/archive", + entity_beneficial_owner_id=entity_beneficial_owner_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/bookkeeping_accounts.py b/src/increase/resources/bookkeeping_accounts.py index 238915094..3221f85ce 100644 --- a/src/increase/resources/bookkeeping_accounts.py +++ b/src/increase/resources/bookkeeping_accounts.py @@ -15,7 +15,7 @@ bookkeeping_account_balance_params, ) from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -149,7 +149,9 @@ def update( f"Expected a non-empty value for `bookkeeping_account_id` but received {bookkeeping_account_id!r}" ) return self._patch( - f"/bookkeeping_accounts/{bookkeeping_account_id}", + path_template( + "/bookkeeping_accounts/{bookkeeping_account_id}", bookkeeping_account_id=bookkeeping_account_id + ), body=maybe_transform({"name": name}, bookkeeping_account_update_params.BookkeepingAccountUpdateParams), options=make_request_options( extra_headers=extra_headers, @@ -249,7 +251,9 @@ def balance( f"Expected a non-empty value for `bookkeeping_account_id` but received {bookkeeping_account_id!r}" ) return self._get( - f"/bookkeeping_accounts/{bookkeeping_account_id}/balance", + path_template( + "/bookkeeping_accounts/{bookkeeping_account_id}/balance", bookkeeping_account_id=bookkeeping_account_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -380,7 +384,9 @@ async def update( f"Expected a non-empty value for `bookkeeping_account_id` but received {bookkeeping_account_id!r}" ) return await self._patch( - f"/bookkeeping_accounts/{bookkeeping_account_id}", + path_template( + "/bookkeeping_accounts/{bookkeeping_account_id}", bookkeeping_account_id=bookkeeping_account_id + ), body=await async_maybe_transform( {"name": name}, bookkeeping_account_update_params.BookkeepingAccountUpdateParams ), @@ -482,7 +488,9 @@ async def balance( f"Expected a non-empty value for `bookkeeping_account_id` but received {bookkeeping_account_id!r}" ) return await self._get( - f"/bookkeeping_accounts/{bookkeeping_account_id}/balance", + path_template( + "/bookkeeping_accounts/{bookkeeping_account_id}/balance", bookkeeping_account_id=bookkeeping_account_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/bookkeeping_entries.py b/src/increase/resources/bookkeeping_entries.py index 56be104f3..906f6f9dd 100644 --- a/src/increase/resources/bookkeeping_entries.py +++ b/src/increase/resources/bookkeeping_entries.py @@ -6,7 +6,7 @@ from ..types import bookkeeping_entry_list_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform +from .._utils import path_template, maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -72,7 +72,7 @@ def retrieve( f"Expected a non-empty value for `bookkeeping_entry_id` but received {bookkeeping_entry_id!r}" ) return self._get( - f"/bookkeeping_entries/{bookkeeping_entry_id}", + path_template("/bookkeeping_entries/{bookkeeping_entry_id}", bookkeeping_entry_id=bookkeeping_entry_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -182,7 +182,7 @@ async def retrieve( f"Expected a non-empty value for `bookkeeping_entry_id` but received {bookkeeping_entry_id!r}" ) return await self._get( - f"/bookkeeping_entries/{bookkeeping_entry_id}", + path_template("/bookkeeping_entries/{bookkeeping_entry_id}", bookkeeping_entry_id=bookkeeping_entry_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/bookkeeping_entry_sets.py b/src/increase/resources/bookkeeping_entry_sets.py index c437c6185..ad50df6a3 100644 --- a/src/increase/resources/bookkeeping_entry_sets.py +++ b/src/increase/resources/bookkeeping_entry_sets.py @@ -9,7 +9,7 @@ from ..types import bookkeeping_entry_set_list_params, bookkeeping_entry_set_create_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -130,7 +130,9 @@ def retrieve( f"Expected a non-empty value for `bookkeeping_entry_set_id` but received {bookkeeping_entry_set_id!r}" ) return self._get( - f"/bookkeeping_entry_sets/{bookkeeping_entry_set_id}", + path_template( + "/bookkeeping_entry_sets/{bookkeeping_entry_set_id}", bookkeeping_entry_set_id=bookkeeping_entry_set_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -302,7 +304,9 @@ async def retrieve( f"Expected a non-empty value for `bookkeeping_entry_set_id` but received {bookkeeping_entry_set_id!r}" ) return await self._get( - f"/bookkeeping_entry_sets/{bookkeeping_entry_set_id}", + path_template( + "/bookkeeping_entry_sets/{bookkeeping_entry_set_id}", bookkeeping_entry_set_id=bookkeeping_entry_set_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/card_disputes.py b/src/increase/resources/card_disputes.py index bfdbc27e1..7e661452b 100644 --- a/src/increase/resources/card_disputes.py +++ b/src/increase/resources/card_disputes.py @@ -14,7 +14,7 @@ card_dispute_submit_user_submission_params, ) from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -153,7 +153,7 @@ def retrieve( if not card_dispute_id: raise ValueError(f"Expected a non-empty value for `card_dispute_id` but received {card_dispute_id!r}") return self._get( - f"/card_disputes/{card_dispute_id}", + path_template("/card_disputes/{card_dispute_id}", card_dispute_id=card_dispute_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -273,7 +273,7 @@ def submit_user_submission( if not card_dispute_id: raise ValueError(f"Expected a non-empty value for `card_dispute_id` but received {card_dispute_id!r}") return self._post( - f"/card_disputes/{card_dispute_id}/submit_user_submission", + path_template("/card_disputes/{card_dispute_id}/submit_user_submission", card_dispute_id=card_dispute_id), body=maybe_transform( { "network": network, @@ -328,7 +328,7 @@ def withdraw( if not card_dispute_id: raise ValueError(f"Expected a non-empty value for `card_dispute_id` but received {card_dispute_id!r}") return self._post( - f"/card_disputes/{card_dispute_id}/withdraw", + path_template("/card_disputes/{card_dispute_id}/withdraw", card_dispute_id=card_dispute_id), body=maybe_transform({"explanation": explanation}, card_dispute_withdraw_params.CardDisputeWithdrawParams), options=make_request_options( extra_headers=extra_headers, @@ -464,7 +464,7 @@ async def retrieve( if not card_dispute_id: raise ValueError(f"Expected a non-empty value for `card_dispute_id` but received {card_dispute_id!r}") return await self._get( - f"/card_disputes/{card_dispute_id}", + path_template("/card_disputes/{card_dispute_id}", card_dispute_id=card_dispute_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -584,7 +584,7 @@ async def submit_user_submission( if not card_dispute_id: raise ValueError(f"Expected a non-empty value for `card_dispute_id` but received {card_dispute_id!r}") return await self._post( - f"/card_disputes/{card_dispute_id}/submit_user_submission", + path_template("/card_disputes/{card_dispute_id}/submit_user_submission", card_dispute_id=card_dispute_id), body=await async_maybe_transform( { "network": network, @@ -639,7 +639,7 @@ async def withdraw( if not card_dispute_id: raise ValueError(f"Expected a non-empty value for `card_dispute_id` but received {card_dispute_id!r}") return await self._post( - f"/card_disputes/{card_dispute_id}/withdraw", + path_template("/card_disputes/{card_dispute_id}/withdraw", card_dispute_id=card_dispute_id), body=await async_maybe_transform( {"explanation": explanation}, card_dispute_withdraw_params.CardDisputeWithdrawParams ), diff --git a/src/increase/resources/card_payments.py b/src/increase/resources/card_payments.py index c314d0e6c..bfcfb162b 100644 --- a/src/increase/resources/card_payments.py +++ b/src/increase/resources/card_payments.py @@ -6,7 +6,7 @@ from ..types import card_payment_list_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform +from .._utils import path_template, maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -70,7 +70,7 @@ def retrieve( if not card_payment_id: raise ValueError(f"Expected a non-empty value for `card_payment_id` but received {card_payment_id!r}") return self._get( - f"/card_payments/{card_payment_id}", + path_template("/card_payments/{card_payment_id}", card_payment_id=card_payment_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -184,7 +184,7 @@ async def retrieve( if not card_payment_id: raise ValueError(f"Expected a non-empty value for `card_payment_id` but received {card_payment_id!r}") return await self._get( - f"/card_payments/{card_payment_id}", + path_template("/card_payments/{card_payment_id}", card_payment_id=card_payment_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/card_purchase_supplements.py b/src/increase/resources/card_purchase_supplements.py index c768f0946..a2d954b80 100644 --- a/src/increase/resources/card_purchase_supplements.py +++ b/src/increase/resources/card_purchase_supplements.py @@ -6,7 +6,7 @@ from ..types import card_purchase_supplement_list_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform +from .._utils import path_template, maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -72,7 +72,10 @@ def retrieve( f"Expected a non-empty value for `card_purchase_supplement_id` but received {card_purchase_supplement_id!r}" ) return self._get( - f"/card_purchase_supplements/{card_purchase_supplement_id}", + path_template( + "/card_purchase_supplements/{card_purchase_supplement_id}", + card_purchase_supplement_id=card_purchase_supplement_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -185,7 +188,10 @@ async def retrieve( f"Expected a non-empty value for `card_purchase_supplement_id` but received {card_purchase_supplement_id!r}" ) return await self._get( - f"/card_purchase_supplements/{card_purchase_supplement_id}", + path_template( + "/card_purchase_supplements/{card_purchase_supplement_id}", + card_purchase_supplement_id=card_purchase_supplement_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/card_push_transfers.py b/src/increase/resources/card_push_transfers.py index b72363fce..be5273de6 100644 --- a/src/increase/resources/card_push_transfers.py +++ b/src/increase/resources/card_push_transfers.py @@ -8,7 +8,7 @@ from ..types import card_push_transfer_list_params, card_push_transfer_create_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -225,7 +225,7 @@ def retrieve( f"Expected a non-empty value for `card_push_transfer_id` but received {card_push_transfer_id!r}" ) return self._get( - f"/card_push_transfers/{card_push_transfer_id}", + path_template("/card_push_transfers/{card_push_transfer_id}", card_push_transfer_id=card_push_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -328,7 +328,9 @@ def approve( f"Expected a non-empty value for `card_push_transfer_id` but received {card_push_transfer_id!r}" ) return self._post( - f"/card_push_transfers/{card_push_transfer_id}/approve", + path_template( + "/card_push_transfers/{card_push_transfer_id}/approve", card_push_transfer_id=card_push_transfer_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -372,7 +374,9 @@ def cancel( f"Expected a non-empty value for `card_push_transfer_id` but received {card_push_transfer_id!r}" ) return self._post( - f"/card_push_transfers/{card_push_transfer_id}/cancel", + path_template( + "/card_push_transfers/{card_push_transfer_id}/cancel", card_push_transfer_id=card_push_transfer_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -585,7 +589,7 @@ async def retrieve( f"Expected a non-empty value for `card_push_transfer_id` but received {card_push_transfer_id!r}" ) return await self._get( - f"/card_push_transfers/{card_push_transfer_id}", + path_template("/card_push_transfers/{card_push_transfer_id}", card_push_transfer_id=card_push_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -688,7 +692,9 @@ async def approve( f"Expected a non-empty value for `card_push_transfer_id` but received {card_push_transfer_id!r}" ) return await self._post( - f"/card_push_transfers/{card_push_transfer_id}/approve", + path_template( + "/card_push_transfers/{card_push_transfer_id}/approve", card_push_transfer_id=card_push_transfer_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -732,7 +738,9 @@ async def cancel( f"Expected a non-empty value for `card_push_transfer_id` but received {card_push_transfer_id!r}" ) return await self._post( - f"/card_push_transfers/{card_push_transfer_id}/cancel", + path_template( + "/card_push_transfers/{card_push_transfer_id}/cancel", card_push_transfer_id=card_push_transfer_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/card_tokens.py b/src/increase/resources/card_tokens.py index c00023910..4ff453b5e 100644 --- a/src/increase/resources/card_tokens.py +++ b/src/increase/resources/card_tokens.py @@ -6,7 +6,7 @@ from ..types import card_token_list_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform +from .._utils import path_template, maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -71,7 +71,7 @@ def retrieve( if not card_token_id: raise ValueError(f"Expected a non-empty value for `card_token_id` but received {card_token_id!r}") return self._get( - f"/card_tokens/{card_token_id}", + path_template("/card_tokens/{card_token_id}", card_token_id=card_token_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -158,7 +158,7 @@ def capabilities( if not card_token_id: raise ValueError(f"Expected a non-empty value for `card_token_id` but received {card_token_id!r}") return self._get( - f"/card_tokens/{card_token_id}/capabilities", + path_template("/card_tokens/{card_token_id}/capabilities", card_token_id=card_token_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -214,7 +214,7 @@ async def retrieve( if not card_token_id: raise ValueError(f"Expected a non-empty value for `card_token_id` but received {card_token_id!r}") return await self._get( - f"/card_tokens/{card_token_id}", + path_template("/card_tokens/{card_token_id}", card_token_id=card_token_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -301,7 +301,7 @@ async def capabilities( if not card_token_id: raise ValueError(f"Expected a non-empty value for `card_token_id` but received {card_token_id!r}") return await self._get( - f"/card_tokens/{card_token_id}/capabilities", + path_template("/card_tokens/{card_token_id}/capabilities", card_token_id=card_token_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/card_validations.py b/src/increase/resources/card_validations.py index e24a34ac7..81841f677 100644 --- a/src/increase/resources/card_validations.py +++ b/src/increase/resources/card_validations.py @@ -6,7 +6,7 @@ from ..types import card_validation_list_params, card_validation_create_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -163,7 +163,7 @@ def retrieve( if not card_validation_id: raise ValueError(f"Expected a non-empty value for `card_validation_id` but received {card_validation_id!r}") return self._get( - f"/card_validations/{card_validation_id}", + path_template("/card_validations/{card_validation_id}", card_validation_id=card_validation_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -375,7 +375,7 @@ async def retrieve( if not card_validation_id: raise ValueError(f"Expected a non-empty value for `card_validation_id` but received {card_validation_id!r}") return await self._get( - f"/card_validations/{card_validation_id}", + path_template("/card_validations/{card_validation_id}", card_validation_id=card_validation_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/cards.py b/src/increase/resources/cards.py index f5dae7300..572153c3c 100644 --- a/src/increase/resources/cards.py +++ b/src/increase/resources/cards.py @@ -14,7 +14,7 @@ card_create_details_iframe_params, ) from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -147,7 +147,7 @@ def retrieve( if not card_id: raise ValueError(f"Expected a non-empty value for `card_id` but received {card_id!r}") return self._get( - f"/cards/{card_id}", + path_template("/cards/{card_id}", card_id=card_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -207,7 +207,7 @@ def update( if not card_id: raise ValueError(f"Expected a non-empty value for `card_id` but received {card_id!r}") return self._patch( - f"/cards/{card_id}", + path_template("/cards/{card_id}", card_id=card_id), body=maybe_transform( { "billing_address": billing_address, @@ -329,7 +329,7 @@ def create_details_iframe( if not card_id: raise ValueError(f"Expected a non-empty value for `card_id` but received {card_id!r}") return self._post( - f"/cards/{card_id}/create_details_iframe", + path_template("/cards/{card_id}/create_details_iframe", card_id=card_id), body=maybe_transform( {"physical_card_id": physical_card_id}, card_create_details_iframe_params.CardCreateDetailsIframeParams ), @@ -372,7 +372,7 @@ def details( if not card_id: raise ValueError(f"Expected a non-empty value for `card_id` but received {card_id!r}") return self._get( - f"/cards/{card_id}/details", + path_template("/cards/{card_id}/details", card_id=card_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -413,7 +413,7 @@ def update_pin( if not card_id: raise ValueError(f"Expected a non-empty value for `card_id` but received {card_id!r}") return self._post( - f"/cards/{card_id}/update_pin", + path_template("/cards/{card_id}/update_pin", card_id=card_id), body=maybe_transform({"pin": pin}, card_update_pin_params.CardUpdatePinParams), options=make_request_options( extra_headers=extra_headers, @@ -541,7 +541,7 @@ async def retrieve( if not card_id: raise ValueError(f"Expected a non-empty value for `card_id` but received {card_id!r}") return await self._get( - f"/cards/{card_id}", + path_template("/cards/{card_id}", card_id=card_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -601,7 +601,7 @@ async def update( if not card_id: raise ValueError(f"Expected a non-empty value for `card_id` but received {card_id!r}") return await self._patch( - f"/cards/{card_id}", + path_template("/cards/{card_id}", card_id=card_id), body=await async_maybe_transform( { "billing_address": billing_address, @@ -723,7 +723,7 @@ async def create_details_iframe( if not card_id: raise ValueError(f"Expected a non-empty value for `card_id` but received {card_id!r}") return await self._post( - f"/cards/{card_id}/create_details_iframe", + path_template("/cards/{card_id}/create_details_iframe", card_id=card_id), body=await async_maybe_transform( {"physical_card_id": physical_card_id}, card_create_details_iframe_params.CardCreateDetailsIframeParams ), @@ -766,7 +766,7 @@ async def details( if not card_id: raise ValueError(f"Expected a non-empty value for `card_id` but received {card_id!r}") return await self._get( - f"/cards/{card_id}/details", + path_template("/cards/{card_id}/details", card_id=card_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -807,7 +807,7 @@ async def update_pin( if not card_id: raise ValueError(f"Expected a non-empty value for `card_id` but received {card_id!r}") return await self._post( - f"/cards/{card_id}/update_pin", + path_template("/cards/{card_id}/update_pin", card_id=card_id), body=await async_maybe_transform({"pin": pin}, card_update_pin_params.CardUpdatePinParams), options=make_request_options( extra_headers=extra_headers, diff --git a/src/increase/resources/check_deposits.py b/src/increase/resources/check_deposits.py index 2683f91aa..4dcfad110 100644 --- a/src/increase/resources/check_deposits.py +++ b/src/increase/resources/check_deposits.py @@ -6,7 +6,7 @@ from ..types import check_deposit_list_params, check_deposit_create_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -132,7 +132,7 @@ def retrieve( if not check_deposit_id: raise ValueError(f"Expected a non-empty value for `check_deposit_id` but received {check_deposit_id!r}") return self._get( - f"/check_deposits/{check_deposit_id}", + path_template("/check_deposits/{check_deposit_id}", check_deposit_id=check_deposit_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -311,7 +311,7 @@ async def retrieve( if not check_deposit_id: raise ValueError(f"Expected a non-empty value for `check_deposit_id` but received {check_deposit_id!r}") return await self._get( - f"/check_deposits/{check_deposit_id}", + path_template("/check_deposits/{check_deposit_id}", check_deposit_id=check_deposit_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/check_transfers.py b/src/increase/resources/check_transfers.py index d7773c3c6..4a72d6549 100644 --- a/src/increase/resources/check_transfers.py +++ b/src/increase/resources/check_transfers.py @@ -10,7 +10,7 @@ from ..types import check_transfer_list_params, check_transfer_create_params, check_transfer_stop_payment_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -179,7 +179,7 @@ def retrieve( if not check_transfer_id: raise ValueError(f"Expected a non-empty value for `check_transfer_id` but received {check_transfer_id!r}") return self._get( - f"/check_transfers/{check_transfer_id}", + path_template("/check_transfers/{check_transfer_id}", check_transfer_id=check_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -280,7 +280,7 @@ def approve( if not check_transfer_id: raise ValueError(f"Expected a non-empty value for `check_transfer_id` but received {check_transfer_id!r}") return self._post( - f"/check_transfers/{check_transfer_id}/approve", + path_template("/check_transfers/{check_transfer_id}/approve", check_transfer_id=check_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -324,7 +324,7 @@ def cancel( if not check_transfer_id: raise ValueError(f"Expected a non-empty value for `check_transfer_id` but received {check_transfer_id!r}") return self._post( - f"/check_transfers/{check_transfer_id}/cancel", + path_template("/check_transfers/{check_transfer_id}/cancel", check_transfer_id=check_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -375,7 +375,7 @@ def stop_payment( if not check_transfer_id: raise ValueError(f"Expected a non-empty value for `check_transfer_id` but received {check_transfer_id!r}") return self._post( - f"/check_transfers/{check_transfer_id}/stop_payment", + path_template("/check_transfers/{check_transfer_id}/stop_payment", check_transfer_id=check_transfer_id), body=maybe_transform({"reason": reason}, check_transfer_stop_payment_params.CheckTransferStopPaymentParams), options=make_request_options( extra_headers=extra_headers, @@ -541,7 +541,7 @@ async def retrieve( if not check_transfer_id: raise ValueError(f"Expected a non-empty value for `check_transfer_id` but received {check_transfer_id!r}") return await self._get( - f"/check_transfers/{check_transfer_id}", + path_template("/check_transfers/{check_transfer_id}", check_transfer_id=check_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -642,7 +642,7 @@ async def approve( if not check_transfer_id: raise ValueError(f"Expected a non-empty value for `check_transfer_id` but received {check_transfer_id!r}") return await self._post( - f"/check_transfers/{check_transfer_id}/approve", + path_template("/check_transfers/{check_transfer_id}/approve", check_transfer_id=check_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -686,7 +686,7 @@ async def cancel( if not check_transfer_id: raise ValueError(f"Expected a non-empty value for `check_transfer_id` but received {check_transfer_id!r}") return await self._post( - f"/check_transfers/{check_transfer_id}/cancel", + path_template("/check_transfers/{check_transfer_id}/cancel", check_transfer_id=check_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -737,7 +737,7 @@ async def stop_payment( if not check_transfer_id: raise ValueError(f"Expected a non-empty value for `check_transfer_id` but received {check_transfer_id!r}") return await self._post( - f"/check_transfers/{check_transfer_id}/stop_payment", + path_template("/check_transfers/{check_transfer_id}/stop_payment", check_transfer_id=check_transfer_id), body=await async_maybe_transform( {"reason": reason}, check_transfer_stop_payment_params.CheckTransferStopPaymentParams ), diff --git a/src/increase/resources/declined_transactions.py b/src/increase/resources/declined_transactions.py index 17f7eab97..ca3f93ff4 100644 --- a/src/increase/resources/declined_transactions.py +++ b/src/increase/resources/declined_transactions.py @@ -6,7 +6,7 @@ from ..types import declined_transaction_list_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform +from .._utils import path_template, maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -72,7 +72,9 @@ def retrieve( f"Expected a non-empty value for `declined_transaction_id` but received {declined_transaction_id!r}" ) return self._get( - f"/declined_transactions/{declined_transaction_id}", + path_template( + "/declined_transactions/{declined_transaction_id}", declined_transaction_id=declined_transaction_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -190,7 +192,9 @@ async def retrieve( f"Expected a non-empty value for `declined_transaction_id` but received {declined_transaction_id!r}" ) return await self._get( - f"/declined_transactions/{declined_transaction_id}", + path_template( + "/declined_transactions/{declined_transaction_id}", declined_transaction_id=declined_transaction_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/digital_card_profiles.py b/src/increase/resources/digital_card_profiles.py index 84cbd1292..5af05d847 100644 --- a/src/increase/resources/digital_card_profiles.py +++ b/src/increase/resources/digital_card_profiles.py @@ -10,7 +10,7 @@ digital_card_profile_create_params, ) from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -154,7 +154,9 @@ def retrieve( f"Expected a non-empty value for `digital_card_profile_id` but received {digital_card_profile_id!r}" ) return self._get( - f"/digital_card_profiles/{digital_card_profile_id}", + path_template( + "/digital_card_profiles/{digital_card_profile_id}", digital_card_profile_id=digital_card_profile_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -251,7 +253,10 @@ def archive( f"Expected a non-empty value for `digital_card_profile_id` but received {digital_card_profile_id!r}" ) return self._post( - f"/digital_card_profiles/{digital_card_profile_id}/archive", + path_template( + "/digital_card_profiles/{digital_card_profile_id}/archive", + digital_card_profile_id=digital_card_profile_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -322,7 +327,10 @@ def clone( f"Expected a non-empty value for `digital_card_profile_id` but received {digital_card_profile_id!r}" ) return self._post( - f"/digital_card_profiles/{digital_card_profile_id}/clone", + path_template( + "/digital_card_profiles/{digital_card_profile_id}/clone", + digital_card_profile_id=digital_card_profile_id, + ), body=maybe_transform( { "app_icon_file_id": app_icon_file_id, @@ -476,7 +484,9 @@ async def retrieve( f"Expected a non-empty value for `digital_card_profile_id` but received {digital_card_profile_id!r}" ) return await self._get( - f"/digital_card_profiles/{digital_card_profile_id}", + path_template( + "/digital_card_profiles/{digital_card_profile_id}", digital_card_profile_id=digital_card_profile_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -573,7 +583,10 @@ async def archive( f"Expected a non-empty value for `digital_card_profile_id` but received {digital_card_profile_id!r}" ) return await self._post( - f"/digital_card_profiles/{digital_card_profile_id}/archive", + path_template( + "/digital_card_profiles/{digital_card_profile_id}/archive", + digital_card_profile_id=digital_card_profile_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -644,7 +657,10 @@ async def clone( f"Expected a non-empty value for `digital_card_profile_id` but received {digital_card_profile_id!r}" ) return await self._post( - f"/digital_card_profiles/{digital_card_profile_id}/clone", + path_template( + "/digital_card_profiles/{digital_card_profile_id}/clone", + digital_card_profile_id=digital_card_profile_id, + ), body=await async_maybe_transform( { "app_icon_file_id": app_icon_file_id, diff --git a/src/increase/resources/digital_wallet_tokens.py b/src/increase/resources/digital_wallet_tokens.py index f41d35b7f..bcdd713ec 100644 --- a/src/increase/resources/digital_wallet_tokens.py +++ b/src/increase/resources/digital_wallet_tokens.py @@ -6,7 +6,7 @@ from ..types import digital_wallet_token_list_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform +from .._utils import path_template, maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -72,7 +72,9 @@ def retrieve( f"Expected a non-empty value for `digital_wallet_token_id` but received {digital_wallet_token_id!r}" ) return self._get( - f"/digital_wallet_tokens/{digital_wallet_token_id}", + path_template( + "/digital_wallet_tokens/{digital_wallet_token_id}", digital_wallet_token_id=digital_wallet_token_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -184,7 +186,9 @@ async def retrieve( f"Expected a non-empty value for `digital_wallet_token_id` but received {digital_wallet_token_id!r}" ) return await self._get( - f"/digital_wallet_tokens/{digital_wallet_token_id}", + path_template( + "/digital_wallet_tokens/{digital_wallet_token_id}", digital_wallet_token_id=digital_wallet_token_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/entities.py b/src/increase/resources/entities.py index b5b0808c3..e567b03e2 100644 --- a/src/increase/resources/entities.py +++ b/src/increase/resources/entities.py @@ -10,7 +10,7 @@ from ..types import entity_list_params, entity_create_params, entity_update_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -177,7 +177,7 @@ def retrieve( if not entity_id: raise ValueError(f"Expected a non-empty value for `entity_id` but received {entity_id!r}") return self._get( - f"/entities/{entity_id}", + path_template("/entities/{entity_id}", entity_id=entity_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -245,7 +245,7 @@ def update( if not entity_id: raise ValueError(f"Expected a non-empty value for `entity_id` but received {entity_id!r}") return self._patch( - f"/entities/{entity_id}", + path_template("/entities/{entity_id}", entity_id=entity_id), body=maybe_transform( { "corporation": corporation, @@ -360,7 +360,7 @@ def archive( if not entity_id: raise ValueError(f"Expected a non-empty value for `entity_id` but received {entity_id!r}") return self._post( - f"/entities/{entity_id}/archive", + path_template("/entities/{entity_id}/archive", entity_id=entity_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -523,7 +523,7 @@ async def retrieve( if not entity_id: raise ValueError(f"Expected a non-empty value for `entity_id` but received {entity_id!r}") return await self._get( - f"/entities/{entity_id}", + path_template("/entities/{entity_id}", entity_id=entity_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -591,7 +591,7 @@ async def update( if not entity_id: raise ValueError(f"Expected a non-empty value for `entity_id` but received {entity_id!r}") return await self._patch( - f"/entities/{entity_id}", + path_template("/entities/{entity_id}", entity_id=entity_id), body=await async_maybe_transform( { "corporation": corporation, @@ -706,7 +706,7 @@ async def archive( if not entity_id: raise ValueError(f"Expected a non-empty value for `entity_id` but received {entity_id!r}") return await self._post( - f"/entities/{entity_id}/archive", + path_template("/entities/{entity_id}/archive", entity_id=entity_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/event_subscriptions.py b/src/increase/resources/event_subscriptions.py index c7840b0d6..f226c6336 100644 --- a/src/increase/resources/event_subscriptions.py +++ b/src/increase/resources/event_subscriptions.py @@ -9,7 +9,7 @@ from ..types import event_subscription_list_params, event_subscription_create_params, event_subscription_update_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -145,7 +145,7 @@ def retrieve( f"Expected a non-empty value for `event_subscription_id` but received {event_subscription_id!r}" ) return self._get( - f"/event_subscriptions/{event_subscription_id}", + path_template("/event_subscriptions/{event_subscription_id}", event_subscription_id=event_subscription_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -194,7 +194,7 @@ def update( f"Expected a non-empty value for `event_subscription_id` but received {event_subscription_id!r}" ) return self._patch( - f"/event_subscriptions/{event_subscription_id}", + path_template("/event_subscriptions/{event_subscription_id}", event_subscription_id=event_subscription_id), body=maybe_transform({"status": status}, event_subscription_update_params.EventSubscriptionUpdateParams), options=make_request_options( extra_headers=extra_headers, @@ -382,7 +382,7 @@ async def retrieve( f"Expected a non-empty value for `event_subscription_id` but received {event_subscription_id!r}" ) return await self._get( - f"/event_subscriptions/{event_subscription_id}", + path_template("/event_subscriptions/{event_subscription_id}", event_subscription_id=event_subscription_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -431,7 +431,7 @@ async def update( f"Expected a non-empty value for `event_subscription_id` but received {event_subscription_id!r}" ) return await self._patch( - f"/event_subscriptions/{event_subscription_id}", + path_template("/event_subscriptions/{event_subscription_id}", event_subscription_id=event_subscription_id), body=await async_maybe_transform( {"status": status}, event_subscription_update_params.EventSubscriptionUpdateParams ), diff --git a/src/increase/resources/events.py b/src/increase/resources/events.py index 7638252be..c70270154 100644 --- a/src/increase/resources/events.py +++ b/src/increase/resources/events.py @@ -9,7 +9,7 @@ from ..types import event_list_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform +from .._utils import path_template, maybe_transform from .._compat import cached_property from .._models import construct_type from .._resource import SyncAPIResource, AsyncAPIResource @@ -76,7 +76,7 @@ def retrieve( if not event_id: raise ValueError(f"Expected a non-empty value for `event_id` but received {event_id!r}") return self._get( - f"/events/{event_id}", + path_template("/events/{event_id}", event_id=event_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -215,7 +215,7 @@ async def retrieve( if not event_id: raise ValueError(f"Expected a non-empty value for `event_id` but received {event_id!r}") return await self._get( - f"/events/{event_id}", + path_template("/events/{event_id}", event_id=event_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/exports.py b/src/increase/resources/exports.py index f71932ac2..9c2fc2acd 100644 --- a/src/increase/resources/exports.py +++ b/src/increase/resources/exports.py @@ -8,7 +8,7 @@ from ..types import export_list_params, export_create_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -193,7 +193,7 @@ def retrieve( if not export_id: raise ValueError(f"Expected a non-empty value for `export_id` but received {export_id!r}") return self._get( - f"/exports/{export_id}", + path_template("/exports/{export_id}", export_id=export_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -475,7 +475,7 @@ async def retrieve( if not export_id: raise ValueError(f"Expected a non-empty value for `export_id` but received {export_id!r}") return await self._get( - f"/exports/{export_id}", + path_template("/exports/{export_id}", export_id=export_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/external_accounts.py b/src/increase/resources/external_accounts.py index f1ec6f568..82626cf7a 100644 --- a/src/increase/resources/external_accounts.py +++ b/src/increase/resources/external_accounts.py @@ -8,7 +8,7 @@ from ..types import external_account_list_params, external_account_create_params, external_account_update_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -146,7 +146,7 @@ def retrieve( f"Expected a non-empty value for `external_account_id` but received {external_account_id!r}" ) return self._get( - f"/external_accounts/{external_account_id}", + path_template("/external_accounts/{external_account_id}", external_account_id=external_account_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -210,7 +210,7 @@ def update( f"Expected a non-empty value for `external_account_id` but received {external_account_id!r}" ) return self._patch( - f"/external_accounts/{external_account_id}", + path_template("/external_accounts/{external_account_id}", external_account_id=external_account_id), body=maybe_transform( { "account_holder": account_holder, @@ -414,7 +414,7 @@ async def retrieve( f"Expected a non-empty value for `external_account_id` but received {external_account_id!r}" ) return await self._get( - f"/external_accounts/{external_account_id}", + path_template("/external_accounts/{external_account_id}", external_account_id=external_account_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -478,7 +478,7 @@ async def update( f"Expected a non-empty value for `external_account_id` but received {external_account_id!r}" ) return await self._patch( - f"/external_accounts/{external_account_id}", + path_template("/external_accounts/{external_account_id}", external_account_id=external_account_id), body=await async_maybe_transform( { "account_holder": account_holder, diff --git a/src/increase/resources/fednow_transfers.py b/src/increase/resources/fednow_transfers.py index 1ae25dc75..d29106d64 100644 --- a/src/increase/resources/fednow_transfers.py +++ b/src/increase/resources/fednow_transfers.py @@ -6,7 +6,7 @@ from ..types import fednow_transfer_list_params, fednow_transfer_create_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -161,7 +161,7 @@ def retrieve( if not fednow_transfer_id: raise ValueError(f"Expected a non-empty value for `fednow_transfer_id` but received {fednow_transfer_id!r}") return self._get( - f"/fednow_transfers/{fednow_transfer_id}", + path_template("/fednow_transfers/{fednow_transfer_id}", fednow_transfer_id=fednow_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -266,7 +266,7 @@ def approve( if not fednow_transfer_id: raise ValueError(f"Expected a non-empty value for `fednow_transfer_id` but received {fednow_transfer_id!r}") return self._post( - f"/fednow_transfers/{fednow_transfer_id}/approve", + path_template("/fednow_transfers/{fednow_transfer_id}/approve", fednow_transfer_id=fednow_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -308,7 +308,7 @@ def cancel( if not fednow_transfer_id: raise ValueError(f"Expected a non-empty value for `fednow_transfer_id` but received {fednow_transfer_id!r}") return self._post( - f"/fednow_transfers/{fednow_transfer_id}/cancel", + path_template("/fednow_transfers/{fednow_transfer_id}/cancel", fednow_transfer_id=fednow_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -459,7 +459,7 @@ async def retrieve( if not fednow_transfer_id: raise ValueError(f"Expected a non-empty value for `fednow_transfer_id` but received {fednow_transfer_id!r}") return await self._get( - f"/fednow_transfers/{fednow_transfer_id}", + path_template("/fednow_transfers/{fednow_transfer_id}", fednow_transfer_id=fednow_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -564,7 +564,7 @@ async def approve( if not fednow_transfer_id: raise ValueError(f"Expected a non-empty value for `fednow_transfer_id` but received {fednow_transfer_id!r}") return await self._post( - f"/fednow_transfers/{fednow_transfer_id}/approve", + path_template("/fednow_transfers/{fednow_transfer_id}/approve", fednow_transfer_id=fednow_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -606,7 +606,7 @@ async def cancel( if not fednow_transfer_id: raise ValueError(f"Expected a non-empty value for `fednow_transfer_id` but received {fednow_transfer_id!r}") return await self._post( - f"/fednow_transfers/{fednow_transfer_id}/cancel", + path_template("/fednow_transfers/{fednow_transfer_id}/cancel", fednow_transfer_id=fednow_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/files.py b/src/increase/resources/files.py index c45ef807b..8ea95babc 100644 --- a/src/increase/resources/files.py +++ b/src/increase/resources/files.py @@ -9,7 +9,7 @@ from ..types import file_list_params, file_create_params from .._types import Body, Omit, Query, Headers, NotGiven, FileTypes, omit, not_given -from .._utils import extract_files, maybe_transform, deepcopy_minimal, async_maybe_transform +from .._utils import extract_files, path_template, maybe_transform, deepcopy_minimal, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -194,7 +194,7 @@ def retrieve( if not file_id: raise ValueError(f"Expected a non-empty value for `file_id` but received {file_id!r}") return self._get( - f"/files/{file_id}", + path_template("/files/{file_id}", file_id=file_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -430,7 +430,7 @@ async def retrieve( if not file_id: raise ValueError(f"Expected a non-empty value for `file_id` but received {file_id!r}") return await self._get( - f"/files/{file_id}", + path_template("/files/{file_id}", file_id=file_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/inbound_ach_transfers.py b/src/increase/resources/inbound_ach_transfers.py index 465202ce1..3b0f05f1e 100644 --- a/src/increase/resources/inbound_ach_transfers.py +++ b/src/increase/resources/inbound_ach_transfers.py @@ -13,7 +13,7 @@ inbound_ach_transfer_create_notification_of_change_params, ) from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -79,7 +79,9 @@ def retrieve( f"Expected a non-empty value for `inbound_ach_transfer_id` but received {inbound_ach_transfer_id!r}" ) return self._get( - f"/inbound_ach_transfers/{inbound_ach_transfer_id}", + path_template( + "/inbound_ach_transfers/{inbound_ach_transfer_id}", inbound_ach_transfer_id=inbound_ach_transfer_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -186,7 +188,10 @@ def create_notification_of_change( f"Expected a non-empty value for `inbound_ach_transfer_id` but received {inbound_ach_transfer_id!r}" ) return self._post( - f"/inbound_ach_transfers/{inbound_ach_transfer_id}/create_notification_of_change", + path_template( + "/inbound_ach_transfers/{inbound_ach_transfer_id}/create_notification_of_change", + inbound_ach_transfer_id=inbound_ach_transfer_id, + ), body=maybe_transform( { "updated_account_number": updated_account_number, @@ -277,7 +282,10 @@ def decline( f"Expected a non-empty value for `inbound_ach_transfer_id` but received {inbound_ach_transfer_id!r}" ) return self._post( - f"/inbound_ach_transfers/{inbound_ach_transfer_id}/decline", + path_template( + "/inbound_ach_transfers/{inbound_ach_transfer_id}/decline", + inbound_ach_transfer_id=inbound_ach_transfer_id, + ), body=maybe_transform( {"reason": reason}, inbound_ach_transfer_decline_params.InboundACHTransferDeclineParams ), @@ -359,7 +367,10 @@ def transfer_return( f"Expected a non-empty value for `inbound_ach_transfer_id` but received {inbound_ach_transfer_id!r}" ) return self._post( - f"/inbound_ach_transfers/{inbound_ach_transfer_id}/transfer_return", + path_template( + "/inbound_ach_transfers/{inbound_ach_transfer_id}/transfer_return", + inbound_ach_transfer_id=inbound_ach_transfer_id, + ), body=maybe_transform( {"reason": reason}, inbound_ach_transfer_transfer_return_params.InboundACHTransferTransferReturnParams ), @@ -424,7 +435,9 @@ async def retrieve( f"Expected a non-empty value for `inbound_ach_transfer_id` but received {inbound_ach_transfer_id!r}" ) return await self._get( - f"/inbound_ach_transfers/{inbound_ach_transfer_id}", + path_template( + "/inbound_ach_transfers/{inbound_ach_transfer_id}", inbound_ach_transfer_id=inbound_ach_transfer_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -531,7 +544,10 @@ async def create_notification_of_change( f"Expected a non-empty value for `inbound_ach_transfer_id` but received {inbound_ach_transfer_id!r}" ) return await self._post( - f"/inbound_ach_transfers/{inbound_ach_transfer_id}/create_notification_of_change", + path_template( + "/inbound_ach_transfers/{inbound_ach_transfer_id}/create_notification_of_change", + inbound_ach_transfer_id=inbound_ach_transfer_id, + ), body=await async_maybe_transform( { "updated_account_number": updated_account_number, @@ -622,7 +638,10 @@ async def decline( f"Expected a non-empty value for `inbound_ach_transfer_id` but received {inbound_ach_transfer_id!r}" ) return await self._post( - f"/inbound_ach_transfers/{inbound_ach_transfer_id}/decline", + path_template( + "/inbound_ach_transfers/{inbound_ach_transfer_id}/decline", + inbound_ach_transfer_id=inbound_ach_transfer_id, + ), body=await async_maybe_transform( {"reason": reason}, inbound_ach_transfer_decline_params.InboundACHTransferDeclineParams ), @@ -704,7 +723,10 @@ async def transfer_return( f"Expected a non-empty value for `inbound_ach_transfer_id` but received {inbound_ach_transfer_id!r}" ) return await self._post( - f"/inbound_ach_transfers/{inbound_ach_transfer_id}/transfer_return", + path_template( + "/inbound_ach_transfers/{inbound_ach_transfer_id}/transfer_return", + inbound_ach_transfer_id=inbound_ach_transfer_id, + ), body=await async_maybe_transform( {"reason": reason}, inbound_ach_transfer_transfer_return_params.InboundACHTransferTransferReturnParams ), diff --git a/src/increase/resources/inbound_check_deposits.py b/src/increase/resources/inbound_check_deposits.py index 0a924f241..d70fccad5 100644 --- a/src/increase/resources/inbound_check_deposits.py +++ b/src/increase/resources/inbound_check_deposits.py @@ -8,7 +8,7 @@ from ..types import inbound_check_deposit_list_params, inbound_check_deposit_return_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -74,7 +74,9 @@ def retrieve( f"Expected a non-empty value for `inbound_check_deposit_id` but received {inbound_check_deposit_id!r}" ) return self._get( - f"/inbound_check_deposits/{inbound_check_deposit_id}", + path_template( + "/inbound_check_deposits/{inbound_check_deposit_id}", inbound_check_deposit_id=inbound_check_deposit_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -173,7 +175,10 @@ def decline( f"Expected a non-empty value for `inbound_check_deposit_id` but received {inbound_check_deposit_id!r}" ) return self._post( - f"/inbound_check_deposits/{inbound_check_deposit_id}/decline", + path_template( + "/inbound_check_deposits/{inbound_check_deposit_id}/decline", + inbound_check_deposit_id=inbound_check_deposit_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -234,7 +239,10 @@ def return_( f"Expected a non-empty value for `inbound_check_deposit_id` but received {inbound_check_deposit_id!r}" ) return self._post( - f"/inbound_check_deposits/{inbound_check_deposit_id}/return", + path_template( + "/inbound_check_deposits/{inbound_check_deposit_id}/return", + inbound_check_deposit_id=inbound_check_deposit_id, + ), body=maybe_transform( {"reason": reason}, inbound_check_deposit_return_params.InboundCheckDepositReturnParams ), @@ -299,7 +307,9 @@ async def retrieve( f"Expected a non-empty value for `inbound_check_deposit_id` but received {inbound_check_deposit_id!r}" ) return await self._get( - f"/inbound_check_deposits/{inbound_check_deposit_id}", + path_template( + "/inbound_check_deposits/{inbound_check_deposit_id}", inbound_check_deposit_id=inbound_check_deposit_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -398,7 +408,10 @@ async def decline( f"Expected a non-empty value for `inbound_check_deposit_id` but received {inbound_check_deposit_id!r}" ) return await self._post( - f"/inbound_check_deposits/{inbound_check_deposit_id}/decline", + path_template( + "/inbound_check_deposits/{inbound_check_deposit_id}/decline", + inbound_check_deposit_id=inbound_check_deposit_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -459,7 +472,10 @@ async def return_( f"Expected a non-empty value for `inbound_check_deposit_id` but received {inbound_check_deposit_id!r}" ) return await self._post( - f"/inbound_check_deposits/{inbound_check_deposit_id}/return", + path_template( + "/inbound_check_deposits/{inbound_check_deposit_id}/return", + inbound_check_deposit_id=inbound_check_deposit_id, + ), body=await async_maybe_transform( {"reason": reason}, inbound_check_deposit_return_params.InboundCheckDepositReturnParams ), diff --git a/src/increase/resources/inbound_fednow_transfers.py b/src/increase/resources/inbound_fednow_transfers.py index 9a314e19f..b4b91e369 100644 --- a/src/increase/resources/inbound_fednow_transfers.py +++ b/src/increase/resources/inbound_fednow_transfers.py @@ -6,7 +6,7 @@ from ..types import inbound_fednow_transfer_list_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform +from .._utils import path_template, maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -72,7 +72,10 @@ def retrieve( f"Expected a non-empty value for `inbound_fednow_transfer_id` but received {inbound_fednow_transfer_id!r}" ) return self._get( - f"/inbound_fednow_transfers/{inbound_fednow_transfer_id}", + path_template( + "/inbound_fednow_transfers/{inbound_fednow_transfer_id}", + inbound_fednow_transfer_id=inbound_fednow_transfer_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -189,7 +192,10 @@ async def retrieve( f"Expected a non-empty value for `inbound_fednow_transfer_id` but received {inbound_fednow_transfer_id!r}" ) return await self._get( - f"/inbound_fednow_transfers/{inbound_fednow_transfer_id}", + path_template( + "/inbound_fednow_transfers/{inbound_fednow_transfer_id}", + inbound_fednow_transfer_id=inbound_fednow_transfer_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/inbound_mail_items.py b/src/increase/resources/inbound_mail_items.py index b4b95197a..8af4e7791 100644 --- a/src/increase/resources/inbound_mail_items.py +++ b/src/increase/resources/inbound_mail_items.py @@ -8,7 +8,7 @@ from ..types import inbound_mail_item_list_params, inbound_mail_item_action_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -74,7 +74,7 @@ def retrieve( f"Expected a non-empty value for `inbound_mail_item_id` but received {inbound_mail_item_id!r}" ) return self._get( - f"/inbound_mail_items/{inbound_mail_item_id}", + path_template("/inbound_mail_items/{inbound_mail_item_id}", inbound_mail_item_id=inbound_mail_item_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -171,7 +171,9 @@ def action( f"Expected a non-empty value for `inbound_mail_item_id` but received {inbound_mail_item_id!r}" ) return self._post( - f"/inbound_mail_items/{inbound_mail_item_id}/action", + path_template( + "/inbound_mail_items/{inbound_mail_item_id}/action", inbound_mail_item_id=inbound_mail_item_id + ), body=maybe_transform({"checks": checks}, inbound_mail_item_action_params.InboundMailItemActionParams), options=make_request_options( extra_headers=extra_headers, @@ -234,7 +236,7 @@ async def retrieve( f"Expected a non-empty value for `inbound_mail_item_id` but received {inbound_mail_item_id!r}" ) return await self._get( - f"/inbound_mail_items/{inbound_mail_item_id}", + path_template("/inbound_mail_items/{inbound_mail_item_id}", inbound_mail_item_id=inbound_mail_item_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -331,7 +333,9 @@ async def action( f"Expected a non-empty value for `inbound_mail_item_id` but received {inbound_mail_item_id!r}" ) return await self._post( - f"/inbound_mail_items/{inbound_mail_item_id}/action", + path_template( + "/inbound_mail_items/{inbound_mail_item_id}/action", inbound_mail_item_id=inbound_mail_item_id + ), body=await async_maybe_transform( {"checks": checks}, inbound_mail_item_action_params.InboundMailItemActionParams ), diff --git a/src/increase/resources/inbound_real_time_payments_transfers.py b/src/increase/resources/inbound_real_time_payments_transfers.py index 8bbf1d4f8..1e127a215 100755 --- a/src/increase/resources/inbound_real_time_payments_transfers.py +++ b/src/increase/resources/inbound_real_time_payments_transfers.py @@ -6,7 +6,7 @@ from ..types import inbound_real_time_payments_transfer_list_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform +from .._utils import path_template, maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -72,7 +72,10 @@ def retrieve( f"Expected a non-empty value for `inbound_real_time_payments_transfer_id` but received {inbound_real_time_payments_transfer_id!r}" ) return self._get( - f"/inbound_real_time_payments_transfers/{inbound_real_time_payments_transfer_id}", + path_template( + "/inbound_real_time_payments_transfers/{inbound_real_time_payments_transfer_id}", + inbound_real_time_payments_transfer_id=inbound_real_time_payments_transfer_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -190,7 +193,10 @@ async def retrieve( f"Expected a non-empty value for `inbound_real_time_payments_transfer_id` but received {inbound_real_time_payments_transfer_id!r}" ) return await self._get( - f"/inbound_real_time_payments_transfers/{inbound_real_time_payments_transfer_id}", + path_template( + "/inbound_real_time_payments_transfers/{inbound_real_time_payments_transfer_id}", + inbound_real_time_payments_transfer_id=inbound_real_time_payments_transfer_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/inbound_wire_drawdown_requests.py b/src/increase/resources/inbound_wire_drawdown_requests.py index b1e02507a..31987d38c 100644 --- a/src/increase/resources/inbound_wire_drawdown_requests.py +++ b/src/increase/resources/inbound_wire_drawdown_requests.py @@ -6,7 +6,7 @@ from ..types import inbound_wire_drawdown_request_list_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform +from .._utils import path_template, maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -72,7 +72,10 @@ def retrieve( f"Expected a non-empty value for `inbound_wire_drawdown_request_id` but received {inbound_wire_drawdown_request_id!r}" ) return self._get( - f"/inbound_wire_drawdown_requests/{inbound_wire_drawdown_request_id}", + path_template( + "/inbound_wire_drawdown_requests/{inbound_wire_drawdown_request_id}", + inbound_wire_drawdown_request_id=inbound_wire_drawdown_request_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -178,7 +181,10 @@ async def retrieve( f"Expected a non-empty value for `inbound_wire_drawdown_request_id` but received {inbound_wire_drawdown_request_id!r}" ) return await self._get( - f"/inbound_wire_drawdown_requests/{inbound_wire_drawdown_request_id}", + path_template( + "/inbound_wire_drawdown_requests/{inbound_wire_drawdown_request_id}", + inbound_wire_drawdown_request_id=inbound_wire_drawdown_request_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/inbound_wire_transfers.py b/src/increase/resources/inbound_wire_transfers.py index 1cee06f11..cf8b2f641 100644 --- a/src/increase/resources/inbound_wire_transfers.py +++ b/src/increase/resources/inbound_wire_transfers.py @@ -8,7 +8,7 @@ from ..types import inbound_wire_transfer_list_params, inbound_wire_transfer_reverse_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -74,7 +74,9 @@ def retrieve( f"Expected a non-empty value for `inbound_wire_transfer_id` but received {inbound_wire_transfer_id!r}" ) return self._get( - f"/inbound_wire_transfers/{inbound_wire_transfer_id}", + path_template( + "/inbound_wire_transfers/{inbound_wire_transfer_id}", inbound_wire_transfer_id=inbound_wire_transfer_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -187,7 +189,10 @@ def reverse( f"Expected a non-empty value for `inbound_wire_transfer_id` but received {inbound_wire_transfer_id!r}" ) return self._post( - f"/inbound_wire_transfers/{inbound_wire_transfer_id}/reverse", + path_template( + "/inbound_wire_transfers/{inbound_wire_transfer_id}/reverse", + inbound_wire_transfer_id=inbound_wire_transfer_id, + ), body=maybe_transform( {"reason": reason}, inbound_wire_transfer_reverse_params.InboundWireTransferReverseParams ), @@ -252,7 +257,9 @@ async def retrieve( f"Expected a non-empty value for `inbound_wire_transfer_id` but received {inbound_wire_transfer_id!r}" ) return await self._get( - f"/inbound_wire_transfers/{inbound_wire_transfer_id}", + path_template( + "/inbound_wire_transfers/{inbound_wire_transfer_id}", inbound_wire_transfer_id=inbound_wire_transfer_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -365,7 +372,10 @@ async def reverse( f"Expected a non-empty value for `inbound_wire_transfer_id` but received {inbound_wire_transfer_id!r}" ) return await self._post( - f"/inbound_wire_transfers/{inbound_wire_transfer_id}/reverse", + path_template( + "/inbound_wire_transfers/{inbound_wire_transfer_id}/reverse", + inbound_wire_transfer_id=inbound_wire_transfer_id, + ), body=await async_maybe_transform( {"reason": reason}, inbound_wire_transfer_reverse_params.InboundWireTransferReverseParams ), diff --git a/src/increase/resources/intrafi_account_enrollments.py b/src/increase/resources/intrafi_account_enrollments.py index 0fadbae5e..9eac8ac3a 100644 --- a/src/increase/resources/intrafi_account_enrollments.py +++ b/src/increase/resources/intrafi_account_enrollments.py @@ -6,7 +6,7 @@ from ..types import intrafi_account_enrollment_list_params, intrafi_account_enrollment_create_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -122,7 +122,10 @@ def retrieve( f"Expected a non-empty value for `intrafi_account_enrollment_id` but received {intrafi_account_enrollment_id!r}" ) return self._get( - f"/intrafi_account_enrollments/{intrafi_account_enrollment_id}", + path_template( + "/intrafi_account_enrollments/{intrafi_account_enrollment_id}", + intrafi_account_enrollment_id=intrafi_account_enrollment_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -223,7 +226,10 @@ def unenroll( f"Expected a non-empty value for `intrafi_account_enrollment_id` but received {intrafi_account_enrollment_id!r}" ) return self._post( - f"/intrafi_account_enrollments/{intrafi_account_enrollment_id}/unenroll", + path_template( + "/intrafi_account_enrollments/{intrafi_account_enrollment_id}/unenroll", + intrafi_account_enrollment_id=intrafi_account_enrollment_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -335,7 +341,10 @@ async def retrieve( f"Expected a non-empty value for `intrafi_account_enrollment_id` but received {intrafi_account_enrollment_id!r}" ) return await self._get( - f"/intrafi_account_enrollments/{intrafi_account_enrollment_id}", + path_template( + "/intrafi_account_enrollments/{intrafi_account_enrollment_id}", + intrafi_account_enrollment_id=intrafi_account_enrollment_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -436,7 +445,10 @@ async def unenroll( f"Expected a non-empty value for `intrafi_account_enrollment_id` but received {intrafi_account_enrollment_id!r}" ) return await self._post( - f"/intrafi_account_enrollments/{intrafi_account_enrollment_id}/unenroll", + path_template( + "/intrafi_account_enrollments/{intrafi_account_enrollment_id}/unenroll", + intrafi_account_enrollment_id=intrafi_account_enrollment_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/intrafi_balances.py b/src/increase/resources/intrafi_balances.py index c911a5756..9b9a92647 100644 --- a/src/increase/resources/intrafi_balances.py +++ b/src/increase/resources/intrafi_balances.py @@ -5,6 +5,7 @@ import httpx from .._types import Body, Query, Headers, NotGiven, not_given +from .._utils import path_template from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -70,7 +71,7 @@ def intrafi_balance( if not account_id: raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}") return self._get( - f"/accounts/{account_id}/intrafi_balance", + path_template("/accounts/{account_id}/intrafi_balance", account_id=account_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -129,7 +130,7 @@ async def intrafi_balance( if not account_id: raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}") return await self._get( - f"/accounts/{account_id}/intrafi_balance", + path_template("/accounts/{account_id}/intrafi_balance", account_id=account_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/intrafi_exclusions.py b/src/increase/resources/intrafi_exclusions.py index 344323023..84a64c6fe 100644 --- a/src/increase/resources/intrafi_exclusions.py +++ b/src/increase/resources/intrafi_exclusions.py @@ -6,7 +6,7 @@ from ..types import intrafi_exclusion_list_params, intrafi_exclusion_create_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -125,7 +125,7 @@ def retrieve( f"Expected a non-empty value for `intrafi_exclusion_id` but received {intrafi_exclusion_id!r}" ) return self._get( - f"/intrafi_exclusions/{intrafi_exclusion_id}", + path_template("/intrafi_exclusions/{intrafi_exclusion_id}", intrafi_exclusion_id=intrafi_exclusion_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -226,7 +226,9 @@ def archive( f"Expected a non-empty value for `intrafi_exclusion_id` but received {intrafi_exclusion_id!r}" ) return self._post( - f"/intrafi_exclusions/{intrafi_exclusion_id}/archive", + path_template( + "/intrafi_exclusions/{intrafi_exclusion_id}/archive", intrafi_exclusion_id=intrafi_exclusion_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -341,7 +343,7 @@ async def retrieve( f"Expected a non-empty value for `intrafi_exclusion_id` but received {intrafi_exclusion_id!r}" ) return await self._get( - f"/intrafi_exclusions/{intrafi_exclusion_id}", + path_template("/intrafi_exclusions/{intrafi_exclusion_id}", intrafi_exclusion_id=intrafi_exclusion_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -442,7 +444,9 @@ async def archive( f"Expected a non-empty value for `intrafi_exclusion_id` but received {intrafi_exclusion_id!r}" ) return await self._post( - f"/intrafi_exclusions/{intrafi_exclusion_id}/archive", + path_template( + "/intrafi_exclusions/{intrafi_exclusion_id}/archive", intrafi_exclusion_id=intrafi_exclusion_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/lockboxes.py b/src/increase/resources/lockboxes.py index 276fe76b0..b06fb0e1e 100644 --- a/src/increase/resources/lockboxes.py +++ b/src/increase/resources/lockboxes.py @@ -8,7 +8,7 @@ from ..types import lockbox_list_params, lockbox_create_params, lockbox_update_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -126,7 +126,7 @@ def retrieve( if not lockbox_id: raise ValueError(f"Expected a non-empty value for `lockbox_id` but received {lockbox_id!r}") return self._get( - f"/lockboxes/{lockbox_id}", + path_template("/lockboxes/{lockbox_id}", lockbox_id=lockbox_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -178,7 +178,7 @@ def update( if not lockbox_id: raise ValueError(f"Expected a non-empty value for `lockbox_id` but received {lockbox_id!r}") return self._patch( - f"/lockboxes/{lockbox_id}", + path_template("/lockboxes/{lockbox_id}", lockbox_id=lockbox_id), body=maybe_transform( { "check_deposit_behavior": check_deposit_behavior, @@ -361,7 +361,7 @@ async def retrieve( if not lockbox_id: raise ValueError(f"Expected a non-empty value for `lockbox_id` but received {lockbox_id!r}") return await self._get( - f"/lockboxes/{lockbox_id}", + path_template("/lockboxes/{lockbox_id}", lockbox_id=lockbox_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -413,7 +413,7 @@ async def update( if not lockbox_id: raise ValueError(f"Expected a non-empty value for `lockbox_id` but received {lockbox_id!r}") return await self._patch( - f"/lockboxes/{lockbox_id}", + path_template("/lockboxes/{lockbox_id}", lockbox_id=lockbox_id), body=await async_maybe_transform( { "check_deposit_behavior": check_deposit_behavior, diff --git a/src/increase/resources/oauth_applications.py b/src/increase/resources/oauth_applications.py index d69d83ab3..e209a6375 100644 --- a/src/increase/resources/oauth_applications.py +++ b/src/increase/resources/oauth_applications.py @@ -6,7 +6,7 @@ from ..types import oauth_application_list_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform +from .._utils import path_template, maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -72,7 +72,7 @@ def retrieve( f"Expected a non-empty value for `oauth_application_id` but received {oauth_application_id!r}" ) return self._get( - f"/oauth_applications/{oauth_application_id}", + path_template("/oauth_applications/{oauth_application_id}", oauth_application_id=oauth_application_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -182,7 +182,7 @@ async def retrieve( f"Expected a non-empty value for `oauth_application_id` but received {oauth_application_id!r}" ) return await self._get( - f"/oauth_applications/{oauth_application_id}", + path_template("/oauth_applications/{oauth_application_id}", oauth_application_id=oauth_application_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/oauth_connections.py b/src/increase/resources/oauth_connections.py index aa27390ad..ae4bd3208 100644 --- a/src/increase/resources/oauth_connections.py +++ b/src/increase/resources/oauth_connections.py @@ -6,7 +6,7 @@ from ..types import oauth_connection_list_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform +from .._utils import path_template, maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -72,7 +72,7 @@ def retrieve( f"Expected a non-empty value for `oauth_connection_id` but received {oauth_connection_id!r}" ) return self._get( - f"/oauth_connections/{oauth_connection_id}", + path_template("/oauth_connections/{oauth_connection_id}", oauth_connection_id=oauth_connection_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -185,7 +185,7 @@ async def retrieve( f"Expected a non-empty value for `oauth_connection_id` but received {oauth_connection_id!r}" ) return await self._get( - f"/oauth_connections/{oauth_connection_id}", + path_template("/oauth_connections/{oauth_connection_id}", oauth_connection_id=oauth_connection_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/pending_transactions.py b/src/increase/resources/pending_transactions.py index fc9aac6db..5eb7e2404 100644 --- a/src/increase/resources/pending_transactions.py +++ b/src/increase/resources/pending_transactions.py @@ -6,7 +6,7 @@ from ..types import pending_transaction_list_params, pending_transaction_create_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -133,7 +133,9 @@ def retrieve( f"Expected a non-empty value for `pending_transaction_id` but received {pending_transaction_id!r}" ) return self._get( - f"/pending_transactions/{pending_transaction_id}", + path_template( + "/pending_transactions/{pending_transaction_id}", pending_transaction_id=pending_transaction_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -239,7 +241,9 @@ def release( f"Expected a non-empty value for `pending_transaction_id` but received {pending_transaction_id!r}" ) return self._post( - f"/pending_transactions/{pending_transaction_id}/release", + path_template( + "/pending_transactions/{pending_transaction_id}/release", pending_transaction_id=pending_transaction_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -362,7 +366,9 @@ async def retrieve( f"Expected a non-empty value for `pending_transaction_id` but received {pending_transaction_id!r}" ) return await self._get( - f"/pending_transactions/{pending_transaction_id}", + path_template( + "/pending_transactions/{pending_transaction_id}", pending_transaction_id=pending_transaction_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -468,7 +474,9 @@ async def release( f"Expected a non-empty value for `pending_transaction_id` but received {pending_transaction_id!r}" ) return await self._post( - f"/pending_transactions/{pending_transaction_id}/release", + path_template( + "/pending_transactions/{pending_transaction_id}/release", pending_transaction_id=pending_transaction_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/physical_card_profiles.py b/src/increase/resources/physical_card_profiles.py index 67e2b910e..e0ad95108 100644 --- a/src/increase/resources/physical_card_profiles.py +++ b/src/increase/resources/physical_card_profiles.py @@ -10,7 +10,7 @@ physical_card_profile_create_params, ) from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -143,7 +143,9 @@ def retrieve( f"Expected a non-empty value for `physical_card_profile_id` but received {physical_card_profile_id!r}" ) return self._get( - f"/physical_card_profiles/{physical_card_profile_id}", + path_template( + "/physical_card_profiles/{physical_card_profile_id}", physical_card_profile_id=physical_card_profile_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -240,7 +242,10 @@ def archive( f"Expected a non-empty value for `physical_card_profile_id` but received {physical_card_profile_id!r}" ) return self._post( - f"/physical_card_profiles/{physical_card_profile_id}/archive", + path_template( + "/physical_card_profiles/{physical_card_profile_id}/archive", + physical_card_profile_id=physical_card_profile_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -303,7 +308,10 @@ def clone( f"Expected a non-empty value for `physical_card_profile_id` but received {physical_card_profile_id!r}" ) return self._post( - f"/physical_card_profiles/{physical_card_profile_id}/clone", + path_template( + "/physical_card_profiles/{physical_card_profile_id}/clone", + physical_card_profile_id=physical_card_profile_id, + ), body=maybe_transform( { "carrier_image_file_id": carrier_image_file_id, @@ -443,7 +451,9 @@ async def retrieve( f"Expected a non-empty value for `physical_card_profile_id` but received {physical_card_profile_id!r}" ) return await self._get( - f"/physical_card_profiles/{physical_card_profile_id}", + path_template( + "/physical_card_profiles/{physical_card_profile_id}", physical_card_profile_id=physical_card_profile_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -540,7 +550,10 @@ async def archive( f"Expected a non-empty value for `physical_card_profile_id` but received {physical_card_profile_id!r}" ) return await self._post( - f"/physical_card_profiles/{physical_card_profile_id}/archive", + path_template( + "/physical_card_profiles/{physical_card_profile_id}/archive", + physical_card_profile_id=physical_card_profile_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -603,7 +616,10 @@ async def clone( f"Expected a non-empty value for `physical_card_profile_id` but received {physical_card_profile_id!r}" ) return await self._post( - f"/physical_card_profiles/{physical_card_profile_id}/clone", + path_template( + "/physical_card_profiles/{physical_card_profile_id}/clone", + physical_card_profile_id=physical_card_profile_id, + ), body=await async_maybe_transform( { "carrier_image_file_id": carrier_image_file_id, diff --git a/src/increase/resources/physical_cards.py b/src/increase/resources/physical_cards.py index 818ed4baf..bb6cd8b7d 100644 --- a/src/increase/resources/physical_cards.py +++ b/src/increase/resources/physical_cards.py @@ -8,7 +8,7 @@ from ..types import physical_card_list_params, physical_card_create_params, physical_card_update_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -131,7 +131,7 @@ def retrieve( if not physical_card_id: raise ValueError(f"Expected a non-empty value for `physical_card_id` but received {physical_card_id!r}") return self._get( - f"/physical_cards/{physical_card_id}", + path_template("/physical_cards/{physical_card_id}", physical_card_id=physical_card_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -176,7 +176,7 @@ def update( if not physical_card_id: raise ValueError(f"Expected a non-empty value for `physical_card_id` but received {physical_card_id!r}") return self._patch( - f"/physical_cards/{physical_card_id}", + path_template("/physical_cards/{physical_card_id}", physical_card_id=physical_card_id), body=maybe_transform({"status": status}, physical_card_update_params.PhysicalCardUpdateParams), options=make_request_options( extra_headers=extra_headers, @@ -357,7 +357,7 @@ async def retrieve( if not physical_card_id: raise ValueError(f"Expected a non-empty value for `physical_card_id` but received {physical_card_id!r}") return await self._get( - f"/physical_cards/{physical_card_id}", + path_template("/physical_cards/{physical_card_id}", physical_card_id=physical_card_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -402,7 +402,7 @@ async def update( if not physical_card_id: raise ValueError(f"Expected a non-empty value for `physical_card_id` but received {physical_card_id!r}") return await self._patch( - f"/physical_cards/{physical_card_id}", + path_template("/physical_cards/{physical_card_id}", physical_card_id=physical_card_id), body=await async_maybe_transform({"status": status}, physical_card_update_params.PhysicalCardUpdateParams), options=make_request_options( extra_headers=extra_headers, diff --git a/src/increase/resources/programs.py b/src/increase/resources/programs.py index 9130af3fc..c23857191 100644 --- a/src/increase/resources/programs.py +++ b/src/increase/resources/programs.py @@ -6,7 +6,7 @@ from ..types import program_list_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform +from .._utils import path_template, maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -70,7 +70,7 @@ def retrieve( if not program_id: raise ValueError(f"Expected a non-empty value for `program_id` but received {program_id!r}") return self._get( - f"/programs/{program_id}", + path_template("/programs/{program_id}", program_id=program_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -174,7 +174,7 @@ async def retrieve( if not program_id: raise ValueError(f"Expected a non-empty value for `program_id` but received {program_id!r}") return await self._get( - f"/programs/{program_id}", + path_template("/programs/{program_id}", program_id=program_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/real_time_decisions.py b/src/increase/resources/real_time_decisions.py index 4099e3c2e..d89ee7339 100644 --- a/src/increase/resources/real_time_decisions.py +++ b/src/increase/resources/real_time_decisions.py @@ -6,7 +6,7 @@ from ..types import real_time_decision_action_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -71,7 +71,7 @@ def retrieve( f"Expected a non-empty value for `real_time_decision_id` but received {real_time_decision_id!r}" ) return self._get( - f"/real_time_decisions/{real_time_decision_id}", + path_template("/real_time_decisions/{real_time_decision_id}", real_time_decision_id=real_time_decision_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -135,7 +135,9 @@ def action( f"Expected a non-empty value for `real_time_decision_id` but received {real_time_decision_id!r}" ) return self._post( - f"/real_time_decisions/{real_time_decision_id}/action", + path_template( + "/real_time_decisions/{real_time_decision_id}/action", real_time_decision_id=real_time_decision_id + ), body=maybe_transform( { "card_authentication": card_authentication, @@ -208,7 +210,7 @@ async def retrieve( f"Expected a non-empty value for `real_time_decision_id` but received {real_time_decision_id!r}" ) return await self._get( - f"/real_time_decisions/{real_time_decision_id}", + path_template("/real_time_decisions/{real_time_decision_id}", real_time_decision_id=real_time_decision_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -272,7 +274,9 @@ async def action( f"Expected a non-empty value for `real_time_decision_id` but received {real_time_decision_id!r}" ) return await self._post( - f"/real_time_decisions/{real_time_decision_id}/action", + path_template( + "/real_time_decisions/{real_time_decision_id}/action", real_time_decision_id=real_time_decision_id + ), body=await async_maybe_transform( { "card_authentication": card_authentication, diff --git a/src/increase/resources/real_time_payments_transfers.py b/src/increase/resources/real_time_payments_transfers.py index 40605dc8e..39b31d296 100644 --- a/src/increase/resources/real_time_payments_transfers.py +++ b/src/increase/resources/real_time_payments_transfers.py @@ -6,7 +6,7 @@ from ..types import real_time_payments_transfer_list_params, real_time_payments_transfer_create_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -165,7 +165,10 @@ def retrieve( f"Expected a non-empty value for `real_time_payments_transfer_id` but received {real_time_payments_transfer_id!r}" ) return self._get( - f"/real_time_payments_transfers/{real_time_payments_transfer_id}", + path_template( + "/real_time_payments_transfers/{real_time_payments_transfer_id}", + real_time_payments_transfer_id=real_time_payments_transfer_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -273,7 +276,10 @@ def approve( f"Expected a non-empty value for `real_time_payments_transfer_id` but received {real_time_payments_transfer_id!r}" ) return self._post( - f"/real_time_payments_transfers/{real_time_payments_transfer_id}/approve", + path_template( + "/real_time_payments_transfers/{real_time_payments_transfer_id}/approve", + real_time_payments_transfer_id=real_time_payments_transfer_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -317,7 +323,10 @@ def cancel( f"Expected a non-empty value for `real_time_payments_transfer_id` but received {real_time_payments_transfer_id!r}" ) return self._post( - f"/real_time_payments_transfers/{real_time_payments_transfer_id}/cancel", + path_template( + "/real_time_payments_transfers/{real_time_payments_transfer_id}/cancel", + real_time_payments_transfer_id=real_time_payments_transfer_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -472,7 +481,10 @@ async def retrieve( f"Expected a non-empty value for `real_time_payments_transfer_id` but received {real_time_payments_transfer_id!r}" ) return await self._get( - f"/real_time_payments_transfers/{real_time_payments_transfer_id}", + path_template( + "/real_time_payments_transfers/{real_time_payments_transfer_id}", + real_time_payments_transfer_id=real_time_payments_transfer_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -580,7 +592,10 @@ async def approve( f"Expected a non-empty value for `real_time_payments_transfer_id` but received {real_time_payments_transfer_id!r}" ) return await self._post( - f"/real_time_payments_transfers/{real_time_payments_transfer_id}/approve", + path_template( + "/real_time_payments_transfers/{real_time_payments_transfer_id}/approve", + real_time_payments_transfer_id=real_time_payments_transfer_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -624,7 +639,10 @@ async def cancel( f"Expected a non-empty value for `real_time_payments_transfer_id` but received {real_time_payments_transfer_id!r}" ) return await self._post( - f"/real_time_payments_transfers/{real_time_payments_transfer_id}/cancel", + path_template( + "/real_time_payments_transfers/{real_time_payments_transfer_id}/cancel", + real_time_payments_transfer_id=real_time_payments_transfer_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/simulations/account_transfers.py b/src/increase/resources/simulations/account_transfers.py index 14ff9974d..969c1b7ca 100644 --- a/src/increase/resources/simulations/account_transfers.py +++ b/src/increase/resources/simulations/account_transfers.py @@ -5,6 +5,7 @@ import httpx from ..._types import Body, Query, Headers, NotGiven, not_given +from ..._utils import path_template from ..._compat import cached_property from ..._resource import SyncAPIResource, AsyncAPIResource from ..._response import ( @@ -75,7 +76,9 @@ def complete( f"Expected a non-empty value for `account_transfer_id` but received {account_transfer_id!r}" ) return self._post( - f"/simulations/account_transfers/{account_transfer_id}/complete", + path_template( + "/simulations/account_transfers/{account_transfer_id}/complete", account_transfer_id=account_transfer_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -143,7 +146,9 @@ async def complete( f"Expected a non-empty value for `account_transfer_id` but received {account_transfer_id!r}" ) return await self._post( - f"/simulations/account_transfers/{account_transfer_id}/complete", + path_template( + "/simulations/account_transfers/{account_transfer_id}/complete", account_transfer_id=account_transfer_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/simulations/ach_transfers.py b/src/increase/resources/simulations/ach_transfers.py index 2eda2f5cd..1d9712bd5 100644 --- a/src/increase/resources/simulations/ach_transfers.py +++ b/src/increase/resources/simulations/ach_transfers.py @@ -7,7 +7,7 @@ import httpx from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from ..._utils import maybe_transform, async_maybe_transform +from ..._utils import path_template, maybe_transform, async_maybe_transform from ..._compat import cached_property from ..._resource import SyncAPIResource, AsyncAPIResource from ..._response import ( @@ -83,7 +83,7 @@ def acknowledge( if not ach_transfer_id: raise ValueError(f"Expected a non-empty value for `ach_transfer_id` but received {ach_transfer_id!r}") return self._post( - f"/simulations/ach_transfers/{ach_transfer_id}/acknowledge", + path_template("/simulations/ach_transfers/{ach_transfer_id}/acknowledge", ach_transfer_id=ach_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -188,7 +188,10 @@ def create_notification_of_change( if not ach_transfer_id: raise ValueError(f"Expected a non-empty value for `ach_transfer_id` but received {ach_transfer_id!r}") return self._post( - f"/simulations/ach_transfers/{ach_transfer_id}/create_notification_of_change", + path_template( + "/simulations/ach_transfers/{ach_transfer_id}/create_notification_of_change", + ach_transfer_id=ach_transfer_id, + ), body=maybe_transform( { "change_code": change_code, @@ -466,7 +469,7 @@ def return_( if not ach_transfer_id: raise ValueError(f"Expected a non-empty value for `ach_transfer_id` but received {ach_transfer_id!r}") return self._post( - f"/simulations/ach_transfers/{ach_transfer_id}/return", + path_template("/simulations/ach_transfers/{ach_transfer_id}/return", ach_transfer_id=ach_transfer_id), body=maybe_transform({"reason": reason}, ach_transfer_return_params.ACHTransferReturnParams), options=make_request_options( extra_headers=extra_headers, @@ -526,7 +529,7 @@ def settle( if not ach_transfer_id: raise ValueError(f"Expected a non-empty value for `ach_transfer_id` but received {ach_transfer_id!r}") return self._post( - f"/simulations/ach_transfers/{ach_transfer_id}/settle", + path_template("/simulations/ach_transfers/{ach_transfer_id}/settle", ach_transfer_id=ach_transfer_id), body=maybe_transform( {"inbound_funds_hold_behavior": inbound_funds_hold_behavior}, ach_transfer_settle_params.ACHTransferSettleParams, @@ -577,7 +580,7 @@ def submit( if not ach_transfer_id: raise ValueError(f"Expected a non-empty value for `ach_transfer_id` but received {ach_transfer_id!r}") return self._post( - f"/simulations/ach_transfers/{ach_transfer_id}/submit", + path_template("/simulations/ach_transfers/{ach_transfer_id}/submit", ach_transfer_id=ach_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -645,7 +648,7 @@ async def acknowledge( if not ach_transfer_id: raise ValueError(f"Expected a non-empty value for `ach_transfer_id` but received {ach_transfer_id!r}") return await self._post( - f"/simulations/ach_transfers/{ach_transfer_id}/acknowledge", + path_template("/simulations/ach_transfers/{ach_transfer_id}/acknowledge", ach_transfer_id=ach_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -750,7 +753,10 @@ async def create_notification_of_change( if not ach_transfer_id: raise ValueError(f"Expected a non-empty value for `ach_transfer_id` but received {ach_transfer_id!r}") return await self._post( - f"/simulations/ach_transfers/{ach_transfer_id}/create_notification_of_change", + path_template( + "/simulations/ach_transfers/{ach_transfer_id}/create_notification_of_change", + ach_transfer_id=ach_transfer_id, + ), body=await async_maybe_transform( { "change_code": change_code, @@ -1028,7 +1034,7 @@ async def return_( if not ach_transfer_id: raise ValueError(f"Expected a non-empty value for `ach_transfer_id` but received {ach_transfer_id!r}") return await self._post( - f"/simulations/ach_transfers/{ach_transfer_id}/return", + path_template("/simulations/ach_transfers/{ach_transfer_id}/return", ach_transfer_id=ach_transfer_id), body=await async_maybe_transform({"reason": reason}, ach_transfer_return_params.ACHTransferReturnParams), options=make_request_options( extra_headers=extra_headers, @@ -1088,7 +1094,7 @@ async def settle( if not ach_transfer_id: raise ValueError(f"Expected a non-empty value for `ach_transfer_id` but received {ach_transfer_id!r}") return await self._post( - f"/simulations/ach_transfers/{ach_transfer_id}/settle", + path_template("/simulations/ach_transfers/{ach_transfer_id}/settle", ach_transfer_id=ach_transfer_id), body=await async_maybe_transform( {"inbound_funds_hold_behavior": inbound_funds_hold_behavior}, ach_transfer_settle_params.ACHTransferSettleParams, @@ -1139,7 +1145,7 @@ async def submit( if not ach_transfer_id: raise ValueError(f"Expected a non-empty value for `ach_transfer_id` but received {ach_transfer_id!r}") return await self._post( - f"/simulations/ach_transfers/{ach_transfer_id}/submit", + path_template("/simulations/ach_transfers/{ach_transfer_id}/submit", ach_transfer_id=ach_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/simulations/card_authentications.py b/src/increase/resources/simulations/card_authentications.py index 432a9b574..bbc362b79 100644 --- a/src/increase/resources/simulations/card_authentications.py +++ b/src/increase/resources/simulations/card_authentications.py @@ -7,7 +7,7 @@ import httpx from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from ..._utils import maybe_transform, async_maybe_transform +from ..._utils import path_template, maybe_transform, async_maybe_transform from ..._compat import cached_property from ..._resource import SyncAPIResource, AsyncAPIResource from ..._response import ( @@ -169,7 +169,10 @@ def challenge_attempts( if not card_payment_id: raise ValueError(f"Expected a non-empty value for `card_payment_id` but received {card_payment_id!r}") return self._post( - f"/simulations/card_authentications/{card_payment_id}/challenge_attempts", + path_template( + "/simulations/card_authentications/{card_payment_id}/challenge_attempts", + card_payment_id=card_payment_id, + ), body=maybe_transform( {"one_time_code": one_time_code}, card_authentication_challenge_attempts_params.CardAuthenticationChallengeAttemptsParams, @@ -220,7 +223,9 @@ def challenges( if not card_payment_id: raise ValueError(f"Expected a non-empty value for `card_payment_id` but received {card_payment_id!r}") return self._post( - f"/simulations/card_authentications/{card_payment_id}/challenges", + path_template( + "/simulations/card_authentications/{card_payment_id}/challenges", card_payment_id=card_payment_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -378,7 +383,10 @@ async def challenge_attempts( if not card_payment_id: raise ValueError(f"Expected a non-empty value for `card_payment_id` but received {card_payment_id!r}") return await self._post( - f"/simulations/card_authentications/{card_payment_id}/challenge_attempts", + path_template( + "/simulations/card_authentications/{card_payment_id}/challenge_attempts", + card_payment_id=card_payment_id, + ), body=await async_maybe_transform( {"one_time_code": one_time_code}, card_authentication_challenge_attempts_params.CardAuthenticationChallengeAttemptsParams, @@ -429,7 +437,9 @@ async def challenges( if not card_payment_id: raise ValueError(f"Expected a non-empty value for `card_payment_id` but received {card_payment_id!r}") return await self._post( - f"/simulations/card_authentications/{card_payment_id}/challenges", + path_template( + "/simulations/card_authentications/{card_payment_id}/challenges", card_payment_id=card_payment_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/simulations/card_disputes.py b/src/increase/resources/simulations/card_disputes.py index a0fc9cb87..e4c09ed56 100644 --- a/src/increase/resources/simulations/card_disputes.py +++ b/src/increase/resources/simulations/card_disputes.py @@ -7,7 +7,7 @@ import httpx from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from ..._utils import maybe_transform, async_maybe_transform +from ..._utils import path_template, maybe_transform, async_maybe_transform from ..._compat import cached_property from ..._resource import SyncAPIResource, AsyncAPIResource from ..._response import ( @@ -87,7 +87,7 @@ def action( if not card_dispute_id: raise ValueError(f"Expected a non-empty value for `card_dispute_id` but received {card_dispute_id!r}") return self._post( - f"/simulations/card_disputes/{card_dispute_id}/action", + path_template("/simulations/card_disputes/{card_dispute_id}/action", card_dispute_id=card_dispute_id), body=maybe_transform( { "network": network, @@ -170,7 +170,7 @@ async def action( if not card_dispute_id: raise ValueError(f"Expected a non-empty value for `card_dispute_id` but received {card_dispute_id!r}") return await self._post( - f"/simulations/card_disputes/{card_dispute_id}/action", + path_template("/simulations/card_disputes/{card_dispute_id}/action", card_dispute_id=card_dispute_id), body=await async_maybe_transform( { "network": network, diff --git a/src/increase/resources/simulations/check_deposits.py b/src/increase/resources/simulations/check_deposits.py index 1fa37c646..f323e52cf 100644 --- a/src/increase/resources/simulations/check_deposits.py +++ b/src/increase/resources/simulations/check_deposits.py @@ -7,7 +7,7 @@ import httpx from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from ..._utils import maybe_transform, async_maybe_transform +from ..._utils import path_template, maybe_transform, async_maybe_transform from ..._compat import cached_property from ..._resource import SyncAPIResource, AsyncAPIResource from ..._response import ( @@ -99,7 +99,9 @@ def adjustment( if not check_deposit_id: raise ValueError(f"Expected a non-empty value for `check_deposit_id` but received {check_deposit_id!r}") return self._post( - f"/simulations/check_deposits/{check_deposit_id}/adjustment", + path_template( + "/simulations/check_deposits/{check_deposit_id}/adjustment", check_deposit_id=check_deposit_id + ), body=maybe_transform( { "amount": amount, @@ -150,7 +152,7 @@ def reject( if not check_deposit_id: raise ValueError(f"Expected a non-empty value for `check_deposit_id` but received {check_deposit_id!r}") return self._post( - f"/simulations/check_deposits/{check_deposit_id}/reject", + path_template("/simulations/check_deposits/{check_deposit_id}/reject", check_deposit_id=check_deposit_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -194,7 +196,7 @@ def return_( if not check_deposit_id: raise ValueError(f"Expected a non-empty value for `check_deposit_id` but received {check_deposit_id!r}") return self._post( - f"/simulations/check_deposits/{check_deposit_id}/return", + path_template("/simulations/check_deposits/{check_deposit_id}/return", check_deposit_id=check_deposit_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -240,7 +242,7 @@ def submit( if not check_deposit_id: raise ValueError(f"Expected a non-empty value for `check_deposit_id` but received {check_deposit_id!r}") return self._post( - f"/simulations/check_deposits/{check_deposit_id}/submit", + path_template("/simulations/check_deposits/{check_deposit_id}/submit", check_deposit_id=check_deposit_id), body=maybe_transform({"scan": scan}, check_deposit_submit_params.CheckDepositSubmitParams), options=make_request_options( extra_headers=extra_headers, @@ -329,7 +331,9 @@ async def adjustment( if not check_deposit_id: raise ValueError(f"Expected a non-empty value for `check_deposit_id` but received {check_deposit_id!r}") return await self._post( - f"/simulations/check_deposits/{check_deposit_id}/adjustment", + path_template( + "/simulations/check_deposits/{check_deposit_id}/adjustment", check_deposit_id=check_deposit_id + ), body=await async_maybe_transform( { "amount": amount, @@ -380,7 +384,7 @@ async def reject( if not check_deposit_id: raise ValueError(f"Expected a non-empty value for `check_deposit_id` but received {check_deposit_id!r}") return await self._post( - f"/simulations/check_deposits/{check_deposit_id}/reject", + path_template("/simulations/check_deposits/{check_deposit_id}/reject", check_deposit_id=check_deposit_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -424,7 +428,7 @@ async def return_( if not check_deposit_id: raise ValueError(f"Expected a non-empty value for `check_deposit_id` but received {check_deposit_id!r}") return await self._post( - f"/simulations/check_deposits/{check_deposit_id}/return", + path_template("/simulations/check_deposits/{check_deposit_id}/return", check_deposit_id=check_deposit_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -470,7 +474,7 @@ async def submit( if not check_deposit_id: raise ValueError(f"Expected a non-empty value for `check_deposit_id` but received {check_deposit_id!r}") return await self._post( - f"/simulations/check_deposits/{check_deposit_id}/submit", + path_template("/simulations/check_deposits/{check_deposit_id}/submit", check_deposit_id=check_deposit_id), body=await async_maybe_transform({"scan": scan}, check_deposit_submit_params.CheckDepositSubmitParams), options=make_request_options( extra_headers=extra_headers, diff --git a/src/increase/resources/simulations/check_transfers.py b/src/increase/resources/simulations/check_transfers.py index a326ff168..e0f4e0e80 100644 --- a/src/increase/resources/simulations/check_transfers.py +++ b/src/increase/resources/simulations/check_transfers.py @@ -5,6 +5,7 @@ import httpx from ..._types import Body, Query, Headers, NotGiven, not_given +from ..._utils import path_template from ..._compat import cached_property from ..._resource import SyncAPIResource, AsyncAPIResource from ..._response import ( @@ -73,7 +74,7 @@ def mail( if not check_transfer_id: raise ValueError(f"Expected a non-empty value for `check_transfer_id` but received {check_transfer_id!r}") return self._post( - f"/simulations/check_transfers/{check_transfer_id}/mail", + path_template("/simulations/check_transfers/{check_transfer_id}/mail", check_transfer_id=check_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -139,7 +140,7 @@ async def mail( if not check_transfer_id: raise ValueError(f"Expected a non-empty value for `check_transfer_id` but received {check_transfer_id!r}") return await self._post( - f"/simulations/check_transfers/{check_transfer_id}/mail", + path_template("/simulations/check_transfers/{check_transfer_id}/mail", check_transfer_id=check_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/simulations/inbound_check_deposits.py b/src/increase/resources/simulations/inbound_check_deposits.py index cf30df066..1b748944e 100644 --- a/src/increase/resources/simulations/inbound_check_deposits.py +++ b/src/increase/resources/simulations/inbound_check_deposits.py @@ -7,7 +7,7 @@ import httpx from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from ..._utils import maybe_transform, async_maybe_transform +from ..._utils import path_template, maybe_transform, async_maybe_transform from ..._compat import cached_property from ..._resource import SyncAPIResource, AsyncAPIResource from ..._response import ( @@ -169,7 +169,10 @@ def adjustment( f"Expected a non-empty value for `inbound_check_deposit_id` but received {inbound_check_deposit_id!r}" ) return self._post( - f"/simulations/inbound_check_deposits/{inbound_check_deposit_id}/adjustment", + path_template( + "/simulations/inbound_check_deposits/{inbound_check_deposit_id}/adjustment", + inbound_check_deposit_id=inbound_check_deposit_id, + ), body=maybe_transform( { "amount": amount, @@ -334,7 +337,10 @@ async def adjustment( f"Expected a non-empty value for `inbound_check_deposit_id` but received {inbound_check_deposit_id!r}" ) return await self._post( - f"/simulations/inbound_check_deposits/{inbound_check_deposit_id}/adjustment", + path_template( + "/simulations/inbound_check_deposits/{inbound_check_deposit_id}/adjustment", + inbound_check_deposit_id=inbound_check_deposit_id, + ), body=await async_maybe_transform( { "amount": amount, diff --git a/src/increase/resources/simulations/pending_transactions.py b/src/increase/resources/simulations/pending_transactions.py index 8d1911943..179c20420 100644 --- a/src/increase/resources/simulations/pending_transactions.py +++ b/src/increase/resources/simulations/pending_transactions.py @@ -5,6 +5,7 @@ import httpx from ..._types import Body, Query, Headers, NotGiven, not_given +from ..._utils import path_template from ..._compat import cached_property from ..._resource import SyncAPIResource, AsyncAPIResource from ..._response import ( @@ -74,7 +75,10 @@ def release_inbound_funds_hold( f"Expected a non-empty value for `pending_transaction_id` but received {pending_transaction_id!r}" ) return self._post( - f"/simulations/pending_transactions/{pending_transaction_id}/release_inbound_funds_hold", + path_template( + "/simulations/pending_transactions/{pending_transaction_id}/release_inbound_funds_hold", + pending_transaction_id=pending_transaction_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -141,7 +145,10 @@ async def release_inbound_funds_hold( f"Expected a non-empty value for `pending_transaction_id` but received {pending_transaction_id!r}" ) return await self._post( - f"/simulations/pending_transactions/{pending_transaction_id}/release_inbound_funds_hold", + path_template( + "/simulations/pending_transactions/{pending_transaction_id}/release_inbound_funds_hold", + pending_transaction_id=pending_transaction_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/simulations/physical_cards.py b/src/increase/resources/simulations/physical_cards.py index e4b4a5cf0..6a2ed3b35 100644 --- a/src/increase/resources/simulations/physical_cards.py +++ b/src/increase/resources/simulations/physical_cards.py @@ -9,7 +9,7 @@ import httpx from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from ..._utils import maybe_transform, async_maybe_transform +from ..._utils import path_template, maybe_transform, async_maybe_transform from ..._compat import cached_property from ..._resource import SyncAPIResource, AsyncAPIResource from ..._response import ( @@ -102,7 +102,9 @@ def create( if not physical_card_id: raise ValueError(f"Expected a non-empty value for `physical_card_id` but received {physical_card_id!r}") return self._post( - f"/simulations/physical_cards/{physical_card_id}/tracking_updates", + path_template( + "/simulations/physical_cards/{physical_card_id}/tracking_updates", physical_card_id=physical_card_id + ), body=maybe_transform( { "category": category, @@ -175,7 +177,9 @@ def advance_shipment( if not physical_card_id: raise ValueError(f"Expected a non-empty value for `physical_card_id` but received {physical_card_id!r}") return self._post( - f"/simulations/physical_cards/{physical_card_id}/advance_shipment", + path_template( + "/simulations/physical_cards/{physical_card_id}/advance_shipment", physical_card_id=physical_card_id + ), body=maybe_transform( {"shipment_status": shipment_status}, physical_card_advance_shipment_params.PhysicalCardAdvanceShipmentParams, @@ -268,7 +272,9 @@ async def create( if not physical_card_id: raise ValueError(f"Expected a non-empty value for `physical_card_id` but received {physical_card_id!r}") return await self._post( - f"/simulations/physical_cards/{physical_card_id}/tracking_updates", + path_template( + "/simulations/physical_cards/{physical_card_id}/tracking_updates", physical_card_id=physical_card_id + ), body=await async_maybe_transform( { "category": category, @@ -341,7 +347,9 @@ async def advance_shipment( if not physical_card_id: raise ValueError(f"Expected a non-empty value for `physical_card_id` but received {physical_card_id!r}") return await self._post( - f"/simulations/physical_cards/{physical_card_id}/advance_shipment", + path_template( + "/simulations/physical_cards/{physical_card_id}/advance_shipment", physical_card_id=physical_card_id + ), body=await async_maybe_transform( {"shipment_status": shipment_status}, physical_card_advance_shipment_params.PhysicalCardAdvanceShipmentParams, diff --git a/src/increase/resources/simulations/real_time_payments_transfers.py b/src/increase/resources/simulations/real_time_payments_transfers.py index 28faff7a0..a093e3042 100644 --- a/src/increase/resources/simulations/real_time_payments_transfers.py +++ b/src/increase/resources/simulations/real_time_payments_transfers.py @@ -5,7 +5,7 @@ import httpx from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from ..._utils import maybe_transform, async_maybe_transform +from ..._utils import path_template, maybe_transform, async_maybe_transform from ..._compat import cached_property from ..._resource import SyncAPIResource, AsyncAPIResource from ..._response import ( @@ -80,7 +80,10 @@ def complete( f"Expected a non-empty value for `real_time_payments_transfer_id` but received {real_time_payments_transfer_id!r}" ) return self._post( - f"/simulations/real_time_payments_transfers/{real_time_payments_transfer_id}/complete", + path_template( + "/simulations/real_time_payments_transfers/{real_time_payments_transfer_id}/complete", + real_time_payments_transfer_id=real_time_payments_transfer_id, + ), body=maybe_transform( {"rejection": rejection}, real_time_payments_transfer_complete_params.RealTimePaymentsTransferCompleteParams, @@ -155,7 +158,10 @@ async def complete( f"Expected a non-empty value for `real_time_payments_transfer_id` but received {real_time_payments_transfer_id!r}" ) return await self._post( - f"/simulations/real_time_payments_transfers/{real_time_payments_transfer_id}/complete", + path_template( + "/simulations/real_time_payments_transfers/{real_time_payments_transfer_id}/complete", + real_time_payments_transfer_id=real_time_payments_transfer_id, + ), body=await async_maybe_transform( {"rejection": rejection}, real_time_payments_transfer_complete_params.RealTimePaymentsTransferCompleteParams, diff --git a/src/increase/resources/simulations/wire_drawdown_requests.py b/src/increase/resources/simulations/wire_drawdown_requests.py index 2b56cd0de..a3c8cc56b 100644 --- a/src/increase/resources/simulations/wire_drawdown_requests.py +++ b/src/increase/resources/simulations/wire_drawdown_requests.py @@ -5,6 +5,7 @@ import httpx from ..._types import Body, Query, Headers, NotGiven, not_given +from ..._utils import path_template from ..._compat import cached_property from ..._resource import SyncAPIResource, AsyncAPIResource from ..._response import ( @@ -72,7 +73,10 @@ def refuse( 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}/refuse", + path_template( + "/simulations/wire_drawdown_requests/{wire_drawdown_request_id}/refuse", + wire_drawdown_request_id=wire_drawdown_request_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -116,7 +120,10 @@ def submit( 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", + path_template( + "/simulations/wire_drawdown_requests/{wire_drawdown_request_id}/submit", + wire_drawdown_request_id=wire_drawdown_request_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -181,7 +188,10 @@ async def refuse( 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}/refuse", + path_template( + "/simulations/wire_drawdown_requests/{wire_drawdown_request_id}/refuse", + wire_drawdown_request_id=wire_drawdown_request_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -225,7 +235,10 @@ async def submit( 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", + path_template( + "/simulations/wire_drawdown_requests/{wire_drawdown_request_id}/submit", + wire_drawdown_request_id=wire_drawdown_request_id, + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/simulations/wire_transfers.py b/src/increase/resources/simulations/wire_transfers.py index 0be0eeaa4..f46dd3675 100644 --- a/src/increase/resources/simulations/wire_transfers.py +++ b/src/increase/resources/simulations/wire_transfers.py @@ -5,6 +5,7 @@ import httpx from ..._types import Body, Query, Headers, NotGiven, not_given +from ..._utils import path_template from ..._compat import cached_property from ..._resource import SyncAPIResource, AsyncAPIResource from ..._response import ( @@ -73,7 +74,7 @@ def reverse( if not wire_transfer_id: raise ValueError(f"Expected a non-empty value for `wire_transfer_id` but received {wire_transfer_id!r}") return self._post( - f"/simulations/wire_transfers/{wire_transfer_id}/reverse", + path_template("/simulations/wire_transfers/{wire_transfer_id}/reverse", wire_transfer_id=wire_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -117,7 +118,7 @@ def submit( if not wire_transfer_id: raise ValueError(f"Expected a non-empty value for `wire_transfer_id` but received {wire_transfer_id!r}") return self._post( - f"/simulations/wire_transfers/{wire_transfer_id}/submit", + path_template("/simulations/wire_transfers/{wire_transfer_id}/submit", wire_transfer_id=wire_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -183,7 +184,7 @@ async def reverse( if not wire_transfer_id: raise ValueError(f"Expected a non-empty value for `wire_transfer_id` but received {wire_transfer_id!r}") return await self._post( - f"/simulations/wire_transfers/{wire_transfer_id}/reverse", + path_template("/simulations/wire_transfers/{wire_transfer_id}/reverse", wire_transfer_id=wire_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -227,7 +228,7 @@ async def submit( if not wire_transfer_id: raise ValueError(f"Expected a non-empty value for `wire_transfer_id` but received {wire_transfer_id!r}") return await self._post( - f"/simulations/wire_transfers/{wire_transfer_id}/submit", + path_template("/simulations/wire_transfers/{wire_transfer_id}/submit", wire_transfer_id=wire_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/swift_transfers.py b/src/increase/resources/swift_transfers.py index 1573ac604..df75020e3 100644 --- a/src/increase/resources/swift_transfers.py +++ b/src/increase/resources/swift_transfers.py @@ -8,7 +8,7 @@ from ..types import swift_transfer_list_params, swift_transfer_create_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -172,7 +172,7 @@ def retrieve( if not swift_transfer_id: raise ValueError(f"Expected a non-empty value for `swift_transfer_id` but received {swift_transfer_id!r}") return self._get( - f"/swift_transfers/{swift_transfer_id}", + path_template("/swift_transfers/{swift_transfer_id}", swift_transfer_id=swift_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -273,7 +273,7 @@ def approve( if not swift_transfer_id: raise ValueError(f"Expected a non-empty value for `swift_transfer_id` but received {swift_transfer_id!r}") return self._post( - f"/swift_transfers/{swift_transfer_id}/approve", + path_template("/swift_transfers/{swift_transfer_id}/approve", swift_transfer_id=swift_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -315,7 +315,7 @@ def cancel( if not swift_transfer_id: raise ValueError(f"Expected a non-empty value for `swift_transfer_id` but received {swift_transfer_id!r}") return self._post( - f"/swift_transfers/{swift_transfer_id}/cancel", + path_template("/swift_transfers/{swift_transfer_id}/cancel", swift_transfer_id=swift_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -475,7 +475,7 @@ async def retrieve( if not swift_transfer_id: raise ValueError(f"Expected a non-empty value for `swift_transfer_id` but received {swift_transfer_id!r}") return await self._get( - f"/swift_transfers/{swift_transfer_id}", + path_template("/swift_transfers/{swift_transfer_id}", swift_transfer_id=swift_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -576,7 +576,7 @@ async def approve( if not swift_transfer_id: raise ValueError(f"Expected a non-empty value for `swift_transfer_id` but received {swift_transfer_id!r}") return await self._post( - f"/swift_transfers/{swift_transfer_id}/approve", + path_template("/swift_transfers/{swift_transfer_id}/approve", swift_transfer_id=swift_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -618,7 +618,7 @@ async def cancel( if not swift_transfer_id: raise ValueError(f"Expected a non-empty value for `swift_transfer_id` but received {swift_transfer_id!r}") return await self._post( - f"/swift_transfers/{swift_transfer_id}/cancel", + path_template("/swift_transfers/{swift_transfer_id}/cancel", swift_transfer_id=swift_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/src/increase/resources/transactions.py b/src/increase/resources/transactions.py index d61dda617..7bbadaf7e 100644 --- a/src/increase/resources/transactions.py +++ b/src/increase/resources/transactions.py @@ -6,7 +6,7 @@ from ..types import transaction_list_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform +from .._utils import path_template, maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -70,7 +70,7 @@ def retrieve( if not transaction_id: raise ValueError(f"Expected a non-empty value for `transaction_id` but received {transaction_id!r}") return self._get( - f"/transactions/{transaction_id}", + path_template("/transactions/{transaction_id}", transaction_id=transaction_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -187,7 +187,7 @@ async def retrieve( if not transaction_id: raise ValueError(f"Expected a non-empty value for `transaction_id` but received {transaction_id!r}") return await self._get( - f"/transactions/{transaction_id}", + path_template("/transactions/{transaction_id}", transaction_id=transaction_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/wire_drawdown_requests.py b/src/increase/resources/wire_drawdown_requests.py index a05d7ad2b..6a3defdc7 100644 --- a/src/increase/resources/wire_drawdown_requests.py +++ b/src/increase/resources/wire_drawdown_requests.py @@ -8,7 +8,7 @@ from ..types import wire_drawdown_request_list_params, wire_drawdown_request_create_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -172,7 +172,9 @@ def retrieve( f"Expected a non-empty value for `wire_drawdown_request_id` but received {wire_drawdown_request_id!r}" ) return self._get( - f"/wire_drawdown_requests/{wire_drawdown_request_id}", + path_template( + "/wire_drawdown_requests/{wire_drawdown_request_id}", wire_drawdown_request_id=wire_drawdown_request_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -385,7 +387,9 @@ async def retrieve( f"Expected a non-empty value for `wire_drawdown_request_id` but received {wire_drawdown_request_id!r}" ) return await self._get( - f"/wire_drawdown_requests/{wire_drawdown_request_id}", + path_template( + "/wire_drawdown_requests/{wire_drawdown_request_id}", wire_drawdown_request_id=wire_drawdown_request_id + ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), diff --git a/src/increase/resources/wire_transfers.py b/src/increase/resources/wire_transfers.py index c2a5a72f4..86a714336 100644 --- a/src/increase/resources/wire_transfers.py +++ b/src/increase/resources/wire_transfers.py @@ -6,7 +6,7 @@ from ..types import wire_transfer_list_params, wire_transfer_create_params from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given -from .._utils import maybe_transform, async_maybe_transform +from .._utils import path_template, maybe_transform, async_maybe_transform from .._compat import cached_property from .._resource import SyncAPIResource, AsyncAPIResource from .._response import ( @@ -161,7 +161,7 @@ def retrieve( if not wire_transfer_id: raise ValueError(f"Expected a non-empty value for `wire_transfer_id` but received {wire_transfer_id!r}") return self._get( - f"/wire_transfers/{wire_transfer_id}", + path_template("/wire_transfers/{wire_transfer_id}", wire_transfer_id=wire_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -266,7 +266,7 @@ def approve( if not wire_transfer_id: raise ValueError(f"Expected a non-empty value for `wire_transfer_id` but received {wire_transfer_id!r}") return self._post( - f"/wire_transfers/{wire_transfer_id}/approve", + path_template("/wire_transfers/{wire_transfer_id}/approve", wire_transfer_id=wire_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -308,7 +308,7 @@ def cancel( if not wire_transfer_id: raise ValueError(f"Expected a non-empty value for `wire_transfer_id` but received {wire_transfer_id!r}") return self._post( - f"/wire_transfers/{wire_transfer_id}/cancel", + path_template("/wire_transfers/{wire_transfer_id}/cancel", wire_transfer_id=wire_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -459,7 +459,7 @@ async def retrieve( if not wire_transfer_id: raise ValueError(f"Expected a non-empty value for `wire_transfer_id` but received {wire_transfer_id!r}") return await self._get( - f"/wire_transfers/{wire_transfer_id}", + path_template("/wire_transfers/{wire_transfer_id}", wire_transfer_id=wire_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), @@ -564,7 +564,7 @@ async def approve( if not wire_transfer_id: raise ValueError(f"Expected a non-empty value for `wire_transfer_id` but received {wire_transfer_id!r}") return await self._post( - f"/wire_transfers/{wire_transfer_id}/approve", + path_template("/wire_transfers/{wire_transfer_id}/approve", wire_transfer_id=wire_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, @@ -606,7 +606,7 @@ async def cancel( if not wire_transfer_id: raise ValueError(f"Expected a non-empty value for `wire_transfer_id` but received {wire_transfer_id!r}") return await self._post( - f"/wire_transfers/{wire_transfer_id}/cancel", + path_template("/wire_transfers/{wire_transfer_id}/cancel", wire_transfer_id=wire_transfer_id), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, diff --git a/tests/test_utils/test_path.py b/tests/test_utils/test_path.py new file mode 100644 index 000000000..a98e77c6a --- /dev/null +++ b/tests/test_utils/test_path.py @@ -0,0 +1,89 @@ +from __future__ import annotations + +from typing import Any + +import pytest + +from increase._utils._path import path_template + + +@pytest.mark.parametrize( + "template, kwargs, expected", + [ + ("/v1/{id}", dict(id="abc"), "/v1/abc"), + ("/v1/{a}/{b}", dict(a="x", b="y"), "/v1/x/y"), + ("/v1/{a}{b}/path/{c}?val={d}#{e}", dict(a="x", b="y", c="z", d="u", e="v"), "/v1/xy/path/z?val=u#v"), + ("/{w}/{w}", dict(w="echo"), "/echo/echo"), + ("/v1/static", {}, "/v1/static"), + ("", {}, ""), + ("/v1/?q={n}&count=10", dict(n=42), "/v1/?q=42&count=10"), + ("/v1/{v}", dict(v=None), "/v1/null"), + ("/v1/{v}", dict(v=True), "/v1/true"), + ("/v1/{v}", dict(v=False), "/v1/false"), + ("/v1/{v}", dict(v=".hidden"), "/v1/.hidden"), # dot prefix ok + ("/v1/{v}", dict(v="file.txt"), "/v1/file.txt"), # dot in middle ok + ("/v1/{v}", dict(v="..."), "/v1/..."), # triple dot ok + ("/v1/{a}{b}", dict(a=".", b="txt"), "/v1/.txt"), # dot var combining with adjacent to be ok + ("/items?q={v}#{f}", dict(v=".", f=".."), "/items?q=.#.."), # dots in query/fragment are fine + ( + "/v1/{a}?query={b}", + dict(a="../../other/endpoint", b="a&bad=true"), + "/v1/..%2F..%2Fother%2Fendpoint?query=a%26bad%3Dtrue", + ), + ("/v1/{val}", dict(val="a/b/c"), "/v1/a%2Fb%2Fc"), + ("/v1/{val}", dict(val="a/b/c?query=value"), "/v1/a%2Fb%2Fc%3Fquery=value"), + ("/v1/{val}", dict(val="a/b/c?query=value&bad=true"), "/v1/a%2Fb%2Fc%3Fquery=value&bad=true"), + ("/v1/{val}", dict(val="%20"), "/v1/%2520"), # escapes escape sequences in input + # Query: slash and ? are safe, # is not + ("/items?q={v}", dict(v="a/b"), "/items?q=a/b"), + ("/items?q={v}", dict(v="a?b"), "/items?q=a?b"), + ("/items?q={v}", dict(v="a#b"), "/items?q=a%23b"), + ("/items?q={v}", dict(v="a b"), "/items?q=a%20b"), + # Fragment: slash and ? are safe + ("/docs#{v}", dict(v="a/b"), "/docs#a/b"), + ("/docs#{v}", dict(v="a?b"), "/docs#a?b"), + # Path: slash, ? and # are all encoded + ("/v1/{v}", dict(v="a/b"), "/v1/a%2Fb"), + ("/v1/{v}", dict(v="a?b"), "/v1/a%3Fb"), + ("/v1/{v}", dict(v="a#b"), "/v1/a%23b"), + # same var encoded differently by component + ( + "/v1/{v}?q={v}#{v}", + dict(v="a/b?c#d"), + "/v1/a%2Fb%3Fc%23d?q=a/b?c%23d#a/b?c%23d", + ), + ("/v1/{val}", dict(val="x?admin=true"), "/v1/x%3Fadmin=true"), # query injection + ("/v1/{val}", dict(val="x#admin"), "/v1/x%23admin"), # fragment injection + ], +) +def test_interpolation(template: str, kwargs: dict[str, Any], expected: str) -> None: + assert path_template(template, **kwargs) == expected + + +def test_missing_kwarg_raises_key_error() -> None: + with pytest.raises(KeyError, match="org_id"): + path_template("/v1/{org_id}") + + +@pytest.mark.parametrize( + "template, kwargs", + [ + ("{a}/path", dict(a=".")), + ("{a}/path", dict(a="..")), + ("/v1/{a}", dict(a=".")), + ("/v1/{a}", dict(a="..")), + ("/v1/{a}/path", dict(a=".")), + ("/v1/{a}/path", dict(a="..")), + ("/v1/{a}{b}", dict(a=".", b=".")), # adjacent vars → ".." + ("/v1/{a}.", dict(a=".")), # var + static → ".." + ("/v1/{a}{b}", dict(a="", b=".")), # empty + dot → "." + ("/v1/%2e/{x}", dict(x="ok")), # encoded dot in static text + ("/v1/%2e./{x}", dict(x="ok")), # mixed encoded ".." in static + ("/v1/.%2E/{x}", dict(x="ok")), # mixed encoded ".." in static + ("/v1/{v}?q=1", dict(v="..")), + ("/v1/{v}#frag", dict(v="..")), + ], +) +def test_dot_segment_rejected(template: str, kwargs: dict[str, Any]) -> None: + with pytest.raises(ValueError, match="dot-segment"): + path_template(template, **kwargs) From 361b555388b05d2b0577527e6482c80c77052fa9 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 19 Mar 2026 15:43:57 +0000 Subject: [PATCH 2/2] release: 0.450.1 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ pyproject.toml | 2 +- src/increase/_version.py | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 39ba1f879..b72fe7783 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.450.0" + ".": "0.450.1" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index e91eb08d6..34c88ba8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.450.1 (2026-03-19) + +Full Changelog: [v0.450.0...v0.450.1](https://github.com/Increase/increase-python/compare/v0.450.0...v0.450.1) + +### Bug Fixes + +* sanitize endpoint path params ([a6837bc](https://github.com/Increase/increase-python/commit/a6837bcb1f4ab0d357274b86f098ccd636ddb467)) + ## 0.450.0 (2026-03-19) Full Changelog: [v0.449.0...v0.450.0](https://github.com/Increase/increase-python/compare/v0.449.0...v0.450.0) diff --git a/pyproject.toml b/pyproject.toml index e363c8dba..6323c4522 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "increase" -version = "0.450.0" +version = "0.450.1" 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 ea6a8848a..98a34240b 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.450.0" # x-release-please-version +__version__ = "0.450.1" # x-release-please-version