Rebuild fern client sdk to 1.06 (#4331)

This commit is contained in:
Marc Kelechava
2025-12-19 12:16:02 -08:00
committed by GitHub
parent 08ca5a0b45
commit 9788138861
50 changed files with 2169 additions and 909 deletions

View File

@@ -4,6 +4,7 @@ import datetime as dt
import typing
from json.decoder import JSONDecodeError
from . import core
from .core.api_error import ApiError
from .core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
from .core.http_response import AsyncHttpResponse, HttpResponse
@@ -25,6 +26,7 @@ from .types.create_script_response import CreateScriptResponse
from .types.credential_response import CredentialResponse
from .types.get_run_response import GetRunResponse
from .types.proxy_location import ProxyLocation
from .types.retry_run_webhook_request import RetryRunWebhookRequest
from .types.run_engine import RunEngine
from .types.run_sdk_action_request_action import RunSdkActionRequestAction
from .types.run_sdk_action_response import RunSdkActionResponse
@@ -36,6 +38,7 @@ from .types.task_run_request_data_extraction_schema import TaskRunRequestDataExt
from .types.task_run_request_proxy_location import TaskRunRequestProxyLocation
from .types.task_run_response import TaskRunResponse
from .types.totp_code import TotpCode
from .types.upload_file_response import UploadFileResponse
from .types.workflow import Workflow
from .types.workflow_create_yaml_request import WorkflowCreateYamlRequest
from .types.workflow_run_request_proxy_location import WorkflowRunRequestProxyLocation
@@ -960,7 +963,7 @@ class RawSkyvern:
self,
run_id: str,
*,
webhook_url: typing.Optional[str] = None,
request: typing.Optional[RetryRunWebhookRequest] = None,
request_options: typing.Optional[RequestOptions] = None,
) -> HttpResponse[typing.Optional[typing.Any]]:
"""
@@ -971,6 +974,8 @@ class RawSkyvern:
run_id : str
The id of the task run or the workflow run.
request : typing.Optional[RetryRunWebhookRequest]
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -979,18 +984,17 @@ class RawSkyvern:
HttpResponse[typing.Optional[typing.Any]]
Successful Response
"""
request_kwargs: dict[str, typing.Any] = {}
if webhook_url is not None:
request_kwargs = {
"json": {"webhook_url": webhook_url},
"headers": {"content-type": "application/json"},
"omit": OMIT,
}
_response = self._client_wrapper.httpx_client.request(
f"v1/runs/{jsonable_encoder(run_id)}/retry_webhook",
method="POST",
json=convert_and_respect_annotation_metadata(
object_=request, annotation=RetryRunWebhookRequest, direction="write"
),
headers={
"content-type": "application/json",
},
request_options=request_options,
**request_kwargs,
omit=OMIT,
)
try:
if _response is None or not _response.text.strip():
@@ -1092,6 +1096,60 @@ class RawSkyvern:
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
def upload_file(
self, *, file: core.File, request_options: typing.Optional[RequestOptions] = None
) -> HttpResponse[UploadFileResponse]:
"""
Parameters
----------
file : core.File
See core.File for more documentation
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
Returns
-------
HttpResponse[UploadFileResponse]
Successful Response
"""
_response = self._client_wrapper.httpx_client.request(
"v1/upload_file",
method="POST",
data={},
files={
"file": file,
},
request_options=request_options,
omit=OMIT,
force_multipart=True,
)
try:
if 200 <= _response.status_code < 300:
_data = typing.cast(
UploadFileResponse,
parse_obj_as(
type_=UploadFileResponse, # type: ignore
object_=_response.json(),
),
)
return HttpResponse(response=_response, data=_data)
if _response.status_code == 422:
raise UnprocessableEntityError(
headers=dict(_response.headers),
body=typing.cast(
typing.Optional[typing.Any],
parse_obj_as(
type_=typing.Optional[typing.Any], # type: ignore
object_=_response.json(),
),
),
)
_response_json = _response.json()
except JSONDecodeError:
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
def list_browser_profiles(
self, *, include_deleted: typing.Optional[bool] = None, request_options: typing.Optional[RequestOptions] = None
) -> HttpResponse[typing.List[BrowserProfile]]:
@@ -3492,7 +3550,7 @@ class AsyncRawSkyvern:
self,
run_id: str,
*,
webhook_url: typing.Optional[str] = None,
request: typing.Optional[RetryRunWebhookRequest] = None,
request_options: typing.Optional[RequestOptions] = None,
) -> AsyncHttpResponse[typing.Optional[typing.Any]]:
"""
@@ -3503,6 +3561,8 @@ class AsyncRawSkyvern:
run_id : str
The id of the task run or the workflow run.
request : typing.Optional[RetryRunWebhookRequest]
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -3511,18 +3571,17 @@ class AsyncRawSkyvern:
AsyncHttpResponse[typing.Optional[typing.Any]]
Successful Response
"""
request_kwargs: dict[str, typing.Any] = {}
if webhook_url is not None:
request_kwargs = {
"json": {"webhook_url": webhook_url},
"headers": {"content-type": "application/json"},
"omit": OMIT,
}
_response = await self._client_wrapper.httpx_client.request(
f"v1/runs/{jsonable_encoder(run_id)}/retry_webhook",
method="POST",
json=convert_and_respect_annotation_metadata(
object_=request, annotation=RetryRunWebhookRequest, direction="write"
),
headers={
"content-type": "application/json",
},
request_options=request_options,
**request_kwargs,
omit=OMIT,
)
try:
if _response is None or not _response.text.strip():
@@ -3624,6 +3683,60 @@ class AsyncRawSkyvern:
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
async def upload_file(
self, *, file: core.File, request_options: typing.Optional[RequestOptions] = None
) -> AsyncHttpResponse[UploadFileResponse]:
"""
Parameters
----------
file : core.File
See core.File for more documentation
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
Returns
-------
AsyncHttpResponse[UploadFileResponse]
Successful Response
"""
_response = await self._client_wrapper.httpx_client.request(
"v1/upload_file",
method="POST",
data={},
files={
"file": file,
},
request_options=request_options,
omit=OMIT,
force_multipart=True,
)
try:
if 200 <= _response.status_code < 300:
_data = typing.cast(
UploadFileResponse,
parse_obj_as(
type_=UploadFileResponse, # type: ignore
object_=_response.json(),
),
)
return AsyncHttpResponse(response=_response, data=_data)
if _response.status_code == 422:
raise UnprocessableEntityError(
headers=dict(_response.headers),
body=typing.cast(
typing.Optional[typing.Any],
parse_obj_as(
type_=typing.Optional[typing.Any], # type: ignore
object_=_response.json(),
),
),
)
_response_json = _response.json()
except JSONDecodeError:
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
async def list_browser_profiles(
self, *, include_deleted: typing.Optional[bool] = None, request_options: typing.Optional[RequestOptions] = None
) -> AsyncHttpResponse[typing.List[BrowserProfile]]: