diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 3a7ed508c..e2504c710 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.208.0" + ".": "0.209.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 6b3168540..a84aabbd9 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,2 +1,2 @@ -configured_endpoints: 201 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-7b89d3a40ae97579e589512ffb00e48f1cdd04e38d075dd8c5a16f80909ccfd5.yml +configured_endpoints: 199 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-9d92797be06309903a9181e5f4f3c026a669fd40520da94b21f09eda84dfb65d.yml diff --git a/CHANGELOG.md b/CHANGELOG.md index d51368558..f1fe0d57f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.209.0 (2025-03-15) + +Full Changelog: [v0.208.0...v0.209.0](https://github.com/Increase/increase-python/compare/v0.208.0...v0.209.0) + +### Features + +* **api:** api update ([#1035](https://github.com/Increase/increase-python/issues/1035)) ([4017f3d](https://github.com/Increase/increase-python/commit/4017f3d1fd27732b3264c988251f151deb1cdc25)) + ## 0.208.0 (2025-03-15) Full Changelog: [v0.207.1...v0.208.0](https://github.com/Increase/increase-python/compare/v0.207.1...v0.208.0) diff --git a/api.md b/api.md index 83c51db42..7c38a2370 100644 --- a/api.md +++ b/api.md @@ -543,8 +543,6 @@ from increase.types import FileLink Methods: - client.file_links.create(\*\*params) -> FileLink -- client.file_links.retrieve(file_link_id) -> FileLink -- client.file_links.list(\*\*params) -> SyncPage[FileLink] # Documents diff --git a/pyproject.toml b/pyproject.toml index d6e898cd8..83fe3f7a5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "increase" -version = "0.208.0" +version = "0.209.0" description = "The official Python library for the increase API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/increase/_version.py b/src/increase/_version.py index abaad9a5f..9ae988484 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.208.0" # x-release-please-version +__version__ = "0.209.0" # x-release-please-version diff --git a/src/increase/resources/file_links.py b/src/increase/resources/file_links.py index 30d79e14e..9f8cbb7ad 100644 --- a/src/increase/resources/file_links.py +++ b/src/increase/resources/file_links.py @@ -7,7 +7,7 @@ import httpx -from ..types import file_link_list_params, file_link_create_params +from ..types import file_link_create_params from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven from .._utils import ( maybe_transform, @@ -21,8 +21,7 @@ async_to_raw_response_wrapper, async_to_streamed_response_wrapper, ) -from ..pagination import SyncPage, AsyncPage -from .._base_client import AsyncPaginator, make_request_options +from .._base_client import make_request_options from ..types.file_link import FileLink __all__ = ["FileLinksResource", "AsyncFileLinksResource"] @@ -99,102 +98,6 @@ def create( cast_to=FileLink, ) - def retrieve( - self, - file_link_id: str, - *, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> FileLink: - """ - Retrieve a File Link - - Args: - file_link_id: The identifier of the File Link. - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not file_link_id: - raise ValueError(f"Expected a non-empty value for `file_link_id` but received {file_link_id!r}") - return self._get( - f"/file_links/{file_link_id}", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=FileLink, - ) - - def list( - self, - *, - file_id: str, - created_at: file_link_list_params.CreatedAt | NotGiven = NOT_GIVEN, - cursor: str | NotGiven = NOT_GIVEN, - idempotency_key: str | NotGiven = NOT_GIVEN, - limit: int | NotGiven = NOT_GIVEN, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> SyncPage[FileLink]: - """ - List File Links - - Args: - file_id: The identifier of the File to list File Links for. - - cursor: Return the page of entries after this one. - - idempotency_key: Filter records to the one with the specified `idempotency_key` you chose for - that object. This value is unique across Increase and is used to ensure that a - request is only processed once. Learn more about - [idempotency](https://increase.com/documentation/idempotency-keys). - - limit: Limit the size of the list that is returned. The default (and maximum) is 100 - objects. - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - return self._get_api_list( - "/file_links", - page=SyncPage[FileLink], - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=maybe_transform( - { - "file_id": file_id, - "created_at": created_at, - "cursor": cursor, - "idempotency_key": idempotency_key, - "limit": limit, - }, - file_link_list_params.FileLinkListParams, - ), - ), - model=FileLink, - ) - class AsyncFileLinksResource(AsyncAPIResource): @cached_property @@ -267,102 +170,6 @@ async def create( cast_to=FileLink, ) - async def retrieve( - self, - file_link_id: str, - *, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> FileLink: - """ - Retrieve a File Link - - Args: - file_link_id: The identifier of the File Link. - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - if not file_link_id: - raise ValueError(f"Expected a non-empty value for `file_link_id` but received {file_link_id!r}") - return await self._get( - f"/file_links/{file_link_id}", - options=make_request_options( - extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout - ), - cast_to=FileLink, - ) - - def list( - self, - *, - file_id: str, - created_at: file_link_list_params.CreatedAt | NotGiven = NOT_GIVEN, - cursor: str | NotGiven = NOT_GIVEN, - idempotency_key: str | NotGiven = NOT_GIVEN, - limit: int | NotGiven = NOT_GIVEN, - # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. - # The extra values given here take precedence over values defined on the client or passed to this method. - extra_headers: Headers | None = None, - extra_query: Query | None = None, - extra_body: Body | None = None, - timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> AsyncPaginator[FileLink, AsyncPage[FileLink]]: - """ - List File Links - - Args: - file_id: The identifier of the File to list File Links for. - - cursor: Return the page of entries after this one. - - idempotency_key: Filter records to the one with the specified `idempotency_key` you chose for - that object. This value is unique across Increase and is used to ensure that a - request is only processed once. Learn more about - [idempotency](https://increase.com/documentation/idempotency-keys). - - limit: Limit the size of the list that is returned. The default (and maximum) is 100 - objects. - - extra_headers: Send extra headers - - extra_query: Add additional query parameters to the request - - extra_body: Add additional JSON properties to the request - - timeout: Override the client-level default timeout for this request, in seconds - """ - return self._get_api_list( - "/file_links", - page=AsyncPage[FileLink], - options=make_request_options( - extra_headers=extra_headers, - extra_query=extra_query, - extra_body=extra_body, - timeout=timeout, - query=maybe_transform( - { - "file_id": file_id, - "created_at": created_at, - "cursor": cursor, - "idempotency_key": idempotency_key, - "limit": limit, - }, - file_link_list_params.FileLinkListParams, - ), - ), - model=FileLink, - ) - class FileLinksResourceWithRawResponse: def __init__(self, file_links: FileLinksResource) -> None: @@ -371,12 +178,6 @@ def __init__(self, file_links: FileLinksResource) -> None: self.create = to_raw_response_wrapper( file_links.create, ) - self.retrieve = to_raw_response_wrapper( - file_links.retrieve, - ) - self.list = to_raw_response_wrapper( - file_links.list, - ) class AsyncFileLinksResourceWithRawResponse: @@ -386,12 +187,6 @@ def __init__(self, file_links: AsyncFileLinksResource) -> None: self.create = async_to_raw_response_wrapper( file_links.create, ) - self.retrieve = async_to_raw_response_wrapper( - file_links.retrieve, - ) - self.list = async_to_raw_response_wrapper( - file_links.list, - ) class FileLinksResourceWithStreamingResponse: @@ -401,12 +196,6 @@ def __init__(self, file_links: FileLinksResource) -> None: self.create = to_streamed_response_wrapper( file_links.create, ) - self.retrieve = to_streamed_response_wrapper( - file_links.retrieve, - ) - self.list = to_streamed_response_wrapper( - file_links.list, - ) class AsyncFileLinksResourceWithStreamingResponse: @@ -416,9 +205,3 @@ def __init__(self, file_links: AsyncFileLinksResource) -> None: self.create = async_to_streamed_response_wrapper( file_links.create, ) - self.retrieve = async_to_streamed_response_wrapper( - file_links.retrieve, - ) - self.list = async_to_streamed_response_wrapper( - file_links.list, - ) diff --git a/src/increase/types/__init__.py b/src/increase/types/__init__.py index 16bcc0f21..c099e4be4 100644 --- a/src/increase/types/__init__.py +++ b/src/increase/types/__init__.py @@ -61,7 +61,6 @@ from .account_update_params import AccountUpdateParams as AccountUpdateParams from .bookkeeping_entry_set import BookkeepingEntrySet as BookkeepingEntrySet from .entity_confirm_params import EntityConfirmParams as EntityConfirmParams -from .file_link_list_params import FileLinkListParams as FileLinkListParams from .inbound_check_deposit import InboundCheckDeposit as InboundCheckDeposit from .inbound_wire_transfer import InboundWireTransfer as InboundWireTransfer from .lockbox_create_params import LockboxCreateParams as LockboxCreateParams diff --git a/src/increase/types/file.py b/src/increase/types/file.py index e3cfe6f99..f99ab79e9 100644 --- a/src/increase/types/file.py +++ b/src/increase/types/file.py @@ -26,14 +26,6 @@ class File(BaseModel): - `from_increase` - This File was generated by Increase. """ - download_url: Optional[str] = None - """A URL from where the File can be downloaded at this point in time. - - The location of this URL may change over time. This URL requires authentication - with your Increase API key. If you need a URL that does not require - authentication, create a File Link instead. - """ - filename: Optional[str] = None """The filename that was provided upon upload or generated by Increase.""" diff --git a/src/increase/types/file_link.py b/src/increase/types/file_link.py index 926b15119..5299453d0 100644 --- a/src/increase/types/file_link.py +++ b/src/increase/types/file_link.py @@ -36,15 +36,15 @@ class FileLink(BaseModel): [idempotency](https://increase.com/documentation/idempotency-keys). """ - public_download_url: str - """A URL where the File can be downloaded. - - The URL will expire after the `expires_at` time. This URL is unauthenticated and - can be used to download the File without an Increase API key. - """ - type: Literal["file_link"] """A constant representing the object's type. For this resource it will always be `file_link`. """ + + unauthenticated_url: str + """A URL where the File can be downloaded. + + The URL will expire after the `expires_at` time. This URL is unauthenticated and + can be used to download the File without an Increase API key. + """ diff --git a/src/increase/types/file_link_list_params.py b/src/increase/types/file_link_list_params.py deleted file mode 100644 index 432f19d06..000000000 --- a/src/increase/types/file_link_list_params.py +++ /dev/null @@ -1,61 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from __future__ import annotations - -from typing import Union -from datetime import datetime -from typing_extensions import Required, Annotated, TypedDict - -from .._utils import PropertyInfo - -__all__ = ["FileLinkListParams", "CreatedAt"] - - -class FileLinkListParams(TypedDict, total=False): - file_id: Required[str] - """The identifier of the File to list File Links for.""" - - created_at: CreatedAt - - cursor: str - """Return the page of entries after this one.""" - - idempotency_key: str - """ - Filter records to the one with the specified `idempotency_key` you chose for - that object. This value is unique across Increase and is used to ensure that a - request is only processed once. Learn more about - [idempotency](https://increase.com/documentation/idempotency-keys). - """ - - limit: int - """Limit the size of the list that is returned. - - The default (and maximum) is 100 objects. - """ - - -class CreatedAt(TypedDict, total=False): - after: Annotated[Union[str, datetime], PropertyInfo(format="iso8601")] - """ - Return results after this [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) - timestamp. - """ - - before: Annotated[Union[str, datetime], PropertyInfo(format="iso8601")] - """ - Return results before this [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) - timestamp. - """ - - on_or_after: Annotated[Union[str, datetime], PropertyInfo(format="iso8601")] - """ - Return results on or after this - [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp. - """ - - on_or_before: Annotated[Union[str, datetime], PropertyInfo(format="iso8601")] - """ - Return results on or before this - [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp. - """ diff --git a/tests/api_resources/test_file_links.py b/tests/api_resources/test_file_links.py index 29df07284..d742e2366 100644 --- a/tests/api_resources/test_file_links.py +++ b/tests/api_resources/test_file_links.py @@ -11,7 +11,6 @@ from tests.utils import assert_matches_type from increase.types import FileLink from increase._utils import parse_datetime -from increase.pagination import SyncPage, AsyncPage base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -58,91 +57,6 @@ def test_streaming_response_create(self, client: Increase) -> None: assert cast(Any, response.is_closed) is True - @parametrize - def test_method_retrieve(self, client: Increase) -> None: - file_link = client.file_links.retrieve( - "file_link_id", - ) - assert_matches_type(FileLink, file_link, path=["response"]) - - @parametrize - def test_raw_response_retrieve(self, client: Increase) -> None: - response = client.file_links.with_raw_response.retrieve( - "file_link_id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - file_link = response.parse() - assert_matches_type(FileLink, file_link, path=["response"]) - - @parametrize - def test_streaming_response_retrieve(self, client: Increase) -> None: - with client.file_links.with_streaming_response.retrieve( - "file_link_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - file_link = response.parse() - assert_matches_type(FileLink, file_link, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - def test_path_params_retrieve(self, client: Increase) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `file_link_id` but received ''"): - client.file_links.with_raw_response.retrieve( - "", - ) - - @parametrize - def test_method_list(self, client: Increase) -> None: - file_link = client.file_links.list( - file_id="file_id", - ) - assert_matches_type(SyncPage[FileLink], file_link, path=["response"]) - - @parametrize - def test_method_list_with_all_params(self, client: Increase) -> None: - file_link = client.file_links.list( - file_id="file_id", - created_at={ - "after": parse_datetime("2019-12-27T18:11:19.117Z"), - "before": parse_datetime("2019-12-27T18:11:19.117Z"), - "on_or_after": parse_datetime("2019-12-27T18:11:19.117Z"), - "on_or_before": parse_datetime("2019-12-27T18:11:19.117Z"), - }, - cursor="cursor", - idempotency_key="x", - limit=1, - ) - assert_matches_type(SyncPage[FileLink], file_link, path=["response"]) - - @parametrize - def test_raw_response_list(self, client: Increase) -> None: - response = client.file_links.with_raw_response.list( - file_id="file_id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - file_link = response.parse() - assert_matches_type(SyncPage[FileLink], file_link, path=["response"]) - - @parametrize - def test_streaming_response_list(self, client: Increase) -> None: - with client.file_links.with_streaming_response.list( - file_id="file_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - file_link = response.parse() - assert_matches_type(SyncPage[FileLink], file_link, path=["response"]) - - assert cast(Any, response.is_closed) is True - class TestAsyncFileLinks: parametrize = pytest.mark.parametrize("async_client", [False, True], indirect=True, ids=["loose", "strict"]) @@ -185,88 +99,3 @@ async def test_streaming_response_create(self, async_client: AsyncIncrease) -> N assert_matches_type(FileLink, file_link, path=["response"]) assert cast(Any, response.is_closed) is True - - @parametrize - async def test_method_retrieve(self, async_client: AsyncIncrease) -> None: - file_link = await async_client.file_links.retrieve( - "file_link_id", - ) - assert_matches_type(FileLink, file_link, path=["response"]) - - @parametrize - async def test_raw_response_retrieve(self, async_client: AsyncIncrease) -> None: - response = await async_client.file_links.with_raw_response.retrieve( - "file_link_id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - file_link = await response.parse() - assert_matches_type(FileLink, file_link, path=["response"]) - - @parametrize - async def test_streaming_response_retrieve(self, async_client: AsyncIncrease) -> None: - async with async_client.file_links.with_streaming_response.retrieve( - "file_link_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - file_link = await response.parse() - assert_matches_type(FileLink, file_link, path=["response"]) - - assert cast(Any, response.is_closed) is True - - @parametrize - async def test_path_params_retrieve(self, async_client: AsyncIncrease) -> None: - with pytest.raises(ValueError, match=r"Expected a non-empty value for `file_link_id` but received ''"): - await async_client.file_links.with_raw_response.retrieve( - "", - ) - - @parametrize - async def test_method_list(self, async_client: AsyncIncrease) -> None: - file_link = await async_client.file_links.list( - file_id="file_id", - ) - assert_matches_type(AsyncPage[FileLink], file_link, path=["response"]) - - @parametrize - async def test_method_list_with_all_params(self, async_client: AsyncIncrease) -> None: - file_link = await async_client.file_links.list( - file_id="file_id", - created_at={ - "after": parse_datetime("2019-12-27T18:11:19.117Z"), - "before": parse_datetime("2019-12-27T18:11:19.117Z"), - "on_or_after": parse_datetime("2019-12-27T18:11:19.117Z"), - "on_or_before": parse_datetime("2019-12-27T18:11:19.117Z"), - }, - cursor="cursor", - idempotency_key="x", - limit=1, - ) - assert_matches_type(AsyncPage[FileLink], file_link, path=["response"]) - - @parametrize - async def test_raw_response_list(self, async_client: AsyncIncrease) -> None: - response = await async_client.file_links.with_raw_response.list( - file_id="file_id", - ) - - assert response.is_closed is True - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - file_link = await response.parse() - assert_matches_type(AsyncPage[FileLink], file_link, path=["response"]) - - @parametrize - async def test_streaming_response_list(self, async_client: AsyncIncrease) -> None: - async with async_client.file_links.with_streaming_response.list( - file_id="file_id", - ) as response: - assert not response.is_closed - assert response.http_request.headers.get("X-Stainless-Lang") == "python" - - file_link = await response.parse() - assert_matches_type(AsyncPage[FileLink], file_link, path=["response"]) - - assert cast(Any, response.is_closed) is True