Files
Dorod-Sky/skyvern/schemas/run_blocks.py

71 lines
2.6 KiB
Python
Raw Normal View History

from enum import StrEnum
from typing import Annotated, Literal, Union
from pydantic import BaseModel, Field
2025-07-16 15:35:36 -07:00
from skyvern.schemas.runs import ProxyLocation
class CredentialType(StrEnum):
skyvern = "skyvern"
bitwarden = "bitwarden"
onepassword = "1password"
class LoginRequestBase(BaseModel):
2025-07-22 06:38:08 -07:00
url: str | None = Field(default=None, description="Website url")
prompt: str | None = Field(
default=None,
description="Login instructions. Skyvern has default prompt/instruction for login if this field is not provided.",
)
webhook_url: str | None = Field(default=None, description="Webhook URL to send login status updates")
proxy_location: ProxyLocation | None = Field(default=None, description="Proxy location to use")
totp_identifier: str | None = Field(
default=None, description="Identifier for TOTP (Time-based One-Time Password) if required"
)
totp_url: str | None = Field(default=None, description="TOTP URL to fetch one-time passwords")
browser_session_id: str | None = Field(
default=None, description="ID of the browser session to use, which is prefixed by `pbs_` e.g. `pbs_123456`"
)
extra_http_headers: dict[str, str] | None = Field(
default=None, description="Additional HTTP headers to include in requests"
)
max_screenshot_scrolling_times: int | None = Field(
default=None, description="Maximum number of times to scroll for screenshots"
)
class SkyvernLoginRequest(LoginRequestBase):
"""
Login with password saved in Skyvern
"""
credential_type: Literal[CredentialType.skyvern] = CredentialType.skyvern
2025-07-22 06:38:08 -07:00
credential_id: str = Field(..., description="ID of the Skyvern credential to use for login.")
class BitwardenLoginRequest(LoginRequestBase):
2025-07-22 06:38:08 -07:00
"""
Login with password saved in Bitwarden
"""
credential_type: Literal[CredentialType.bitwarden] = CredentialType.bitwarden
2025-07-22 06:38:08 -07:00
bitwarden_collection_id: str | None = Field(default=None, description="Bitwarden collection ID")
bitwarden_item_id: str | None = Field(default=None, description="Bitwarden item ID")
class OnePasswordLoginRequest(LoginRequestBase):
2025-07-22 06:38:08 -07:00
"""
Login with password saved in 1Password
"""
credential_type: Literal[CredentialType.onepassword] = CredentialType.onepassword
2025-07-22 06:38:08 -07:00
onepassword_vault_id: str = Field(..., description="1Password vault ID.")
onepassword_item_id: str = Field(..., description="1Password item ID.")
LoginRequest = Annotated[
2025-07-22 06:38:08 -07:00
Union[SkyvernLoginRequest, BitwardenLoginRequest, OnePasswordLoginRequest],
Field(discriminator="credential_type"),
]