From 7ac875106bdcfb8bfb097b971f48ecd88d06c26a Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 9 Apr 2025 13:48:22 +0000
Subject: [PATCH 1/8] feat(api): api update (#646)
---
.stats.yml | 4 +-
api.md | 11 ++---
src/finch/resources/hris/benefits/benefits.py | 14 +++----
.../resources/hris/benefits/individuals.py | 40 +++++++++----------
src/finch/types/hris/__init__.py | 4 +-
...nefit_list_supported_benefits_response.py} | 8 +---
src/finch/types/hris/benefits/__init__.py | 3 +-
.../hris/benefits/enrolled_individual.py | 28 -------------
.../individual_enroll_many_response.py | 10 +++++
.../hris/benefits/unenrolled_individual.py | 27 -------------
.../hris/create_company_benefits_response.py | 2 +
.../hris/update_company_benefit_response.py | 2 +
.../hris/benefits/test_individuals.py | 35 ++++++++--------
tests/api_resources/hris/test_benefits.py | 14 +++----
14 files changed, 78 insertions(+), 124 deletions(-)
rename src/finch/types/hris/{supported_benefit.py => benefit_list_supported_benefits_response.py} (88%)
delete mode 100644 src/finch/types/hris/benefits/enrolled_individual.py
create mode 100644 src/finch/types/hris/benefits/individual_enroll_many_response.py
delete mode 100644 src/finch/types/hris/benefits/unenrolled_individual.py
diff --git a/.stats.yml b/.stats.yml
index a45a587e..950c125e 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 46
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-14d375aab89e6b212fe459805a42d6ea7d7da8eae2037ae710a187d06911be1d.yml
-openapi_spec_hash: 08b86ecbec3323717d48e4aaee48ed54
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-8c83f0eae70d2a02ed3e2059fc251affdccd2f848f45445e4fed64dfd9ca5985.yml
+openapi_spec_hash: 2523952a32436e3c7fd3b55508c2e7ee
config_hash: ce10384813f68ba3fed61c7b601b396b
diff --git a/api.md b/api.md
index 13b455d8..1a45d403 100644
--- a/api.md
+++ b/api.md
@@ -170,6 +170,7 @@ from finch.types.hris import (
SupportPerBenefitType,
SupportedBenefit,
UpdateCompanyBenefitResponse,
+ BenefitListSupportedBenefitsResponse,
BenfitContribution,
)
```
@@ -180,7 +181,7 @@ Methods:
- client.hris.benefits.retrieve(benefit_id) -> CompanyBenefit
- client.hris.benefits.update(benefit_id, \*\*params) -> UpdateCompanyBenefitResponse
- client.hris.benefits.list() -> SyncSinglePage[CompanyBenefit]
-- client.hris.benefits.list_supported_benefits() -> SyncSinglePage[SupportedBenefit]
+- client.hris.benefits.list_supported_benefits() -> SyncSinglePage[BenefitListSupportedBenefitsResponse]
### Individuals
@@ -188,19 +189,19 @@ Types:
```python
from finch.types.hris.benefits import (
- EnrolledIndividual,
IndividualBenefit,
- UnenrolledIndividual,
+ IndividualEnrollManyResponse,
IndividualEnrolledIDsResponse,
+ IndividualUnenrollManyResponse,
)
```
Methods:
-- client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> SyncSinglePage[EnrolledIndividual]
+- client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> IndividualEnrollManyResponse
- client.hris.benefits.individuals.enrolled_ids(benefit_id) -> IndividualEnrolledIDsResponse
- client.hris.benefits.individuals.retrieve_many_benefits(benefit_id, \*\*params) -> SyncSinglePage[IndividualBenefit]
-- client.hris.benefits.individuals.unenroll_many(benefit_id, \*\*params) -> SyncSinglePage[UnenrolledIndividual]
+- client.hris.benefits.individuals.unenroll_many(benefit_id, \*\*params) -> SyncSinglePage[object]
# Providers
diff --git a/src/finch/resources/hris/benefits/benefits.py b/src/finch/resources/hris/benefits/benefits.py
index cc24e7e1..28fc3a75 100644
--- a/src/finch/resources/hris/benefits/benefits.py
+++ b/src/finch/resources/hris/benefits/benefits.py
@@ -29,9 +29,9 @@
from ....types.hris.benefit_type import BenefitType
from ....types.hris.company_benefit import CompanyBenefit
from ....types.hris.benefit_frequency import BenefitFrequency
-from ....types.hris.supported_benefit import SupportedBenefit
from ....types.hris.update_company_benefit_response import UpdateCompanyBenefitResponse
from ....types.hris.create_company_benefits_response import CreateCompanyBenefitsResponse
+from ....types.hris.benefit_list_supported_benefits_response import BenefitListSupportedBenefitsResponse
__all__ = ["Benefits", "AsyncBenefits"]
@@ -210,15 +210,15 @@ def list_supported_benefits(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> SyncSinglePage[SupportedBenefit]:
+ ) -> SyncSinglePage[BenefitListSupportedBenefitsResponse]:
"""Get deductions metadata"""
return self._get_api_list(
"/employer/benefits/meta",
- page=SyncSinglePage[SupportedBenefit],
+ page=SyncSinglePage[BenefitListSupportedBenefitsResponse],
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- model=SupportedBenefit,
+ model=BenefitListSupportedBenefitsResponse,
)
@@ -396,15 +396,15 @@ def list_supported_benefits(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> AsyncPaginator[SupportedBenefit, AsyncSinglePage[SupportedBenefit]]:
+ ) -> AsyncPaginator[BenefitListSupportedBenefitsResponse, AsyncSinglePage[BenefitListSupportedBenefitsResponse]]:
"""Get deductions metadata"""
return self._get_api_list(
"/employer/benefits/meta",
- page=AsyncSinglePage[SupportedBenefit],
+ page=AsyncSinglePage[BenefitListSupportedBenefitsResponse],
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- model=SupportedBenefit,
+ model=BenefitListSupportedBenefitsResponse,
)
diff --git a/src/finch/resources/hris/benefits/individuals.py b/src/finch/resources/hris/benefits/individuals.py
index c6e472cf..a017e491 100644
--- a/src/finch/resources/hris/benefits/individuals.py
+++ b/src/finch/resources/hris/benefits/individuals.py
@@ -8,7 +8,10 @@
from .... import _legacy_response
from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven
-from ...._utils import maybe_transform
+from ...._utils import (
+ maybe_transform,
+ async_maybe_transform,
+)
from ...._compat import cached_property
from ...._resource import SyncAPIResource, AsyncAPIResource
from ...._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
@@ -20,8 +23,7 @@
individual_retrieve_many_benefits_params,
)
from ....types.hris.benefits.individual_benefit import IndividualBenefit
-from ....types.hris.benefits.enrolled_individual import EnrolledIndividual
-from ....types.hris.benefits.unenrolled_individual import UnenrolledIndividual
+from ....types.hris.benefits.individual_enroll_many_response import IndividualEnrollManyResponse
from ....types.hris.benefits.individual_enrolled_ids_response import IndividualEnrolledIDsResponse
__all__ = ["Individuals", "AsyncIndividuals"]
@@ -58,7 +60,7 @@ def enroll_many(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> SyncSinglePage[EnrolledIndividual]:
+ ) -> IndividualEnrollManyResponse:
"""Enroll an individual into a deduction or contribution.
This is an overwrite
@@ -79,15 +81,13 @@ def enroll_many(
"""
if not benefit_id:
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
- return self._get_api_list(
+ return self._post(
f"/employer/benefits/{benefit_id}/individuals",
- page=SyncSinglePage[EnrolledIndividual],
body=maybe_transform(individuals, Iterable[individual_enroll_many_params.Individual]),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- model=EnrolledIndividual,
- method="post",
+ cast_to=IndividualEnrollManyResponse,
)
def enrolled_ids(
@@ -179,7 +179,7 @@ def unenroll_many(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> SyncSinglePage[UnenrolledIndividual]:
+ ) -> SyncSinglePage[object]:
"""
Unenroll individuals from a deduction or contribution
@@ -198,14 +198,14 @@ def unenroll_many(
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
return self._get_api_list(
f"/employer/benefits/{benefit_id}/individuals",
- page=SyncSinglePage[UnenrolledIndividual],
+ page=SyncSinglePage[object],
body=maybe_transform(
{"individual_ids": individual_ids}, individual_unenroll_many_params.IndividualUnenrollManyParams
),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- model=UnenrolledIndividual,
+ model=object,
method="delete",
)
@@ -230,7 +230,7 @@ def with_streaming_response(self) -> AsyncIndividualsWithStreamingResponse:
"""
return AsyncIndividualsWithStreamingResponse(self)
- def enroll_many(
+ async def enroll_many(
self,
benefit_id: str,
*,
@@ -241,7 +241,7 @@ def enroll_many(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> AsyncPaginator[EnrolledIndividual, AsyncSinglePage[EnrolledIndividual]]:
+ ) -> IndividualEnrollManyResponse:
"""Enroll an individual into a deduction or contribution.
This is an overwrite
@@ -262,15 +262,13 @@ def enroll_many(
"""
if not benefit_id:
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
- return self._get_api_list(
+ return await self._post(
f"/employer/benefits/{benefit_id}/individuals",
- page=AsyncSinglePage[EnrolledIndividual],
- body=maybe_transform(individuals, Iterable[individual_enroll_many_params.Individual]),
+ body=await async_maybe_transform(individuals, Iterable[individual_enroll_many_params.Individual]),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- model=EnrolledIndividual,
- method="post",
+ cast_to=IndividualEnrollManyResponse,
)
async def enrolled_ids(
@@ -362,7 +360,7 @@ def unenroll_many(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> AsyncPaginator[UnenrolledIndividual, AsyncSinglePage[UnenrolledIndividual]]:
+ ) -> AsyncPaginator[object, AsyncSinglePage[object]]:
"""
Unenroll individuals from a deduction or contribution
@@ -381,14 +379,14 @@ def unenroll_many(
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
return self._get_api_list(
f"/employer/benefits/{benefit_id}/individuals",
- page=AsyncSinglePage[UnenrolledIndividual],
+ page=AsyncSinglePage[object],
body=maybe_transform(
{"individual_ids": individual_ids}, individual_unenroll_many_params.IndividualUnenrollManyParams
),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- model=UnenrolledIndividual,
+ model=object,
method="delete",
)
diff --git a/src/finch/types/hris/__init__.py b/src/finch/types/hris/__init__.py
index 40744f3e..4f9edc30 100644
--- a/src/finch/types/hris/__init__.py
+++ b/src/finch/types/hris/__init__.py
@@ -14,7 +14,6 @@
from .benefits_support import BenefitsSupport as BenefitsSupport
from .benefit_frequency import BenefitFrequency as BenefitFrequency
from .document_response import DocumentResponse as DocumentResponse
-from .supported_benefit import SupportedBenefit as SupportedBenefit
from .benfit_contribution import BenfitContribution as BenfitContribution
from .individual_response import IndividualResponse as IndividualResponse
from .payment_list_params import PaymentListParams as PaymentListParams
@@ -37,3 +36,6 @@
from .create_company_benefits_response import CreateCompanyBenefitsResponse as CreateCompanyBenefitsResponse
from .directory_list_individuals_params import DirectoryListIndividualsParams as DirectoryListIndividualsParams
from .pay_statement_retrieve_many_params import PayStatementRetrieveManyParams as PayStatementRetrieveManyParams
+from .benefit_list_supported_benefits_response import (
+ BenefitListSupportedBenefitsResponse as BenefitListSupportedBenefitsResponse,
+)
diff --git a/src/finch/types/hris/supported_benefit.py b/src/finch/types/hris/benefit_list_supported_benefits_response.py
similarity index 88%
rename from src/finch/types/hris/supported_benefit.py
rename to src/finch/types/hris/benefit_list_supported_benefits_response.py
index ef148ffa..e29b2b7f 100644
--- a/src/finch/types/hris/supported_benefit.py
+++ b/src/finch/types/hris/benefit_list_supported_benefits_response.py
@@ -4,13 +4,12 @@
from typing_extensions import Literal
from ..._models import BaseModel
-from .benefit_type import BenefitType
from .benefit_frequency import BenefitFrequency
-__all__ = ["SupportedBenefit"]
+__all__ = ["BenefitListSupportedBenefitsResponse"]
-class SupportedBenefit(BaseModel):
+class BenefitListSupportedBenefitsResponse(BaseModel):
annual_maximum: Optional[bool] = None
"""Whether the provider supports an annual maximum for this benefit."""
@@ -43,6 +42,3 @@ class SupportedBenefit(BaseModel):
Empty if this feature is not supported for the benefit. This array only has
values for HSA benefits.
"""
-
- type: Optional[BenefitType] = None
- """Type of benefit."""
diff --git a/src/finch/types/hris/benefits/__init__.py b/src/finch/types/hris/benefits/__init__.py
index 4cca9ced..34a2f325 100644
--- a/src/finch/types/hris/benefits/__init__.py
+++ b/src/finch/types/hris/benefits/__init__.py
@@ -3,9 +3,8 @@
from __future__ import annotations
from .individual_benefit import IndividualBenefit as IndividualBenefit
-from .enrolled_individual import EnrolledIndividual as EnrolledIndividual
-from .unenrolled_individual import UnenrolledIndividual as UnenrolledIndividual
from .individual_enroll_many_params import IndividualEnrollManyParams as IndividualEnrollManyParams
+from .individual_enroll_many_response import IndividualEnrollManyResponse as IndividualEnrollManyResponse
from .individual_unenroll_many_params import IndividualUnenrollManyParams as IndividualUnenrollManyParams
from .individual_enrolled_ids_response import IndividualEnrolledIDsResponse as IndividualEnrolledIDsResponse
from .individual_retrieve_many_benefits_params import (
diff --git a/src/finch/types/hris/benefits/enrolled_individual.py b/src/finch/types/hris/benefits/enrolled_individual.py
deleted file mode 100644
index c8d6f912..00000000
--- a/src/finch/types/hris/benefits/enrolled_individual.py
+++ /dev/null
@@ -1,28 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from typing import Optional
-from typing_extensions import Literal
-
-from ...._models import BaseModel
-
-__all__ = ["EnrolledIndividual", "Body"]
-
-
-class Body(BaseModel):
- finch_code: Optional[str] = None
- """A descriptive identifier for the response."""
-
- message: Optional[str] = None
- """Short description in English that provides more information about the response."""
-
- name: Optional[str] = None
- """Identifier indicating whether the benefit was newly enrolled or updated."""
-
-
-class EnrolledIndividual(BaseModel):
- body: Optional[Body] = None
-
- code: Optional[Literal[200, 201, 404, 403]] = None
- """HTTP status code. Either 201 or 200"""
-
- individual_id: Optional[str] = None
diff --git a/src/finch/types/hris/benefits/individual_enroll_many_response.py b/src/finch/types/hris/benefits/individual_enroll_many_response.py
new file mode 100644
index 00000000..e205eec5
--- /dev/null
+++ b/src/finch/types/hris/benefits/individual_enroll_many_response.py
@@ -0,0 +1,10 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+
+from ...._models import BaseModel
+
+__all__ = ["IndividualEnrollManyResponse"]
+
+
+class IndividualEnrollManyResponse(BaseModel):
+ job_id: str
diff --git a/src/finch/types/hris/benefits/unenrolled_individual.py b/src/finch/types/hris/benefits/unenrolled_individual.py
deleted file mode 100644
index d9f10497..00000000
--- a/src/finch/types/hris/benefits/unenrolled_individual.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from typing import Optional
-
-from ...._models import BaseModel
-
-__all__ = ["UnenrolledIndividual", "Body"]
-
-
-class Body(BaseModel):
- finch_code: Optional[str] = None
- """A descriptive identifier for the response."""
-
- message: Optional[str] = None
- """Short description in English that provides more information about the response."""
-
- name: Optional[str] = None
- """Identifier indicating whether the benefit was newly enrolled or updated."""
-
-
-class UnenrolledIndividual(BaseModel):
- body: Optional[Body] = None
-
- code: Optional[int] = None
- """HTTP status code"""
-
- individual_id: Optional[str] = None
diff --git a/src/finch/types/hris/create_company_benefits_response.py b/src/finch/types/hris/create_company_benefits_response.py
index e96088af..092bf5c9 100644
--- a/src/finch/types/hris/create_company_benefits_response.py
+++ b/src/finch/types/hris/create_company_benefits_response.py
@@ -9,3 +9,5 @@
class CreateCompanyBenefitsResponse(BaseModel):
benefit_id: str
"""The id of the benefit."""
+
+ job_id: str
diff --git a/src/finch/types/hris/update_company_benefit_response.py b/src/finch/types/hris/update_company_benefit_response.py
index 865b10d6..8f6506e3 100644
--- a/src/finch/types/hris/update_company_benefit_response.py
+++ b/src/finch/types/hris/update_company_benefit_response.py
@@ -9,3 +9,5 @@
class UpdateCompanyBenefitResponse(BaseModel):
benefit_id: str
"""The id of the benefit."""
+
+ job_id: str
diff --git a/tests/api_resources/hris/benefits/test_individuals.py b/tests/api_resources/hris/benefits/test_individuals.py
index d8677fa1..62af21a9 100644
--- a/tests/api_resources/hris/benefits/test_individuals.py
+++ b/tests/api_resources/hris/benefits/test_individuals.py
@@ -13,8 +13,7 @@
from finch.pagination import SyncSinglePage, AsyncSinglePage
from finch.types.hris.benefits import (
IndividualBenefit,
- EnrolledIndividual,
- UnenrolledIndividual,
+ IndividualEnrollManyResponse,
IndividualEnrolledIDsResponse,
)
@@ -29,7 +28,7 @@ def test_method_enroll_many(self, client: Finch) -> None:
individual = client.hris.benefits.individuals.enroll_many(
benefit_id="benefit_id",
)
- assert_matches_type(SyncSinglePage[EnrolledIndividual], individual, path=["response"])
+ assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"])
@parametrize
def test_method_enroll_many_with_all_params(self, client: Finch) -> None:
@@ -55,7 +54,7 @@ def test_method_enroll_many_with_all_params(self, client: Finch) -> None:
}
],
)
- assert_matches_type(SyncSinglePage[EnrolledIndividual], individual, path=["response"])
+ assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"])
@parametrize
def test_raw_response_enroll_many(self, client: Finch) -> None:
@@ -66,7 +65,7 @@ def test_raw_response_enroll_many(self, client: Finch) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(SyncSinglePage[EnrolledIndividual], individual, path=["response"])
+ assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"])
@parametrize
def test_streaming_response_enroll_many(self, client: Finch) -> None:
@@ -77,7 +76,7 @@ def test_streaming_response_enroll_many(self, client: Finch) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(SyncSinglePage[EnrolledIndividual], individual, path=["response"])
+ assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -177,7 +176,7 @@ def test_method_unenroll_many(self, client: Finch) -> None:
individual = client.hris.benefits.individuals.unenroll_many(
benefit_id="benefit_id",
)
- assert_matches_type(SyncSinglePage[UnenrolledIndividual], individual, path=["response"])
+ assert_matches_type(SyncSinglePage[object], individual, path=["response"])
@parametrize
def test_method_unenroll_many_with_all_params(self, client: Finch) -> None:
@@ -185,7 +184,7 @@ def test_method_unenroll_many_with_all_params(self, client: Finch) -> None:
benefit_id="benefit_id",
individual_ids=["string"],
)
- assert_matches_type(SyncSinglePage[UnenrolledIndividual], individual, path=["response"])
+ assert_matches_type(SyncSinglePage[object], individual, path=["response"])
@parametrize
def test_raw_response_unenroll_many(self, client: Finch) -> None:
@@ -196,7 +195,7 @@ def test_raw_response_unenroll_many(self, client: Finch) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(SyncSinglePage[UnenrolledIndividual], individual, path=["response"])
+ assert_matches_type(SyncSinglePage[object], individual, path=["response"])
@parametrize
def test_streaming_response_unenroll_many(self, client: Finch) -> None:
@@ -207,7 +206,7 @@ def test_streaming_response_unenroll_many(self, client: Finch) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(SyncSinglePage[UnenrolledIndividual], individual, path=["response"])
+ assert_matches_type(SyncSinglePage[object], individual, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -227,7 +226,7 @@ async def test_method_enroll_many(self, async_client: AsyncFinch) -> None:
individual = await async_client.hris.benefits.individuals.enroll_many(
benefit_id="benefit_id",
)
- assert_matches_type(AsyncSinglePage[EnrolledIndividual], individual, path=["response"])
+ assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"])
@parametrize
async def test_method_enroll_many_with_all_params(self, async_client: AsyncFinch) -> None:
@@ -253,7 +252,7 @@ async def test_method_enroll_many_with_all_params(self, async_client: AsyncFinch
}
],
)
- assert_matches_type(AsyncSinglePage[EnrolledIndividual], individual, path=["response"])
+ assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"])
@parametrize
async def test_raw_response_enroll_many(self, async_client: AsyncFinch) -> None:
@@ -264,7 +263,7 @@ async def test_raw_response_enroll_many(self, async_client: AsyncFinch) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(AsyncSinglePage[EnrolledIndividual], individual, path=["response"])
+ assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"])
@parametrize
async def test_streaming_response_enroll_many(self, async_client: AsyncFinch) -> None:
@@ -275,7 +274,7 @@ async def test_streaming_response_enroll_many(self, async_client: AsyncFinch) ->
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = await response.parse()
- assert_matches_type(AsyncSinglePage[EnrolledIndividual], individual, path=["response"])
+ assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -375,7 +374,7 @@ async def test_method_unenroll_many(self, async_client: AsyncFinch) -> None:
individual = await async_client.hris.benefits.individuals.unenroll_many(
benefit_id="benefit_id",
)
- assert_matches_type(AsyncSinglePage[UnenrolledIndividual], individual, path=["response"])
+ assert_matches_type(AsyncSinglePage[object], individual, path=["response"])
@parametrize
async def test_method_unenroll_many_with_all_params(self, async_client: AsyncFinch) -> None:
@@ -383,7 +382,7 @@ async def test_method_unenroll_many_with_all_params(self, async_client: AsyncFin
benefit_id="benefit_id",
individual_ids=["string"],
)
- assert_matches_type(AsyncSinglePage[UnenrolledIndividual], individual, path=["response"])
+ assert_matches_type(AsyncSinglePage[object], individual, path=["response"])
@parametrize
async def test_raw_response_unenroll_many(self, async_client: AsyncFinch) -> None:
@@ -394,7 +393,7 @@ async def test_raw_response_unenroll_many(self, async_client: AsyncFinch) -> Non
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(AsyncSinglePage[UnenrolledIndividual], individual, path=["response"])
+ assert_matches_type(AsyncSinglePage[object], individual, path=["response"])
@parametrize
async def test_streaming_response_unenroll_many(self, async_client: AsyncFinch) -> None:
@@ -405,7 +404,7 @@ async def test_streaming_response_unenroll_many(self, async_client: AsyncFinch)
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = await response.parse()
- assert_matches_type(AsyncSinglePage[UnenrolledIndividual], individual, path=["response"])
+ assert_matches_type(AsyncSinglePage[object], individual, path=["response"])
assert cast(Any, response.is_closed) is True
diff --git a/tests/api_resources/hris/test_benefits.py b/tests/api_resources/hris/test_benefits.py
index ce1adced..8d6507f9 100644
--- a/tests/api_resources/hris/test_benefits.py
+++ b/tests/api_resources/hris/test_benefits.py
@@ -12,9 +12,9 @@
from finch.pagination import SyncSinglePage, AsyncSinglePage
from finch.types.hris import (
CompanyBenefit,
- SupportedBenefit,
UpdateCompanyBenefitResponse,
CreateCompanyBenefitsResponse,
+ BenefitListSupportedBenefitsResponse,
)
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -169,7 +169,7 @@ def test_streaming_response_list(self, client: Finch) -> None:
@parametrize
def test_method_list_supported_benefits(self, client: Finch) -> None:
benefit = client.hris.benefits.list_supported_benefits()
- assert_matches_type(SyncSinglePage[SupportedBenefit], benefit, path=["response"])
+ assert_matches_type(SyncSinglePage[BenefitListSupportedBenefitsResponse], benefit, path=["response"])
@parametrize
def test_raw_response_list_supported_benefits(self, client: Finch) -> None:
@@ -178,7 +178,7 @@ def test_raw_response_list_supported_benefits(self, client: Finch) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
benefit = response.parse()
- assert_matches_type(SyncSinglePage[SupportedBenefit], benefit, path=["response"])
+ assert_matches_type(SyncSinglePage[BenefitListSupportedBenefitsResponse], benefit, path=["response"])
@parametrize
def test_streaming_response_list_supported_benefits(self, client: Finch) -> None:
@@ -187,7 +187,7 @@ def test_streaming_response_list_supported_benefits(self, client: Finch) -> None
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
benefit = response.parse()
- assert_matches_type(SyncSinglePage[SupportedBenefit], benefit, path=["response"])
+ assert_matches_type(SyncSinglePage[BenefitListSupportedBenefitsResponse], benefit, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -341,7 +341,7 @@ async def test_streaming_response_list(self, async_client: AsyncFinch) -> None:
@parametrize
async def test_method_list_supported_benefits(self, async_client: AsyncFinch) -> None:
benefit = await async_client.hris.benefits.list_supported_benefits()
- assert_matches_type(AsyncSinglePage[SupportedBenefit], benefit, path=["response"])
+ assert_matches_type(AsyncSinglePage[BenefitListSupportedBenefitsResponse], benefit, path=["response"])
@parametrize
async def test_raw_response_list_supported_benefits(self, async_client: AsyncFinch) -> None:
@@ -350,7 +350,7 @@ async def test_raw_response_list_supported_benefits(self, async_client: AsyncFin
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
benefit = response.parse()
- assert_matches_type(AsyncSinglePage[SupportedBenefit], benefit, path=["response"])
+ assert_matches_type(AsyncSinglePage[BenefitListSupportedBenefitsResponse], benefit, path=["response"])
@parametrize
async def test_streaming_response_list_supported_benefits(self, async_client: AsyncFinch) -> None:
@@ -359,6 +359,6 @@ async def test_streaming_response_list_supported_benefits(self, async_client: As
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
benefit = await response.parse()
- assert_matches_type(AsyncSinglePage[SupportedBenefit], benefit, path=["response"])
+ assert_matches_type(AsyncSinglePage[BenefitListSupportedBenefitsResponse], benefit, path=["response"])
assert cast(Any, response.is_closed) is True
From bc6c22d497fe8bb886e34095b01016904fe8258d Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 9 Apr 2025 16:31:03 +0000
Subject: [PATCH 2/8] chore(internal): expand CI branch coverage (#648)
---
.github/workflows/ci.yml | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 3b286e5a..53a3a09c 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,18 +1,18 @@
name: CI
on:
push:
- branches:
- - main
- pull_request:
- branches:
- - main
- - next
+ branches-ignore:
+ - 'generated'
+ - 'codegen/**'
+ - 'integrated/**'
+ - 'preview-head/**'
+ - 'preview-base/**'
+ - 'preview/**'
jobs:
lint:
name: lint
runs-on: ubuntu-latest
-
steps:
- uses: actions/checkout@v4
@@ -33,7 +33,6 @@ jobs:
test:
name: test
runs-on: ubuntu-latest
-
steps:
- uses: actions/checkout@v4
From 4109f6cd3a880cab1e7ca9d90d8a29cf0ce737f4 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 9 Apr 2025 19:05:58 +0000
Subject: [PATCH 3/8] feat(api): benefits mutation API endpoints (create
benefit, update benefit, enroll individual, unenroll individual) now properly
return async response types (#649)
---
.stats.yml | 4 +--
api.md | 6 ++--
.../resources/hris/benefits/individuals.py | 31 ++++++++--------
src/finch/types/hris/benefits/__init__.py | 3 +-
...onse.py => enrolled_individual_benifit.py} | 4 +--
.../individual_unenroll_many_response.py | 10 ++++++
.../hris/benefits/test_individuals.py | 35 ++++++++++---------
7 files changed, 51 insertions(+), 42 deletions(-)
rename src/finch/types/hris/benefits/{individual_enroll_many_response.py => enrolled_individual_benifit.py} (61%)
create mode 100644 src/finch/types/hris/benefits/individual_unenroll_many_response.py
diff --git a/.stats.yml b/.stats.yml
index 950c125e..de2b9cc9 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 46
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-8c83f0eae70d2a02ed3e2059fc251affdccd2f848f45445e4fed64dfd9ca5985.yml
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-bf858f37d7ab420841ddc6329dad8c46377308b6a5c8e935908011d0f9845e22.yml
openapi_spec_hash: 2523952a32436e3c7fd3b55508c2e7ee
-config_hash: ce10384813f68ba3fed61c7b601b396b
+config_hash: 4a8def48077df6382ed9fe00588baecf
diff --git a/api.md b/api.md
index 1a45d403..0936c7e1 100644
--- a/api.md
+++ b/api.md
@@ -189,8 +189,8 @@ Types:
```python
from finch.types.hris.benefits import (
+ EnrolledIndividualBenifit,
IndividualBenefit,
- IndividualEnrollManyResponse,
IndividualEnrolledIDsResponse,
IndividualUnenrollManyResponse,
)
@@ -198,10 +198,10 @@ from finch.types.hris.benefits import (
Methods:
-- client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> IndividualEnrollManyResponse
+- client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> EnrolledIndividualBenifit
- client.hris.benefits.individuals.enrolled_ids(benefit_id) -> IndividualEnrolledIDsResponse
- client.hris.benefits.individuals.retrieve_many_benefits(benefit_id, \*\*params) -> SyncSinglePage[IndividualBenefit]
-- client.hris.benefits.individuals.unenroll_many(benefit_id, \*\*params) -> SyncSinglePage[object]
+- client.hris.benefits.individuals.unenroll_many(benefit_id, \*\*params) -> IndividualUnenrollManyResponse
# Providers
diff --git a/src/finch/resources/hris/benefits/individuals.py b/src/finch/resources/hris/benefits/individuals.py
index a017e491..3e06189d 100644
--- a/src/finch/resources/hris/benefits/individuals.py
+++ b/src/finch/resources/hris/benefits/individuals.py
@@ -23,8 +23,9 @@
individual_retrieve_many_benefits_params,
)
from ....types.hris.benefits.individual_benefit import IndividualBenefit
-from ....types.hris.benefits.individual_enroll_many_response import IndividualEnrollManyResponse
+from ....types.hris.benefits.enrolled_individual_benifit import EnrolledIndividualBenifit
from ....types.hris.benefits.individual_enrolled_ids_response import IndividualEnrolledIDsResponse
+from ....types.hris.benefits.individual_unenroll_many_response import IndividualUnenrollManyResponse
__all__ = ["Individuals", "AsyncIndividuals"]
@@ -60,7 +61,7 @@ def enroll_many(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> IndividualEnrollManyResponse:
+ ) -> EnrolledIndividualBenifit:
"""Enroll an individual into a deduction or contribution.
This is an overwrite
@@ -87,7 +88,7 @@ def enroll_many(
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- cast_to=IndividualEnrollManyResponse,
+ cast_to=EnrolledIndividualBenifit,
)
def enrolled_ids(
@@ -179,7 +180,7 @@ def unenroll_many(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> SyncSinglePage[object]:
+ ) -> IndividualUnenrollManyResponse:
"""
Unenroll individuals from a deduction or contribution
@@ -196,17 +197,15 @@ def unenroll_many(
"""
if not benefit_id:
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
- return self._get_api_list(
+ return self._delete(
f"/employer/benefits/{benefit_id}/individuals",
- page=SyncSinglePage[object],
body=maybe_transform(
{"individual_ids": individual_ids}, individual_unenroll_many_params.IndividualUnenrollManyParams
),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- model=object,
- method="delete",
+ cast_to=IndividualUnenrollManyResponse,
)
@@ -241,7 +240,7 @@ async def enroll_many(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> IndividualEnrollManyResponse:
+ ) -> EnrolledIndividualBenifit:
"""Enroll an individual into a deduction or contribution.
This is an overwrite
@@ -268,7 +267,7 @@ async def enroll_many(
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- cast_to=IndividualEnrollManyResponse,
+ cast_to=EnrolledIndividualBenifit,
)
async def enrolled_ids(
@@ -349,7 +348,7 @@ def retrieve_many_benefits(
model=IndividualBenefit,
)
- def unenroll_many(
+ async def unenroll_many(
self,
benefit_id: str,
*,
@@ -360,7 +359,7 @@ def unenroll_many(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> AsyncPaginator[object, AsyncSinglePage[object]]:
+ ) -> IndividualUnenrollManyResponse:
"""
Unenroll individuals from a deduction or contribution
@@ -377,17 +376,15 @@ def unenroll_many(
"""
if not benefit_id:
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
- return self._get_api_list(
+ return await self._delete(
f"/employer/benefits/{benefit_id}/individuals",
- page=AsyncSinglePage[object],
- body=maybe_transform(
+ body=await async_maybe_transform(
{"individual_ids": individual_ids}, individual_unenroll_many_params.IndividualUnenrollManyParams
),
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- model=object,
- method="delete",
+ cast_to=IndividualUnenrollManyResponse,
)
diff --git a/src/finch/types/hris/benefits/__init__.py b/src/finch/types/hris/benefits/__init__.py
index 34a2f325..99dae977 100644
--- a/src/finch/types/hris/benefits/__init__.py
+++ b/src/finch/types/hris/benefits/__init__.py
@@ -3,10 +3,11 @@
from __future__ import annotations
from .individual_benefit import IndividualBenefit as IndividualBenefit
+from .enrolled_individual_benifit import EnrolledIndividualBenifit as EnrolledIndividualBenifit
from .individual_enroll_many_params import IndividualEnrollManyParams as IndividualEnrollManyParams
-from .individual_enroll_many_response import IndividualEnrollManyResponse as IndividualEnrollManyResponse
from .individual_unenroll_many_params import IndividualUnenrollManyParams as IndividualUnenrollManyParams
from .individual_enrolled_ids_response import IndividualEnrolledIDsResponse as IndividualEnrolledIDsResponse
+from .individual_unenroll_many_response import IndividualUnenrollManyResponse as IndividualUnenrollManyResponse
from .individual_retrieve_many_benefits_params import (
IndividualRetrieveManyBenefitsParams as IndividualRetrieveManyBenefitsParams,
)
diff --git a/src/finch/types/hris/benefits/individual_enroll_many_response.py b/src/finch/types/hris/benefits/enrolled_individual_benifit.py
similarity index 61%
rename from src/finch/types/hris/benefits/individual_enroll_many_response.py
rename to src/finch/types/hris/benefits/enrolled_individual_benifit.py
index e205eec5..6f1354e5 100644
--- a/src/finch/types/hris/benefits/individual_enroll_many_response.py
+++ b/src/finch/types/hris/benefits/enrolled_individual_benifit.py
@@ -3,8 +3,8 @@
from ...._models import BaseModel
-__all__ = ["IndividualEnrollManyResponse"]
+__all__ = ["EnrolledIndividualBenifit"]
-class IndividualEnrollManyResponse(BaseModel):
+class EnrolledIndividualBenifit(BaseModel):
job_id: str
diff --git a/src/finch/types/hris/benefits/individual_unenroll_many_response.py b/src/finch/types/hris/benefits/individual_unenroll_many_response.py
new file mode 100644
index 00000000..03b9ecfa
--- /dev/null
+++ b/src/finch/types/hris/benefits/individual_unenroll_many_response.py
@@ -0,0 +1,10 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+
+from ...._models import BaseModel
+
+__all__ = ["IndividualUnenrollManyResponse"]
+
+
+class IndividualUnenrollManyResponse(BaseModel):
+ job_id: str
diff --git a/tests/api_resources/hris/benefits/test_individuals.py b/tests/api_resources/hris/benefits/test_individuals.py
index 62af21a9..8c49ddd5 100644
--- a/tests/api_resources/hris/benefits/test_individuals.py
+++ b/tests/api_resources/hris/benefits/test_individuals.py
@@ -13,8 +13,9 @@
from finch.pagination import SyncSinglePage, AsyncSinglePage
from finch.types.hris.benefits import (
IndividualBenefit,
- IndividualEnrollManyResponse,
+ EnrolledIndividualBenifit,
IndividualEnrolledIDsResponse,
+ IndividualUnenrollManyResponse,
)
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -28,7 +29,7 @@ def test_method_enroll_many(self, client: Finch) -> None:
individual = client.hris.benefits.individuals.enroll_many(
benefit_id="benefit_id",
)
- assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"])
@parametrize
def test_method_enroll_many_with_all_params(self, client: Finch) -> None:
@@ -54,7 +55,7 @@ def test_method_enroll_many_with_all_params(self, client: Finch) -> None:
}
],
)
- assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"])
@parametrize
def test_raw_response_enroll_many(self, client: Finch) -> None:
@@ -65,7 +66,7 @@ def test_raw_response_enroll_many(self, client: Finch) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"])
@parametrize
def test_streaming_response_enroll_many(self, client: Finch) -> None:
@@ -76,7 +77,7 @@ def test_streaming_response_enroll_many(self, client: Finch) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -176,7 +177,7 @@ def test_method_unenroll_many(self, client: Finch) -> None:
individual = client.hris.benefits.individuals.unenroll_many(
benefit_id="benefit_id",
)
- assert_matches_type(SyncSinglePage[object], individual, path=["response"])
+ assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"])
@parametrize
def test_method_unenroll_many_with_all_params(self, client: Finch) -> None:
@@ -184,7 +185,7 @@ def test_method_unenroll_many_with_all_params(self, client: Finch) -> None:
benefit_id="benefit_id",
individual_ids=["string"],
)
- assert_matches_type(SyncSinglePage[object], individual, path=["response"])
+ assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"])
@parametrize
def test_raw_response_unenroll_many(self, client: Finch) -> None:
@@ -195,7 +196,7 @@ def test_raw_response_unenroll_many(self, client: Finch) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(SyncSinglePage[object], individual, path=["response"])
+ assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"])
@parametrize
def test_streaming_response_unenroll_many(self, client: Finch) -> None:
@@ -206,7 +207,7 @@ def test_streaming_response_unenroll_many(self, client: Finch) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(SyncSinglePage[object], individual, path=["response"])
+ assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -226,7 +227,7 @@ async def test_method_enroll_many(self, async_client: AsyncFinch) -> None:
individual = await async_client.hris.benefits.individuals.enroll_many(
benefit_id="benefit_id",
)
- assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"])
@parametrize
async def test_method_enroll_many_with_all_params(self, async_client: AsyncFinch) -> None:
@@ -252,7 +253,7 @@ async def test_method_enroll_many_with_all_params(self, async_client: AsyncFinch
}
],
)
- assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"])
@parametrize
async def test_raw_response_enroll_many(self, async_client: AsyncFinch) -> None:
@@ -263,7 +264,7 @@ async def test_raw_response_enroll_many(self, async_client: AsyncFinch) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"])
@parametrize
async def test_streaming_response_enroll_many(self, async_client: AsyncFinch) -> None:
@@ -274,7 +275,7 @@ async def test_streaming_response_enroll_many(self, async_client: AsyncFinch) ->
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = await response.parse()
- assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -374,7 +375,7 @@ async def test_method_unenroll_many(self, async_client: AsyncFinch) -> None:
individual = await async_client.hris.benefits.individuals.unenroll_many(
benefit_id="benefit_id",
)
- assert_matches_type(AsyncSinglePage[object], individual, path=["response"])
+ assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"])
@parametrize
async def test_method_unenroll_many_with_all_params(self, async_client: AsyncFinch) -> None:
@@ -382,7 +383,7 @@ async def test_method_unenroll_many_with_all_params(self, async_client: AsyncFin
benefit_id="benefit_id",
individual_ids=["string"],
)
- assert_matches_type(AsyncSinglePage[object], individual, path=["response"])
+ assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"])
@parametrize
async def test_raw_response_unenroll_many(self, async_client: AsyncFinch) -> None:
@@ -393,7 +394,7 @@ async def test_raw_response_unenroll_many(self, async_client: AsyncFinch) -> Non
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(AsyncSinglePage[object], individual, path=["response"])
+ assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"])
@parametrize
async def test_streaming_response_unenroll_many(self, async_client: AsyncFinch) -> None:
@@ -404,7 +405,7 @@ async def test_streaming_response_unenroll_many(self, async_client: AsyncFinch)
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = await response.parse()
- assert_matches_type(AsyncSinglePage[object], individual, path=["response"])
+ assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"])
assert cast(Any, response.is_closed) is True
From 17dc2ea50995d6883ad07a77a4c039a8c097253f Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 9 Apr 2025 19:06:58 +0000
Subject: [PATCH 4/8] chore: fix typo (#650)
---
.stats.yml | 2 +-
api.md | 4 ++--
.../resources/hris/benefits/individuals.py | 10 +++++-----
src/finch/types/hris/benefits/__init__.py | 2 +-
...nifit.py => enrolled_individual_benefit.py} | 4 ++--
.../hris/benefits/test_individuals.py | 18 +++++++++---------
6 files changed, 20 insertions(+), 20 deletions(-)
rename src/finch/types/hris/benefits/{enrolled_individual_benifit.py => enrolled_individual_benefit.py} (62%)
diff --git a/.stats.yml b/.stats.yml
index de2b9cc9..7ded5a0c 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 46
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-bf858f37d7ab420841ddc6329dad8c46377308b6a5c8e935908011d0f9845e22.yml
openapi_spec_hash: 2523952a32436e3c7fd3b55508c2e7ee
-config_hash: 4a8def48077df6382ed9fe00588baecf
+config_hash: 9faa2458e0e8bb125bf5d41e514a19e7
diff --git a/api.md b/api.md
index 0936c7e1..c466063b 100644
--- a/api.md
+++ b/api.md
@@ -189,7 +189,7 @@ Types:
```python
from finch.types.hris.benefits import (
- EnrolledIndividualBenifit,
+ EnrolledIndividualBenefit,
IndividualBenefit,
IndividualEnrolledIDsResponse,
IndividualUnenrollManyResponse,
@@ -198,7 +198,7 @@ from finch.types.hris.benefits import (
Methods:
-- client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> EnrolledIndividualBenifit
+- client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> EnrolledIndividualBenefit
- client.hris.benefits.individuals.enrolled_ids(benefit_id) -> IndividualEnrolledIDsResponse
- client.hris.benefits.individuals.retrieve_many_benefits(benefit_id, \*\*params) -> SyncSinglePage[IndividualBenefit]
- client.hris.benefits.individuals.unenroll_many(benefit_id, \*\*params) -> IndividualUnenrollManyResponse
diff --git a/src/finch/resources/hris/benefits/individuals.py b/src/finch/resources/hris/benefits/individuals.py
index 3e06189d..144bfff2 100644
--- a/src/finch/resources/hris/benefits/individuals.py
+++ b/src/finch/resources/hris/benefits/individuals.py
@@ -23,7 +23,7 @@
individual_retrieve_many_benefits_params,
)
from ....types.hris.benefits.individual_benefit import IndividualBenefit
-from ....types.hris.benefits.enrolled_individual_benifit import EnrolledIndividualBenifit
+from ....types.hris.benefits.enrolled_individual_benefit import EnrolledIndividualBenefit
from ....types.hris.benefits.individual_enrolled_ids_response import IndividualEnrolledIDsResponse
from ....types.hris.benefits.individual_unenroll_many_response import IndividualUnenrollManyResponse
@@ -61,7 +61,7 @@ def enroll_many(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> EnrolledIndividualBenifit:
+ ) -> EnrolledIndividualBenefit:
"""Enroll an individual into a deduction or contribution.
This is an overwrite
@@ -88,7 +88,7 @@ def enroll_many(
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- cast_to=EnrolledIndividualBenifit,
+ cast_to=EnrolledIndividualBenefit,
)
def enrolled_ids(
@@ -240,7 +240,7 @@ async def enroll_many(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> EnrolledIndividualBenifit:
+ ) -> EnrolledIndividualBenefit:
"""Enroll an individual into a deduction or contribution.
This is an overwrite
@@ -267,7 +267,7 @@ async def enroll_many(
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- cast_to=EnrolledIndividualBenifit,
+ cast_to=EnrolledIndividualBenefit,
)
async def enrolled_ids(
diff --git a/src/finch/types/hris/benefits/__init__.py b/src/finch/types/hris/benefits/__init__.py
index 99dae977..2b8e565a 100644
--- a/src/finch/types/hris/benefits/__init__.py
+++ b/src/finch/types/hris/benefits/__init__.py
@@ -3,7 +3,7 @@
from __future__ import annotations
from .individual_benefit import IndividualBenefit as IndividualBenefit
-from .enrolled_individual_benifit import EnrolledIndividualBenifit as EnrolledIndividualBenifit
+from .enrolled_individual_benefit import EnrolledIndividualBenefit as EnrolledIndividualBenefit
from .individual_enroll_many_params import IndividualEnrollManyParams as IndividualEnrollManyParams
from .individual_unenroll_many_params import IndividualUnenrollManyParams as IndividualUnenrollManyParams
from .individual_enrolled_ids_response import IndividualEnrolledIDsResponse as IndividualEnrolledIDsResponse
diff --git a/src/finch/types/hris/benefits/enrolled_individual_benifit.py b/src/finch/types/hris/benefits/enrolled_individual_benefit.py
similarity index 62%
rename from src/finch/types/hris/benefits/enrolled_individual_benifit.py
rename to src/finch/types/hris/benefits/enrolled_individual_benefit.py
index 6f1354e5..1e08cda3 100644
--- a/src/finch/types/hris/benefits/enrolled_individual_benifit.py
+++ b/src/finch/types/hris/benefits/enrolled_individual_benefit.py
@@ -3,8 +3,8 @@
from ...._models import BaseModel
-__all__ = ["EnrolledIndividualBenifit"]
+__all__ = ["EnrolledIndividualBenefit"]
-class EnrolledIndividualBenifit(BaseModel):
+class EnrolledIndividualBenefit(BaseModel):
job_id: str
diff --git a/tests/api_resources/hris/benefits/test_individuals.py b/tests/api_resources/hris/benefits/test_individuals.py
index 8c49ddd5..14df0529 100644
--- a/tests/api_resources/hris/benefits/test_individuals.py
+++ b/tests/api_resources/hris/benefits/test_individuals.py
@@ -13,7 +13,7 @@
from finch.pagination import SyncSinglePage, AsyncSinglePage
from finch.types.hris.benefits import (
IndividualBenefit,
- EnrolledIndividualBenifit,
+ EnrolledIndividualBenefit,
IndividualEnrolledIDsResponse,
IndividualUnenrollManyResponse,
)
@@ -29,7 +29,7 @@ def test_method_enroll_many(self, client: Finch) -> None:
individual = client.hris.benefits.individuals.enroll_many(
benefit_id="benefit_id",
)
- assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"])
@parametrize
def test_method_enroll_many_with_all_params(self, client: Finch) -> None:
@@ -55,7 +55,7 @@ def test_method_enroll_many_with_all_params(self, client: Finch) -> None:
}
],
)
- assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"])
@parametrize
def test_raw_response_enroll_many(self, client: Finch) -> None:
@@ -66,7 +66,7 @@ def test_raw_response_enroll_many(self, client: Finch) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"])
@parametrize
def test_streaming_response_enroll_many(self, client: Finch) -> None:
@@ -77,7 +77,7 @@ def test_streaming_response_enroll_many(self, client: Finch) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -227,7 +227,7 @@ async def test_method_enroll_many(self, async_client: AsyncFinch) -> None:
individual = await async_client.hris.benefits.individuals.enroll_many(
benefit_id="benefit_id",
)
- assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"])
@parametrize
async def test_method_enroll_many_with_all_params(self, async_client: AsyncFinch) -> None:
@@ -253,7 +253,7 @@ async def test_method_enroll_many_with_all_params(self, async_client: AsyncFinch
}
],
)
- assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"])
@parametrize
async def test_raw_response_enroll_many(self, async_client: AsyncFinch) -> None:
@@ -264,7 +264,7 @@ async def test_raw_response_enroll_many(self, async_client: AsyncFinch) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"])
@parametrize
async def test_streaming_response_enroll_many(self, async_client: AsyncFinch) -> None:
@@ -275,7 +275,7 @@ async def test_streaming_response_enroll_many(self, async_client: AsyncFinch) ->
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = await response.parse()
- assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"])
assert cast(Any, response.is_closed) is True
From 6452c2ce11111b2eba1c2cb941ccd32fdd1c5a82 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 9 Apr 2025 19:35:14 +0000
Subject: [PATCH 5/8] feat(api): add models for hrs benefits individuals async
responses
---
.stats.yml | 2 +-
api.md | 4 ++--
.../resources/hris/benefits/individuals.py | 10 +++++-----
src/finch/types/hris/benefits/__init__.py | 2 +-
...=> enrolled_individual_benefit_response.py} | 4 ++--
.../hris/benefits/test_individuals.py | 18 +++++++++---------
6 files changed, 20 insertions(+), 20 deletions(-)
rename src/finch/types/hris/benefits/{enrolled_individual_benefit.py => enrolled_individual_benefit_response.py} (58%)
diff --git a/.stats.yml b/.stats.yml
index 7ded5a0c..5c34e39d 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 46
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-bf858f37d7ab420841ddc6329dad8c46377308b6a5c8e935908011d0f9845e22.yml
openapi_spec_hash: 2523952a32436e3c7fd3b55508c2e7ee
-config_hash: 9faa2458e0e8bb125bf5d41e514a19e7
+config_hash: bedc278fd693e36e7d8dc508d75ab76a
diff --git a/api.md b/api.md
index c466063b..d0ce7c58 100644
--- a/api.md
+++ b/api.md
@@ -189,7 +189,7 @@ Types:
```python
from finch.types.hris.benefits import (
- EnrolledIndividualBenefit,
+ EnrolledIndividualBenefitResponse,
IndividualBenefit,
IndividualEnrolledIDsResponse,
IndividualUnenrollManyResponse,
@@ -198,7 +198,7 @@ from finch.types.hris.benefits import (
Methods:
-- client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> EnrolledIndividualBenefit
+- client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> EnrolledIndividualBenefitResponse
- client.hris.benefits.individuals.enrolled_ids(benefit_id) -> IndividualEnrolledIDsResponse
- client.hris.benefits.individuals.retrieve_many_benefits(benefit_id, \*\*params) -> SyncSinglePage[IndividualBenefit]
- client.hris.benefits.individuals.unenroll_many(benefit_id, \*\*params) -> IndividualUnenrollManyResponse
diff --git a/src/finch/resources/hris/benefits/individuals.py b/src/finch/resources/hris/benefits/individuals.py
index 144bfff2..132d3e6e 100644
--- a/src/finch/resources/hris/benefits/individuals.py
+++ b/src/finch/resources/hris/benefits/individuals.py
@@ -23,9 +23,9 @@
individual_retrieve_many_benefits_params,
)
from ....types.hris.benefits.individual_benefit import IndividualBenefit
-from ....types.hris.benefits.enrolled_individual_benefit import EnrolledIndividualBenefit
from ....types.hris.benefits.individual_enrolled_ids_response import IndividualEnrolledIDsResponse
from ....types.hris.benefits.individual_unenroll_many_response import IndividualUnenrollManyResponse
+from ....types.hris.benefits.enrolled_individual_benefit_response import EnrolledIndividualBenefitResponse
__all__ = ["Individuals", "AsyncIndividuals"]
@@ -61,7 +61,7 @@ def enroll_many(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> EnrolledIndividualBenefit:
+ ) -> EnrolledIndividualBenefitResponse:
"""Enroll an individual into a deduction or contribution.
This is an overwrite
@@ -88,7 +88,7 @@ def enroll_many(
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- cast_to=EnrolledIndividualBenefit,
+ cast_to=EnrolledIndividualBenefitResponse,
)
def enrolled_ids(
@@ -240,7 +240,7 @@ async def enroll_many(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> EnrolledIndividualBenefit:
+ ) -> EnrolledIndividualBenefitResponse:
"""Enroll an individual into a deduction or contribution.
This is an overwrite
@@ -267,7 +267,7 @@ async def enroll_many(
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- cast_to=EnrolledIndividualBenefit,
+ cast_to=EnrolledIndividualBenefitResponse,
)
async def enrolled_ids(
diff --git a/src/finch/types/hris/benefits/__init__.py b/src/finch/types/hris/benefits/__init__.py
index 2b8e565a..c971cfa5 100644
--- a/src/finch/types/hris/benefits/__init__.py
+++ b/src/finch/types/hris/benefits/__init__.py
@@ -3,11 +3,11 @@
from __future__ import annotations
from .individual_benefit import IndividualBenefit as IndividualBenefit
-from .enrolled_individual_benefit import EnrolledIndividualBenefit as EnrolledIndividualBenefit
from .individual_enroll_many_params import IndividualEnrollManyParams as IndividualEnrollManyParams
from .individual_unenroll_many_params import IndividualUnenrollManyParams as IndividualUnenrollManyParams
from .individual_enrolled_ids_response import IndividualEnrolledIDsResponse as IndividualEnrolledIDsResponse
from .individual_unenroll_many_response import IndividualUnenrollManyResponse as IndividualUnenrollManyResponse
+from .enrolled_individual_benefit_response import EnrolledIndividualBenefitResponse as EnrolledIndividualBenefitResponse
from .individual_retrieve_many_benefits_params import (
IndividualRetrieveManyBenefitsParams as IndividualRetrieveManyBenefitsParams,
)
diff --git a/src/finch/types/hris/benefits/enrolled_individual_benefit.py b/src/finch/types/hris/benefits/enrolled_individual_benefit_response.py
similarity index 58%
rename from src/finch/types/hris/benefits/enrolled_individual_benefit.py
rename to src/finch/types/hris/benefits/enrolled_individual_benefit_response.py
index 1e08cda3..0b42e9b4 100644
--- a/src/finch/types/hris/benefits/enrolled_individual_benefit.py
+++ b/src/finch/types/hris/benefits/enrolled_individual_benefit_response.py
@@ -3,8 +3,8 @@
from ...._models import BaseModel
-__all__ = ["EnrolledIndividualBenefit"]
+__all__ = ["EnrolledIndividualBenefitResponse"]
-class EnrolledIndividualBenefit(BaseModel):
+class EnrolledIndividualBenefitResponse(BaseModel):
job_id: str
diff --git a/tests/api_resources/hris/benefits/test_individuals.py b/tests/api_resources/hris/benefits/test_individuals.py
index 14df0529..4203e433 100644
--- a/tests/api_resources/hris/benefits/test_individuals.py
+++ b/tests/api_resources/hris/benefits/test_individuals.py
@@ -13,9 +13,9 @@
from finch.pagination import SyncSinglePage, AsyncSinglePage
from finch.types.hris.benefits import (
IndividualBenefit,
- EnrolledIndividualBenefit,
IndividualEnrolledIDsResponse,
IndividualUnenrollManyResponse,
+ EnrolledIndividualBenefitResponse,
)
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -29,7 +29,7 @@ def test_method_enroll_many(self, client: Finch) -> None:
individual = client.hris.benefits.individuals.enroll_many(
benefit_id="benefit_id",
)
- assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenefitResponse, individual, path=["response"])
@parametrize
def test_method_enroll_many_with_all_params(self, client: Finch) -> None:
@@ -55,7 +55,7 @@ def test_method_enroll_many_with_all_params(self, client: Finch) -> None:
}
],
)
- assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenefitResponse, individual, path=["response"])
@parametrize
def test_raw_response_enroll_many(self, client: Finch) -> None:
@@ -66,7 +66,7 @@ def test_raw_response_enroll_many(self, client: Finch) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenefitResponse, individual, path=["response"])
@parametrize
def test_streaming_response_enroll_many(self, client: Finch) -> None:
@@ -77,7 +77,7 @@ def test_streaming_response_enroll_many(self, client: Finch) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenefitResponse, individual, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -227,7 +227,7 @@ async def test_method_enroll_many(self, async_client: AsyncFinch) -> None:
individual = await async_client.hris.benefits.individuals.enroll_many(
benefit_id="benefit_id",
)
- assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenefitResponse, individual, path=["response"])
@parametrize
async def test_method_enroll_many_with_all_params(self, async_client: AsyncFinch) -> None:
@@ -253,7 +253,7 @@ async def test_method_enroll_many_with_all_params(self, async_client: AsyncFinch
}
],
)
- assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenefitResponse, individual, path=["response"])
@parametrize
async def test_raw_response_enroll_many(self, async_client: AsyncFinch) -> None:
@@ -264,7 +264,7 @@ async def test_raw_response_enroll_many(self, async_client: AsyncFinch) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenefitResponse, individual, path=["response"])
@parametrize
async def test_streaming_response_enroll_many(self, async_client: AsyncFinch) -> None:
@@ -275,7 +275,7 @@ async def test_streaming_response_enroll_many(self, async_client: AsyncFinch) ->
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = await response.parse()
- assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"])
+ assert_matches_type(EnrolledIndividualBenefitResponse, individual, path=["response"])
assert cast(Any, response.is_closed) is True
From 8772010e01df66a41bae7b5689bf7af20f2c0411 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 9 Apr 2025 19:36:14 +0000
Subject: [PATCH 6/8] chore: fix typo
---
.stats.yml | 2 +-
api.md | 4 ++--
.../resources/hris/benefits/individuals.py | 10 +++++-----
src/finch/types/hris/benefits/__init__.py | 4 +++-
... unenrolled_individual_benefit_response.py} | 4 ++--
.../hris/benefits/test_individuals.py | 18 +++++++++---------
6 files changed, 22 insertions(+), 20 deletions(-)
rename src/finch/types/hris/benefits/{individual_unenroll_many_response.py => unenrolled_individual_benefit_response.py} (57%)
diff --git a/.stats.yml b/.stats.yml
index 5c34e39d..f9cf330b 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 46
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-bf858f37d7ab420841ddc6329dad8c46377308b6a5c8e935908011d0f9845e22.yml
openapi_spec_hash: 2523952a32436e3c7fd3b55508c2e7ee
-config_hash: bedc278fd693e36e7d8dc508d75ab76a
+config_hash: 53778a0b839c4f6ad34fbba051f5e8a6
diff --git a/api.md b/api.md
index d0ce7c58..1e750c7c 100644
--- a/api.md
+++ b/api.md
@@ -191,8 +191,8 @@ Types:
from finch.types.hris.benefits import (
EnrolledIndividualBenefitResponse,
IndividualBenefit,
+ UnenrolledIndividualBenefitResponse,
IndividualEnrolledIDsResponse,
- IndividualUnenrollManyResponse,
)
```
@@ -201,7 +201,7 @@ Methods:
- client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> EnrolledIndividualBenefitResponse
- client.hris.benefits.individuals.enrolled_ids(benefit_id) -> IndividualEnrolledIDsResponse
- client.hris.benefits.individuals.retrieve_many_benefits(benefit_id, \*\*params) -> SyncSinglePage[IndividualBenefit]
-- client.hris.benefits.individuals.unenroll_many(benefit_id, \*\*params) -> IndividualUnenrollManyResponse
+- client.hris.benefits.individuals.unenroll_many(benefit_id, \*\*params) -> UnenrolledIndividualBenefitResponse
# Providers
diff --git a/src/finch/resources/hris/benefits/individuals.py b/src/finch/resources/hris/benefits/individuals.py
index 132d3e6e..604f867d 100644
--- a/src/finch/resources/hris/benefits/individuals.py
+++ b/src/finch/resources/hris/benefits/individuals.py
@@ -24,8 +24,8 @@
)
from ....types.hris.benefits.individual_benefit import IndividualBenefit
from ....types.hris.benefits.individual_enrolled_ids_response import IndividualEnrolledIDsResponse
-from ....types.hris.benefits.individual_unenroll_many_response import IndividualUnenrollManyResponse
from ....types.hris.benefits.enrolled_individual_benefit_response import EnrolledIndividualBenefitResponse
+from ....types.hris.benefits.unenrolled_individual_benefit_response import UnenrolledIndividualBenefitResponse
__all__ = ["Individuals", "AsyncIndividuals"]
@@ -180,7 +180,7 @@ def unenroll_many(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> IndividualUnenrollManyResponse:
+ ) -> UnenrolledIndividualBenefitResponse:
"""
Unenroll individuals from a deduction or contribution
@@ -205,7 +205,7 @@ def unenroll_many(
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- cast_to=IndividualUnenrollManyResponse,
+ cast_to=UnenrolledIndividualBenefitResponse,
)
@@ -359,7 +359,7 @@ async def unenroll_many(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> IndividualUnenrollManyResponse:
+ ) -> UnenrolledIndividualBenefitResponse:
"""
Unenroll individuals from a deduction or contribution
@@ -384,7 +384,7 @@ async def unenroll_many(
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- cast_to=IndividualUnenrollManyResponse,
+ cast_to=UnenrolledIndividualBenefitResponse,
)
diff --git a/src/finch/types/hris/benefits/__init__.py b/src/finch/types/hris/benefits/__init__.py
index c971cfa5..90057bb2 100644
--- a/src/finch/types/hris/benefits/__init__.py
+++ b/src/finch/types/hris/benefits/__init__.py
@@ -6,8 +6,10 @@
from .individual_enroll_many_params import IndividualEnrollManyParams as IndividualEnrollManyParams
from .individual_unenroll_many_params import IndividualUnenrollManyParams as IndividualUnenrollManyParams
from .individual_enrolled_ids_response import IndividualEnrolledIDsResponse as IndividualEnrolledIDsResponse
-from .individual_unenroll_many_response import IndividualUnenrollManyResponse as IndividualUnenrollManyResponse
from .enrolled_individual_benefit_response import EnrolledIndividualBenefitResponse as EnrolledIndividualBenefitResponse
+from .unenrolled_individual_benefit_response import (
+ UnenrolledIndividualBenefitResponse as UnenrolledIndividualBenefitResponse,
+)
from .individual_retrieve_many_benefits_params import (
IndividualRetrieveManyBenefitsParams as IndividualRetrieveManyBenefitsParams,
)
diff --git a/src/finch/types/hris/benefits/individual_unenroll_many_response.py b/src/finch/types/hris/benefits/unenrolled_individual_benefit_response.py
similarity index 57%
rename from src/finch/types/hris/benefits/individual_unenroll_many_response.py
rename to src/finch/types/hris/benefits/unenrolled_individual_benefit_response.py
index 03b9ecfa..aa539f3f 100644
--- a/src/finch/types/hris/benefits/individual_unenroll_many_response.py
+++ b/src/finch/types/hris/benefits/unenrolled_individual_benefit_response.py
@@ -3,8 +3,8 @@
from ...._models import BaseModel
-__all__ = ["IndividualUnenrollManyResponse"]
+__all__ = ["UnenrolledIndividualBenefitResponse"]
-class IndividualUnenrollManyResponse(BaseModel):
+class UnenrolledIndividualBenefitResponse(BaseModel):
job_id: str
diff --git a/tests/api_resources/hris/benefits/test_individuals.py b/tests/api_resources/hris/benefits/test_individuals.py
index 4203e433..0800ed21 100644
--- a/tests/api_resources/hris/benefits/test_individuals.py
+++ b/tests/api_resources/hris/benefits/test_individuals.py
@@ -14,8 +14,8 @@
from finch.types.hris.benefits import (
IndividualBenefit,
IndividualEnrolledIDsResponse,
- IndividualUnenrollManyResponse,
EnrolledIndividualBenefitResponse,
+ UnenrolledIndividualBenefitResponse,
)
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -177,7 +177,7 @@ def test_method_unenroll_many(self, client: Finch) -> None:
individual = client.hris.benefits.individuals.unenroll_many(
benefit_id="benefit_id",
)
- assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"])
+ assert_matches_type(UnenrolledIndividualBenefitResponse, individual, path=["response"])
@parametrize
def test_method_unenroll_many_with_all_params(self, client: Finch) -> None:
@@ -185,7 +185,7 @@ def test_method_unenroll_many_with_all_params(self, client: Finch) -> None:
benefit_id="benefit_id",
individual_ids=["string"],
)
- assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"])
+ assert_matches_type(UnenrolledIndividualBenefitResponse, individual, path=["response"])
@parametrize
def test_raw_response_unenroll_many(self, client: Finch) -> None:
@@ -196,7 +196,7 @@ def test_raw_response_unenroll_many(self, client: Finch) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"])
+ assert_matches_type(UnenrolledIndividualBenefitResponse, individual, path=["response"])
@parametrize
def test_streaming_response_unenroll_many(self, client: Finch) -> None:
@@ -207,7 +207,7 @@ def test_streaming_response_unenroll_many(self, client: Finch) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"])
+ assert_matches_type(UnenrolledIndividualBenefitResponse, individual, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -375,7 +375,7 @@ async def test_method_unenroll_many(self, async_client: AsyncFinch) -> None:
individual = await async_client.hris.benefits.individuals.unenroll_many(
benefit_id="benefit_id",
)
- assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"])
+ assert_matches_type(UnenrolledIndividualBenefitResponse, individual, path=["response"])
@parametrize
async def test_method_unenroll_many_with_all_params(self, async_client: AsyncFinch) -> None:
@@ -383,7 +383,7 @@ async def test_method_unenroll_many_with_all_params(self, async_client: AsyncFin
benefit_id="benefit_id",
individual_ids=["string"],
)
- assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"])
+ assert_matches_type(UnenrolledIndividualBenefitResponse, individual, path=["response"])
@parametrize
async def test_raw_response_unenroll_many(self, async_client: AsyncFinch) -> None:
@@ -394,7 +394,7 @@ async def test_raw_response_unenroll_many(self, async_client: AsyncFinch) -> Non
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = response.parse()
- assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"])
+ assert_matches_type(UnenrolledIndividualBenefitResponse, individual, path=["response"])
@parametrize
async def test_streaming_response_unenroll_many(self, async_client: AsyncFinch) -> None:
@@ -405,7 +405,7 @@ async def test_streaming_response_unenroll_many(self, async_client: AsyncFinch)
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
individual = await response.parse()
- assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"])
+ assert_matches_type(UnenrolledIndividualBenefitResponse, individual, path=["response"])
assert cast(Any, response.is_closed) is True
From bad1202ad8b8e73fb4ae4c8624405997c2ad33e2 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 9 Apr 2025 21:06:28 +0000
Subject: [PATCH 7/8] chore(internal): reduce CI branch coverage
---
.github/workflows/ci.yml | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 53a3a09c..81f6dc20 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,13 +1,12 @@
name: CI
on:
push:
- branches-ignore:
- - 'generated'
- - 'codegen/**'
- - 'integrated/**'
- - 'preview-head/**'
- - 'preview-base/**'
- - 'preview/**'
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+ - next
jobs:
lint:
From 225c460e39d7dbcee37ba16f67b4a3f68c3b1d89 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Wed, 9 Apr 2025 21:07:09 +0000
Subject: [PATCH 8/8] release: 1.21.0
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 18 ++++++++++++++++++
pyproject.toml | 2 +-
src/finch/_version.py | 2 +-
4 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 511722b9..ba231b07 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "1.20.1"
+ ".": "1.21.0"
}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 356b6ee9..2db87fef 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,23 @@
# Changelog
+## 1.21.0 (2025-04-09)
+
+Full Changelog: [v1.20.1...v1.21.0](https://github.com/Finch-API/finch-api-python/compare/v1.20.1...v1.21.0)
+
+### Features
+
+* **api:** add models for hrs benefits individuals async responses ([6452c2c](https://github.com/Finch-API/finch-api-python/commit/6452c2ce11111b2eba1c2cb941ccd32fdd1c5a82))
+* **api:** api update ([#646](https://github.com/Finch-API/finch-api-python/issues/646)) ([7ac8751](https://github.com/Finch-API/finch-api-python/commit/7ac875106bdcfb8bfb097b971f48ecd88d06c26a))
+* **api:** benefits mutation API endpoints (create benefit, update benefit, enroll individual, unenroll individual) now properly return async response types ([#649](https://github.com/Finch-API/finch-api-python/issues/649)) ([4109f6c](https://github.com/Finch-API/finch-api-python/commit/4109f6cd3a880cab1e7ca9d90d8a29cf0ce737f4))
+
+
+### Chores
+
+* fix typo ([8772010](https://github.com/Finch-API/finch-api-python/commit/8772010e01df66a41bae7b5689bf7af20f2c0411))
+* fix typo ([#650](https://github.com/Finch-API/finch-api-python/issues/650)) ([17dc2ea](https://github.com/Finch-API/finch-api-python/commit/17dc2ea50995d6883ad07a77a4c039a8c097253f))
+* **internal:** expand CI branch coverage ([#648](https://github.com/Finch-API/finch-api-python/issues/648)) ([bc6c22d](https://github.com/Finch-API/finch-api-python/commit/bc6c22d497fe8bb886e34095b01016904fe8258d))
+* **internal:** reduce CI branch coverage ([bad1202](https://github.com/Finch-API/finch-api-python/commit/bad1202ad8b8e73fb4ae4c8624405997c2ad33e2))
+
## 1.20.1 (2025-04-08)
Full Changelog: [v1.20.0...v1.20.1](https://github.com/Finch-API/finch-api-python/compare/v1.20.0...v1.20.1)
diff --git a/pyproject.toml b/pyproject.toml
index 7506addc..0080f7bf 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "finch-api"
-version = "1.20.1"
+version = "1.21.0"
description = "The official Python library for the Finch API"
dynamic = ["readme"]
license = "Apache-2.0"
diff --git a/src/finch/_version.py b/src/finch/_version.py
index 15f2237e..4bdbe1a5 100644
--- a/src/finch/_version.py
+++ b/src/finch/_version.py
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
__title__ = "finch"
-__version__ = "1.20.1" # x-release-please-version
+__version__ = "1.21.0" # x-release-please-version