Login endpoint Part 2 - support 3 types of credentials and fix bugs (#2999)

This commit is contained in:
Shuchang Zheng
2025-07-21 00:27:04 -07:00
committed by GitHub
parent 6f48309c75
commit 85857e548d
2 changed files with 80 additions and 39 deletions

View File

@@ -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"),
]