Skip to content

Commit d7caac4

Browse files
feat(api): add register benefits method
1 parent fce5481 commit d7caac4

12 files changed

Lines changed: 428 additions & 6 deletions

.stats.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 46
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch/finch-82224679b895da7c7a5aae44d11b69fbe37d0316cd8e10aa0c89bc5a68f424de.yml
1+
configured_endpoints: 48
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch/finch-5092370ef89959c46138a85f9d6d3c919682a5492a0f9f85ac4421de702f35a8.yml
33
openapi_spec_hash: a4ca94b3405fc83934c949068943e16c
4-
config_hash: fce67e71044aa4c3d0b8030052b3a20b
4+
config_hash: a1c4b7d897cbf8ed42c5f474b3161d79

api.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ from finch.types.hris import (
172172
BenefitsSupport,
173173
CompanyBenefit,
174174
CreateCompanyBenefitsResponse,
175+
RegisterCompanyBenefitResponse,
175176
SupportPerBenefitType,
176177
SupportedBenefit,
177178
UpdateCompanyBenefitResponse,
@@ -186,6 +187,7 @@ Methods:
186187
- <code title="post /employer/benefits/{benefit_id}">client.hris.benefits.<a href="./src/finch/resources/hris/benefits/benefits.py">update</a>(benefit_id, \*\*<a href="src/finch/types/hris/benefit_update_params.py">params</a>) -> <a href="./src/finch/types/hris/update_company_benefit_response.py">UpdateCompanyBenefitResponse</a></code>
187188
- <code title="get /employer/benefits">client.hris.benefits.<a href="./src/finch/resources/hris/benefits/benefits.py">list</a>(\*\*<a href="src/finch/types/hris/benefit_list_params.py">params</a>) -> <a href="./src/finch/types/hris/company_benefit.py">SyncSinglePage[CompanyBenefit]</a></code>
188189
- <code title="get /employer/benefits/meta">client.hris.benefits.<a href="./src/finch/resources/hris/benefits/benefits.py">list_supported_benefits</a>(\*\*<a href="src/finch/types/hris/benefit_list_supported_benefits_params.py">params</a>) -> <a href="./src/finch/types/hris/supported_benefit.py">SyncSinglePage[SupportedBenefit]</a></code>
190+
- <code title="post /employer/benefits/register">client.hris.benefits.<a href="./src/finch/resources/hris/benefits/benefits.py">register</a>(\*\*<a href="src/finch/types/hris/benefit_register_params.py">params</a>) -> <a href="./src/finch/types/hris/register_company_benefit_response.py">RegisterCompanyBenefitResponse</a></code>
189191

190192
### Individuals
191193

@@ -224,12 +226,13 @@ Methods:
224226
Types:
225227

226228
```python
227-
from finch.types import DisconnectResponse, Introspection
229+
from finch.types import DisconnectEntityResponse, DisconnectResponse, Introspection
228230
```
229231

230232
Methods:
231233

232234
- <code title="post /disconnect">client.account.<a href="./src/finch/resources/account.py">disconnect</a>() -> <a href="./src/finch/types/disconnect_response.py">DisconnectResponse</a></code>
235+
- <code title="post /disconnect-entity">client.account.<a href="./src/finch/resources/account.py">disconnect_entity</a>(\*\*<a href="src/finch/types/account_disconnect_entity_params.py">params</a>) -> <a href="./src/finch/types/disconnect_entity_response.py">DisconnectEntityResponse</a></code>
233236
- <code title="get /introspect">client.account.<a href="./src/finch/resources/account.py">introspect</a>() -> <a href="./src/finch/types/introspection.py">Introspection</a></code>
234237

235238
# Webhooks

src/finch/resources/account.py

Lines changed: 98 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,16 @@
55
import httpx
66

77
from .. import _legacy_response
8-
from .._types import Body, Query, Headers, NotGiven, not_given
8+
from ..types import account_disconnect_entity_params
9+
from .._types import Body, Query, Headers, NotGiven, SequenceNotStr, not_given
10+
from .._utils import maybe_transform, async_maybe_transform
911
from .._compat import cached_property
1012
from .._resource import SyncAPIResource, AsyncAPIResource
1113
from .._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper
1214
from .._base_client import make_request_options
1315
from ..types.introspection import Introspection
1416
from ..types.disconnect_response import DisconnectResponse
17+
from ..types.disconnect_entity_response import DisconnectEntityResponse
1518

1619
__all__ = ["Account", "AsyncAccount"]
1720

@@ -59,6 +62,47 @@ def disconnect(
5962
cast_to=DisconnectResponse,
6063
)
6164

65+
def disconnect_entity(
66+
self,
67+
*,
68+
entity_ids: SequenceNotStr[str],
69+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
70+
# The extra values given here take precedence over values defined on the client or passed to this method.
71+
extra_headers: Headers | None = None,
72+
extra_query: Query | None = None,
73+
extra_body: Body | None = None,
74+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
75+
) -> DisconnectEntityResponse:
76+
"""
77+
Disconnect entity(s) from a connection without affecting other entities
78+
associated with the same connection.
79+
80+
Args:
81+
entity_ids: Array of entity UUIDs to disconnect. At least one entity ID must be provided.
82+
83+
extra_headers: Send extra headers
84+
85+
extra_query: Add additional query parameters to the request
86+
87+
extra_body: Add additional JSON properties to the request
88+
89+
timeout: Override the client-level default timeout for this request, in seconds
90+
"""
91+
return self._post(
92+
"/disconnect-entity",
93+
body=maybe_transform(
94+
{"entity_ids": entity_ids}, account_disconnect_entity_params.AccountDisconnectEntityParams
95+
),
96+
options=make_request_options(
97+
extra_headers=extra_headers,
98+
extra_query=extra_query,
99+
extra_body=extra_body,
100+
timeout=timeout,
101+
security={"bearer_auth": True},
102+
),
103+
cast_to=DisconnectEntityResponse,
104+
)
105+
62106
def introspect(
63107
self,
64108
*,
@@ -126,6 +170,47 @@ async def disconnect(
126170
cast_to=DisconnectResponse,
127171
)
128172

173+
async def disconnect_entity(
174+
self,
175+
*,
176+
entity_ids: SequenceNotStr[str],
177+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
178+
# The extra values given here take precedence over values defined on the client or passed to this method.
179+
extra_headers: Headers | None = None,
180+
extra_query: Query | None = None,
181+
extra_body: Body | None = None,
182+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
183+
) -> DisconnectEntityResponse:
184+
"""
185+
Disconnect entity(s) from a connection without affecting other entities
186+
associated with the same connection.
187+
188+
Args:
189+
entity_ids: Array of entity UUIDs to disconnect. At least one entity ID must be provided.
190+
191+
extra_headers: Send extra headers
192+
193+
extra_query: Add additional query parameters to the request
194+
195+
extra_body: Add additional JSON properties to the request
196+
197+
timeout: Override the client-level default timeout for this request, in seconds
198+
"""
199+
return await self._post(
200+
"/disconnect-entity",
201+
body=await async_maybe_transform(
202+
{"entity_ids": entity_ids}, account_disconnect_entity_params.AccountDisconnectEntityParams
203+
),
204+
options=make_request_options(
205+
extra_headers=extra_headers,
206+
extra_query=extra_query,
207+
extra_body=extra_body,
208+
timeout=timeout,
209+
security={"bearer_auth": True},
210+
),
211+
cast_to=DisconnectEntityResponse,
212+
)
213+
129214
async def introspect(
130215
self,
131216
*,
@@ -157,6 +242,9 @@ def __init__(self, account: Account) -> None:
157242
self.disconnect = _legacy_response.to_raw_response_wrapper(
158243
account.disconnect,
159244
)
245+
self.disconnect_entity = _legacy_response.to_raw_response_wrapper(
246+
account.disconnect_entity,
247+
)
160248
self.introspect = _legacy_response.to_raw_response_wrapper(
161249
account.introspect,
162250
)
@@ -169,6 +257,9 @@ def __init__(self, account: AsyncAccount) -> None:
169257
self.disconnect = _legacy_response.async_to_raw_response_wrapper(
170258
account.disconnect,
171259
)
260+
self.disconnect_entity = _legacy_response.async_to_raw_response_wrapper(
261+
account.disconnect_entity,
262+
)
172263
self.introspect = _legacy_response.async_to_raw_response_wrapper(
173264
account.introspect,
174265
)
@@ -181,6 +272,9 @@ def __init__(self, account: Account) -> None:
181272
self.disconnect = to_streamed_response_wrapper(
182273
account.disconnect,
183274
)
275+
self.disconnect_entity = to_streamed_response_wrapper(
276+
account.disconnect_entity,
277+
)
184278
self.introspect = to_streamed_response_wrapper(
185279
account.introspect,
186280
)
@@ -193,6 +287,9 @@ def __init__(self, account: AsyncAccount) -> None:
193287
self.disconnect = async_to_streamed_response_wrapper(
194288
account.disconnect,
195289
)
290+
self.disconnect_entity = async_to_streamed_response_wrapper(
291+
account.disconnect_entity,
292+
)
196293
self.introspect = async_to_streamed_response_wrapper(
197294
account.introspect,
198295
)

src/finch/resources/hris/benefits/benefits.py

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
benefit_list_params,
2828
benefit_create_params,
2929
benefit_update_params,
30+
benefit_register_params,
3031
benefit_retrieve_params,
3132
benefit_list_supported_benefits_params,
3233
)
@@ -37,6 +38,7 @@
3738
from ....types.hris.supported_benefit import SupportedBenefit
3839
from ....types.hris.update_company_benefit_response import UpdateCompanyBenefitResponse
3940
from ....types.hris.create_company_benefits_response import CreateCompanyBenefitsResponse
41+
from ....types.hris.register_company_benefit_response import RegisterCompanyBenefitResponse
4042

4143
__all__ = ["Benefits", "AsyncBenefits"]
4244

@@ -295,6 +297,60 @@ def list_supported_benefits(
295297
model=SupportedBenefit,
296298
)
297299

300+
def register(
301+
self,
302+
*,
303+
entity_ids: SequenceNotStr[str] | Omit = omit,
304+
description: str | Omit = omit,
305+
frequency: Optional[BenefitFrequency] | Omit = omit,
306+
type: Optional[BenefitType] | Omit = omit,
307+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
308+
# The extra values given here take precedence over values defined on the client or passed to this method.
309+
extra_headers: Headers | None = None,
310+
extra_query: Query | None = None,
311+
extra_body: Body | None = None,
312+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
313+
) -> RegisterCompanyBenefitResponse:
314+
"""
315+
Register existing benefits from the customer on the provider, on Finch's end.
316+
Please use the `/provider` endpoint to view available types for each provider.
317+
318+
Args:
319+
entity_ids: The entity IDs to specify which entities' data to access.
320+
321+
frequency: The frequency of the benefit deduction/contribution.
322+
323+
type: Type of benefit.
324+
325+
extra_headers: Send extra headers
326+
327+
extra_query: Add additional query parameters to the request
328+
329+
extra_body: Add additional JSON properties to the request
330+
331+
timeout: Override the client-level default timeout for this request, in seconds
332+
"""
333+
return self._post(
334+
"/employer/benefits/register",
335+
body=maybe_transform(
336+
{
337+
"description": description,
338+
"frequency": frequency,
339+
"type": type,
340+
},
341+
benefit_register_params.BenefitRegisterParams,
342+
),
343+
options=make_request_options(
344+
extra_headers=extra_headers,
345+
extra_query=extra_query,
346+
extra_body=extra_body,
347+
timeout=timeout,
348+
query=maybe_transform({"entity_ids": entity_ids}, benefit_register_params.BenefitRegisterParams),
349+
security={"bearer_auth": True},
350+
),
351+
cast_to=RegisterCompanyBenefitResponse,
352+
)
353+
298354

299355
class AsyncBenefits(AsyncAPIResource):
300356
@cached_property
@@ -556,6 +612,62 @@ def list_supported_benefits(
556612
model=SupportedBenefit,
557613
)
558614

615+
async def register(
616+
self,
617+
*,
618+
entity_ids: SequenceNotStr[str] | Omit = omit,
619+
description: str | Omit = omit,
620+
frequency: Optional[BenefitFrequency] | Omit = omit,
621+
type: Optional[BenefitType] | Omit = omit,
622+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
623+
# The extra values given here take precedence over values defined on the client or passed to this method.
624+
extra_headers: Headers | None = None,
625+
extra_query: Query | None = None,
626+
extra_body: Body | None = None,
627+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
628+
) -> RegisterCompanyBenefitResponse:
629+
"""
630+
Register existing benefits from the customer on the provider, on Finch's end.
631+
Please use the `/provider` endpoint to view available types for each provider.
632+
633+
Args:
634+
entity_ids: The entity IDs to specify which entities' data to access.
635+
636+
frequency: The frequency of the benefit deduction/contribution.
637+
638+
type: Type of benefit.
639+
640+
extra_headers: Send extra headers
641+
642+
extra_query: Add additional query parameters to the request
643+
644+
extra_body: Add additional JSON properties to the request
645+
646+
timeout: Override the client-level default timeout for this request, in seconds
647+
"""
648+
return await self._post(
649+
"/employer/benefits/register",
650+
body=await async_maybe_transform(
651+
{
652+
"description": description,
653+
"frequency": frequency,
654+
"type": type,
655+
},
656+
benefit_register_params.BenefitRegisterParams,
657+
),
658+
options=make_request_options(
659+
extra_headers=extra_headers,
660+
extra_query=extra_query,
661+
extra_body=extra_body,
662+
timeout=timeout,
663+
query=await async_maybe_transform(
664+
{"entity_ids": entity_ids}, benefit_register_params.BenefitRegisterParams
665+
),
666+
security={"bearer_auth": True},
667+
),
668+
cast_to=RegisterCompanyBenefitResponse,
669+
)
670+
559671

560672
class BenefitsWithRawResponse:
561673
def __init__(self, benefits: Benefits) -> None:
@@ -576,6 +688,9 @@ def __init__(self, benefits: Benefits) -> None:
576688
self.list_supported_benefits = _legacy_response.to_raw_response_wrapper(
577689
benefits.list_supported_benefits,
578690
)
691+
self.register = _legacy_response.to_raw_response_wrapper(
692+
benefits.register,
693+
)
579694

580695
@cached_property
581696
def individuals(self) -> IndividualsWithRawResponse:
@@ -601,6 +716,9 @@ def __init__(self, benefits: AsyncBenefits) -> None:
601716
self.list_supported_benefits = _legacy_response.async_to_raw_response_wrapper(
602717
benefits.list_supported_benefits,
603718
)
719+
self.register = _legacy_response.async_to_raw_response_wrapper(
720+
benefits.register,
721+
)
604722

605723
@cached_property
606724
def individuals(self) -> AsyncIndividualsWithRawResponse:
@@ -626,6 +744,9 @@ def __init__(self, benefits: Benefits) -> None:
626744
self.list_supported_benefits = to_streamed_response_wrapper(
627745
benefits.list_supported_benefits,
628746
)
747+
self.register = to_streamed_response_wrapper(
748+
benefits.register,
749+
)
629750

630751
@cached_property
631752
def individuals(self) -> IndividualsWithStreamingResponse:
@@ -651,6 +772,9 @@ def __init__(self, benefits: AsyncBenefits) -> None:
651772
self.list_supported_benefits = async_to_streamed_response_wrapper(
652773
benefits.list_supported_benefits,
653774
)
775+
self.register = async_to_streamed_response_wrapper(
776+
benefits.register,
777+
)
654778

655779
@cached_property
656780
def individuals(self) -> AsyncIndividualsWithStreamingResponse:

src/finch/types/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
from .job_completion_event import JobCompletionEvent as JobCompletionEvent
2828
from .provider_list_response import ProviderListResponse as ProviderListResponse
2929
from .access_token_create_params import AccessTokenCreateParams as AccessTokenCreateParams
30+
from .disconnect_entity_response import DisconnectEntityResponse as DisconnectEntityResponse
3031
from .create_access_token_response import CreateAccessTokenResponse as CreateAccessTokenResponse
32+
from .account_disconnect_entity_params import AccountDisconnectEntityParams as AccountDisconnectEntityParams
3133
from .request_forwarding_forward_params import RequestForwardingForwardParams as RequestForwardingForwardParams
3234
from .request_forwarding_forward_response import RequestForwardingForwardResponse as RequestForwardingForwardResponse
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from __future__ import annotations
4+
5+
from typing_extensions import Required, TypedDict
6+
7+
from .._types import SequenceNotStr
8+
9+
__all__ = ["AccountDisconnectEntityParams"]
10+
11+
12+
class AccountDisconnectEntityParams(TypedDict, total=False):
13+
entity_ids: Required[SequenceNotStr[str]]
14+
"""Array of entity UUIDs to disconnect. At least one entity ID must be provided."""

0 commit comments

Comments
 (0)