Skip to content

Commit 686b27e

Browse files
feat(api): add per endpoint security
1 parent f342729 commit 686b27e

31 files changed

Lines changed: 358 additions & 29 deletions

.stats.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
configured_endpoints: 46
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-46f433f34d440aa1dfcc48cc8d822c598571b68be2f723ec99e1b4fba6c13b1e.yml
33
openapi_spec_hash: 5b5cd728776723ac773900f7e8a32c05
4-
config_hash: 0892e2e0eeb0343a022afa62e9080dd1
4+
config_hash: 83522e0e335cf983f8d2119c1f2bba18

src/finch/resources/access_tokens.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ def create(
7171
7272
timeout: Override the client-level default timeout for this request, in seconds
7373
"""
74+
extra_headers = {"Authorization": omit, **(extra_headers or {})}
75+
7476
if not is_given(client_id):
7577
if self._client.client_id is None:
7678
raise ValueError(
@@ -157,6 +159,8 @@ async def create(
157159
158160
timeout: Override the client-level default timeout for this request, in seconds
159161
"""
162+
extra_headers = {"Authorization": omit, **(extra_headers or {})}
163+
160164
if not is_given(client_id):
161165
if self._client.client_id is None:
162166
raise ValueError(

src/finch/resources/account.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ def disconnect(
4747
timeout: float | httpx.Timeout | None | NotGiven = not_given,
4848
) -> DisconnectResponse:
4949
"""Disconnect one or more `access_token`s from your application."""
50+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
5051
return self._post(
5152
"/disconnect",
5253
options=make_request_options(
@@ -66,6 +67,7 @@ def introspect(
6667
timeout: float | httpx.Timeout | None | NotGiven = not_given,
6768
) -> Introspection:
6869
"""Read account information associated with an `access_token`"""
70+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
6971
return self._get(
7072
"/introspect",
7173
options=make_request_options(
@@ -106,6 +108,7 @@ async def disconnect(
106108
timeout: float | httpx.Timeout | None | NotGiven = not_given,
107109
) -> DisconnectResponse:
108110
"""Disconnect one or more `access_token`s from your application."""
111+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
109112
return await self._post(
110113
"/disconnect",
111114
options=make_request_options(
@@ -125,6 +128,7 @@ async def introspect(
125128
timeout: float | httpx.Timeout | None | NotGiven = not_given,
126129
) -> Introspection:
127130
"""Read account information associated with an `access_token`"""
131+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
128132
return await self._get(
129133
"/introspect",
130134
options=make_request_options(

src/finch/resources/connect/sessions.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ def new(
104104
105105
timeout: Override the client-level default timeout for this request, in seconds
106106
"""
107+
extra_headers = {**self._client._basic_auth, **(extra_headers or {})}
107108
return self._post(
108109
"/connect/sessions",
109110
body=maybe_transform(
@@ -177,6 +178,7 @@ def reauthenticate(
177178
178179
timeout: Override the client-level default timeout for this request, in seconds
179180
"""
181+
extra_headers = {**self._client._basic_auth, **(extra_headers or {})}
180182
return self._post(
181183
"/connect/sessions/reauthenticate",
182184
body=maybe_transform(
@@ -278,6 +280,7 @@ async def new(
278280
279281
timeout: Override the client-level default timeout for this request, in seconds
280282
"""
283+
extra_headers = {**self._client._basic_auth, **(extra_headers or {})}
281284
return await self._post(
282285
"/connect/sessions",
283286
body=await async_maybe_transform(
@@ -351,6 +354,7 @@ async def reauthenticate(
351354
352355
timeout: Override the client-level default timeout for this request, in seconds
353356
"""
357+
extra_headers = {**self._client._basic_auth, **(extra_headers or {})}
354358
return await self._post(
355359
"/connect/sessions/reauthenticate",
356360
body=await async_maybe_transform(

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ def create(
106106
107107
timeout: Override the client-level default timeout for this request, in seconds
108108
"""
109+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
109110
return self._post(
110111
"/employer/benefits",
111112
body=maybe_transform(
@@ -155,6 +156,7 @@ def retrieve(
155156
"""
156157
if not benefit_id:
157158
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
159+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
158160
return self._get(
159161
f"/employer/benefits/{benefit_id}",
160162
options=make_request_options(
@@ -198,6 +200,7 @@ def update(
198200
"""
199201
if not benefit_id:
200202
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
203+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
201204
return self._post(
202205
f"/employer/benefits/{benefit_id}",
203206
body=maybe_transform({"description": description}, benefit_update_params.BenefitUpdateParams),
@@ -236,6 +239,7 @@ def list(
236239
237240
timeout: Override the client-level default timeout for this request, in seconds
238241
"""
242+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
239243
return self._get_api_list(
240244
"/employer/benefits",
241245
page=SyncSinglePage[CompanyBenefit],
@@ -274,6 +278,7 @@ def list_supported_benefits(
274278
275279
timeout: Override the client-level default timeout for this request, in seconds
276280
"""
281+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
277282
return self._get_api_list(
278283
"/employer/benefits/meta",
279284
page=SyncSinglePage[SupportedBenefit],
@@ -356,6 +361,7 @@ async def create(
356361
357362
timeout: Override the client-level default timeout for this request, in seconds
358363
"""
364+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
359365
return await self._post(
360366
"/employer/benefits",
361367
body=await async_maybe_transform(
@@ -407,6 +413,7 @@ async def retrieve(
407413
"""
408414
if not benefit_id:
409415
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
416+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
410417
return await self._get(
411418
f"/employer/benefits/{benefit_id}",
412419
options=make_request_options(
@@ -452,6 +459,7 @@ async def update(
452459
"""
453460
if not benefit_id:
454461
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
462+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
455463
return await self._post(
456464
f"/employer/benefits/{benefit_id}",
457465
body=await async_maybe_transform({"description": description}, benefit_update_params.BenefitUpdateParams),
@@ -492,6 +500,7 @@ def list(
492500
493501
timeout: Override the client-level default timeout for this request, in seconds
494502
"""
503+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
495504
return self._get_api_list(
496505
"/employer/benefits",
497506
page=AsyncSinglePage[CompanyBenefit],
@@ -530,6 +539,7 @@ def list_supported_benefits(
530539
531540
timeout: Override the client-level default timeout for this request, in seconds
532541
"""
542+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
533543
return self._get_api_list(
534544
"/employer/benefits/meta",
535545
page=AsyncSinglePage[SupportedBenefit],

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ def enroll_many(
8383
"""
8484
if not benefit_id:
8585
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
86+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
8687
return self._post(
8788
f"/employer/benefits/{benefit_id}/individuals",
8889
body=maybe_transform(individuals, Iterable[individual_enroll_many_params.Individual]),
@@ -126,6 +127,7 @@ def enrolled_ids(
126127
"""
127128
if not benefit_id:
128129
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
130+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
129131
return self._get(
130132
f"/employer/benefits/{benefit_id}/enrolled",
131133
options=make_request_options(
@@ -172,6 +174,7 @@ def retrieve_many_benefits(
172174
"""
173175
if not benefit_id:
174176
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
177+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
175178
return self._get_api_list(
176179
f"/employer/benefits/{benefit_id}/individuals",
177180
page=SyncSinglePage[IndividualBenefit],
@@ -222,6 +225,7 @@ def unenroll_many(
222225
"""
223226
if not benefit_id:
224227
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
228+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
225229
return self._delete(
226230
f"/employer/benefits/{benefit_id}/individuals",
227231
body=maybe_transform(
@@ -295,6 +299,7 @@ async def enroll_many(
295299
"""
296300
if not benefit_id:
297301
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
302+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
298303
return await self._post(
299304
f"/employer/benefits/{benefit_id}/individuals",
300305
body=await async_maybe_transform(individuals, Iterable[individual_enroll_many_params.Individual]),
@@ -338,6 +343,7 @@ async def enrolled_ids(
338343
"""
339344
if not benefit_id:
340345
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
346+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
341347
return await self._get(
342348
f"/employer/benefits/{benefit_id}/enrolled",
343349
options=make_request_options(
@@ -384,6 +390,7 @@ def retrieve_many_benefits(
384390
"""
385391
if not benefit_id:
386392
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
393+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
387394
return self._get_api_list(
388395
f"/employer/benefits/{benefit_id}/individuals",
389396
page=AsyncSinglePage[IndividualBenefit],
@@ -434,6 +441,7 @@ async def unenroll_many(
434441
"""
435442
if not benefit_id:
436443
raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}")
444+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
437445
return await self._delete(
438446
f"/employer/benefits/{benefit_id}/individuals",
439447
body=await async_maybe_transform(

src/finch/resources/hris/company/company.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ def retrieve(
7474
7575
timeout: Override the client-level default timeout for this request, in seconds
7676
"""
77+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
7778
return self._get(
7879
"/employer/company",
7980
options=make_request_options(
@@ -136,6 +137,7 @@ async def retrieve(
136137
137138
timeout: Override the client-level default timeout for this request, in seconds
138139
"""
140+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
139141
return await self._get(
140142
"/employer/company",
141143
options=make_request_options(

src/finch/resources/hris/company/pay_statement_item/pay_statement_item.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ def list(
9898
9999
timeout: Override the client-level default timeout for this request, in seconds
100100
"""
101+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
101102
return self._get_api_list(
102103
"/employer/pay-statement-item",
103104
page=SyncResponsesPage[PayStatementItemListResponse],
@@ -190,6 +191,7 @@ def list(
190191
191192
timeout: Override the client-level default timeout for this request, in seconds
192193
"""
194+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
193195
return self._get_api_list(
194196
"/employer/pay-statement-item",
195197
page=AsyncResponsesPage[PayStatementItemListResponse],

src/finch/resources/hris/company/pay_statement_item/rules.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ def create(
9090
9191
timeout: Override the client-level default timeout for this request, in seconds
9292
"""
93+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
9394
return self._post(
9495
"/employer/pay-statement-item/rule",
9596
body=maybe_transform(
@@ -141,6 +142,7 @@ def update(
141142
"""
142143
if not rule_id:
143144
raise ValueError(f"Expected a non-empty value for `rule_id` but received {rule_id!r}")
145+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
144146
return self._put(
145147
f"/employer/pay-statement-item/rule/{rule_id}",
146148
body=maybe_transform({"optional_property": optional_property}, rule_update_params.RuleUpdateParams),
@@ -179,6 +181,7 @@ def list(
179181
180182
timeout: Override the client-level default timeout for this request, in seconds
181183
"""
184+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
182185
return self._get_api_list(
183186
"/employer/pay-statement-item/rule",
184187
page=SyncResponsesPage[RuleListResponse],
@@ -220,6 +223,7 @@ def delete(
220223
"""
221224
if not rule_id:
222225
raise ValueError(f"Expected a non-empty value for `rule_id` but received {rule_id!r}")
226+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
223227
return self._delete(
224228
f"/employer/pay-statement-item/rule/{rule_id}",
225229
options=make_request_options(
@@ -294,6 +298,7 @@ async def create(
294298
295299
timeout: Override the client-level default timeout for this request, in seconds
296300
"""
301+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
297302
return await self._post(
298303
"/employer/pay-statement-item/rule",
299304
body=await async_maybe_transform(
@@ -345,6 +350,7 @@ async def update(
345350
"""
346351
if not rule_id:
347352
raise ValueError(f"Expected a non-empty value for `rule_id` but received {rule_id!r}")
353+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
348354
return await self._put(
349355
f"/employer/pay-statement-item/rule/{rule_id}",
350356
body=await async_maybe_transform(
@@ -385,6 +391,7 @@ def list(
385391
386392
timeout: Override the client-level default timeout for this request, in seconds
387393
"""
394+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
388395
return self._get_api_list(
389396
"/employer/pay-statement-item/rule",
390397
page=AsyncResponsesPage[RuleListResponse],
@@ -426,6 +433,7 @@ async def delete(
426433
"""
427434
if not rule_id:
428435
raise ValueError(f"Expected a non-empty value for `rule_id` but received {rule_id!r}")
436+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
429437
return await self._delete(
430438
f"/employer/pay-statement-item/rule/{rule_id}",
431439
options=make_request_options(

src/finch/resources/hris/directory.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ def list(
7171
7272
timeout: Override the client-level default timeout for this request, in seconds
7373
"""
74+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
7475
return self._get_api_list(
7576
"/employer/directory",
7677
page=SyncIndividualsPage[IndividualInDirectory],
@@ -185,6 +186,7 @@ def list(
185186
186187
timeout: Override the client-level default timeout for this request, in seconds
187188
"""
189+
extra_headers = {**self._client._bearer_auth, **(extra_headers or {})}
188190
return self._get_api_list(
189191
"/employer/directory",
190192
page=AsyncIndividualsPage[IndividualInDirectory],

0 commit comments

Comments
 (0)