Skip to content

Commit cd3cc6f

Browse files
feat(api): add /jobs endpoints (#210)
1 parent 6b8c8a3 commit cd3cc6f

24 files changed

+953
-7
lines changed

.stats.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
configured_endpoints: 19
1+
configured_endpoints: 23

api.md

+30-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Shared Types
22

33
```python
4-
from finch.types import OperationSupport, OperationSupportMatrix
4+
from finch.types import OperationSupport, OperationSupportMatrix, Paging
55
```
66

77
# Finch
@@ -16,7 +16,7 @@ Methods:
1616
Types:
1717

1818
```python
19-
from finch.types import Income, Location, Money, Paging
19+
from finch.types import Income, Location, Money
2020
```
2121

2222
## CompanyResource
@@ -186,3 +186,31 @@ from finch.types import RequestForwardingForwardResponse
186186
Methods:
187187

188188
- <code title="post /forward">client.request_forwarding.<a href="./src/finch/resources/request_forwarding.py">forward</a>(\*\*<a href="src/finch/types/request_forwarding_forward_params.py">params</a>) -> <a href="./src/finch/types/request_forwarding_forward_response.py">RequestForwardingForwardResponse</a></code>
189+
190+
# Jobs
191+
192+
## Automated
193+
194+
Types:
195+
196+
```python
197+
from finch.types.jobs import AutomatedAsyncJob, AutomatedCreateResponse
198+
```
199+
200+
Methods:
201+
202+
- <code title="post /jobs/automated">client.jobs.automated.<a href="./src/finch/resources/jobs/automated.py">create</a>(\*\*<a href="src/finch/types/jobs/automated_create_params.py">params</a>) -> <a href="./src/finch/types/jobs/automated_create_response.py">AutomatedCreateResponse</a></code>
203+
- <code title="get /jobs/automated/{job_id}">client.jobs.automated.<a href="./src/finch/resources/jobs/automated.py">retrieve</a>(job_id) -> <a href="./src/finch/types/jobs/automated_async_job.py">AutomatedAsyncJob</a></code>
204+
- <code title="get /jobs/automated">client.jobs.automated.<a href="./src/finch/resources/jobs/automated.py">list</a>(\*\*<a href="src/finch/types/jobs/automated_list_params.py">params</a>) -> <a href="./src/finch/types/jobs/automated_async_job.py">SyncPage[AutomatedAsyncJob]</a></code>
205+
206+
## Manual
207+
208+
Types:
209+
210+
```python
211+
from finch.types.jobs import ManualAsyncJob
212+
```
213+
214+
Methods:
215+
216+
- <code title="get /jobs/manual/{job_id}">client.jobs.manual.<a href="./src/finch/resources/jobs/manual.py">retrieve</a>(job_id) -> <a href="./src/finch/types/jobs/manual_async_job.py">ManualAsyncJob</a></code>

src/finch/_client.py

+6
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ class Finch(SyncAPIClient):
5353
account: resources.Account
5454
webhooks: resources.Webhooks
5555
request_forwarding: resources.RequestForwarding
56+
jobs: resources.Jobs
5657
with_raw_response: FinchWithRawResponse
5758

5859
# client options
@@ -136,6 +137,7 @@ def __init__(
136137
self.account = resources.Account(self)
137138
self.webhooks = resources.Webhooks(self)
138139
self.request_forwarding = resources.RequestForwarding(self)
140+
self.jobs = resources.Jobs(self)
139141
self.with_raw_response = FinchWithRawResponse(self)
140142

141143
@property
@@ -357,6 +359,7 @@ class AsyncFinch(AsyncAPIClient):
357359
account: resources.AsyncAccount
358360
webhooks: resources.AsyncWebhooks
359361
request_forwarding: resources.AsyncRequestForwarding
362+
jobs: resources.AsyncJobs
360363
with_raw_response: AsyncFinchWithRawResponse
361364

362365
# client options
@@ -440,6 +443,7 @@ def __init__(
440443
self.account = resources.AsyncAccount(self)
441444
self.webhooks = resources.AsyncWebhooks(self)
442445
self.request_forwarding = resources.AsyncRequestForwarding(self)
446+
self.jobs = resources.AsyncJobs(self)
443447
self.with_raw_response = AsyncFinchWithRawResponse(self)
444448

445449
@property
@@ -664,6 +668,7 @@ def __init__(self, client: Finch) -> None:
664668
self.providers = resources.ProvidersWithRawResponse(client.providers)
665669
self.account = resources.AccountWithRawResponse(client.account)
666670
self.request_forwarding = resources.RequestForwardingWithRawResponse(client.request_forwarding)
671+
self.jobs = resources.JobsWithRawResponse(client.jobs)
667672

668673

669674
class AsyncFinchWithRawResponse:
@@ -672,6 +677,7 @@ def __init__(self, client: AsyncFinch) -> None:
672677
self.providers = resources.AsyncProvidersWithRawResponse(client.providers)
673678
self.account = resources.AsyncAccountWithRawResponse(client.account)
674679
self.request_forwarding = resources.AsyncRequestForwardingWithRawResponse(client.request_forwarding)
680+
self.jobs = resources.AsyncJobsWithRawResponse(client.jobs)
675681

676682

677683
Client = Finch

src/finch/pagination.py

+61-1
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55

66
from httpx import Response
77

8-
from .types import Paging
98
from ._types import ModelT
109
from ._utils import is_mapping
1110
from ._models import BaseModel
1211
from ._base_client import BasePage, PageInfo, BaseSyncPage, BaseAsyncPage
12+
from .types.shared import Paging
1313

1414
__all__ = [
1515
"SyncSinglePage",
@@ -18,6 +18,8 @@
1818
"AsyncResponsesPage",
1919
"SyncIndividualsPage",
2020
"AsyncIndividualsPage",
21+
"SyncPage",
22+
"AsyncPage",
2123
]
2224

2325
_BaseModelT = TypeVar("_BaseModelT", bound=BaseModel)
@@ -161,3 +163,61 @@ def next_page_info(self) -> Optional[PageInfo]:
161163
return PageInfo(params={"offset": current_count})
162164

163165
return None
166+
167+
168+
PagePaging = Paging
169+
"""This is deprecated, Paging should be used instead"""
170+
171+
172+
class SyncPage(BaseSyncPage[ModelT], BasePage[ModelT], Generic[ModelT]):
173+
paging: Paging
174+
data: List[ModelT]
175+
176+
@override
177+
def _get_page_items(self) -> List[ModelT]:
178+
return self.data
179+
180+
@override
181+
def next_page_info(self) -> Optional[PageInfo]:
182+
offset = self.paging.offset
183+
if offset is None:
184+
return None
185+
186+
length = len(self.data)
187+
current_count = offset + length
188+
189+
total_count = self.paging.count
190+
if total_count is None:
191+
return None
192+
193+
if current_count < total_count:
194+
return PageInfo(params={"offset": current_count})
195+
196+
return None
197+
198+
199+
class AsyncPage(BaseAsyncPage[ModelT], BasePage[ModelT], Generic[ModelT]):
200+
paging: Paging
201+
data: List[ModelT]
202+
203+
@override
204+
def _get_page_items(self) -> List[ModelT]:
205+
return self.data
206+
207+
@override
208+
def next_page_info(self) -> Optional[PageInfo]:
209+
offset = self.paging.offset
210+
if offset is None:
211+
return None
212+
213+
length = len(self.data)
214+
current_count = offset + length
215+
216+
total_count = self.paging.count
217+
if total_count is None:
218+
return None
219+
220+
if current_count < total_count:
221+
return PageInfo(params={"offset": current_count})
222+
223+
return None

src/finch/resources/__init__.py

+5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# File generated from our OpenAPI spec by Stainless.
22

33
from .hris import HRIS, AsyncHRIS, HRISWithRawResponse, AsyncHRISWithRawResponse
4+
from .jobs import Jobs, AsyncJobs, JobsWithRawResponse, AsyncJobsWithRawResponse
45
from .account import (
56
Account,
67
AsyncAccount,
@@ -40,4 +41,8 @@
4041
"AsyncRequestForwarding",
4142
"RequestForwardingWithRawResponse",
4243
"AsyncRequestForwardingWithRawResponse",
44+
"Jobs",
45+
"AsyncJobs",
46+
"JobsWithRawResponse",
47+
"AsyncJobsWithRawResponse",
4348
]

src/finch/resources/jobs/__init__.py

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# File generated from our OpenAPI spec by Stainless.
2+
3+
from .jobs import Jobs, AsyncJobs, JobsWithRawResponse, AsyncJobsWithRawResponse
4+
from .manual import (
5+
Manual,
6+
AsyncManual,
7+
ManualWithRawResponse,
8+
AsyncManualWithRawResponse,
9+
)
10+
from .automated import (
11+
Automated,
12+
AsyncAutomated,
13+
AutomatedWithRawResponse,
14+
AsyncAutomatedWithRawResponse,
15+
)
16+
17+
__all__ = [
18+
"Automated",
19+
"AsyncAutomated",
20+
"AutomatedWithRawResponse",
21+
"AsyncAutomatedWithRawResponse",
22+
"Manual",
23+
"AsyncManual",
24+
"ManualWithRawResponse",
25+
"AsyncManualWithRawResponse",
26+
"Jobs",
27+
"AsyncJobs",
28+
"JobsWithRawResponse",
29+
"AsyncJobsWithRawResponse",
30+
]

0 commit comments

Comments
 (0)