Login endpoint Part 2 - support 3 types of credentials and fix bugs (#2999)
This commit is contained in:
@@ -1,10 +1,18 @@
|
||||
from pydantic import BaseModel
|
||||
from enum import StrEnum
|
||||
from typing import Annotated, Literal, Union
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from skyvern.schemas.runs import ProxyLocation
|
||||
|
||||
|
||||
class LoginRequest(BaseModel):
|
||||
credential_id: str
|
||||
class CredentialType(StrEnum):
|
||||
skyvern = "skyvern"
|
||||
bitwarden = "bitwarden"
|
||||
onepassword = "1password"
|
||||
|
||||
|
||||
class LoginRequestBase(BaseModel):
|
||||
url: str | None = None
|
||||
prompt: str | None = None
|
||||
webhook_url: str | None = None
|
||||
@@ -14,3 +22,27 @@ class LoginRequest(BaseModel):
|
||||
browser_session_id: str | None = None
|
||||
extra_http_headers: dict[str, str] | None = None
|
||||
max_screenshot_scrolling_times: int | None = None
|
||||
|
||||
|
||||
class SkyvernCredentialLoginRequest(LoginRequestBase):
|
||||
credential_type: Literal[CredentialType.skyvern] = CredentialType.skyvern
|
||||
credential_id: str
|
||||
|
||||
|
||||
class BitwardenLoginRequest(LoginRequestBase):
|
||||
credential_type: Literal[CredentialType.bitwarden] = CredentialType.bitwarden
|
||||
collection_id: str | None = None
|
||||
item_id: str | None = None
|
||||
url: str | None = None
|
||||
|
||||
|
||||
class OnePasswordLoginRequest(LoginRequestBase):
|
||||
credential_type: Literal[CredentialType.onepassword] = CredentialType.onepassword
|
||||
vault_id: str
|
||||
item_id: str
|
||||
|
||||
|
||||
LoginRequest = Annotated[
|
||||
Union[SkyvernCredentialLoginRequest, BitwardenLoginRequest, OnePasswordLoginRequest],
|
||||
Field(discriminator="credential_type"),
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user