From 4c6a65059fd079492122943fb18f7582399987f3 Mon Sep 17 00:00:00 2001 From: Shuchang Zheng Date: Thu, 13 Mar 2025 11:51:58 -0700 Subject: [PATCH] Don't allow empty strings in credential creation api (#1934) --- skyvern/forge/sdk/schemas/credentials.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/skyvern/forge/sdk/schemas/credentials.py b/skyvern/forge/sdk/schemas/credentials.py index 074df332..c27997ea 100644 --- a/skyvern/forge/sdk/schemas/credentials.py +++ b/skyvern/forge/sdk/schemas/credentials.py @@ -1,7 +1,7 @@ from datetime import datetime from enum import StrEnum -from pydantic import BaseModel, ConfigDict +from pydantic import BaseModel, ConfigDict, Field class CredentialType(StrEnum): @@ -24,6 +24,11 @@ class PasswordCredential(BaseModel): totp: str | None = None +class NonEmptyPasswordCredential(PasswordCredential): + password: str = Field(..., min_length=1) + username: str = Field(..., min_length=1) + + class CreditCardCredential(BaseModel): card_number: str card_cvv: str @@ -33,6 +38,15 @@ class CreditCardCredential(BaseModel): card_holder_name: str +class NonEmptyCreditCardCredential(CreditCardCredential): + card_number: str = Field(..., min_length=1) + card_cvv: str = Field(..., min_length=1) + card_exp_month: str = Field(..., min_length=1) + card_exp_year: str = Field(..., min_length=1) + card_brand: str = Field(..., min_length=1) + card_holder_name: str = Field(..., min_length=1) + + class CredentialItem(BaseModel): item_id: str name: str @@ -43,7 +57,7 @@ class CredentialItem(BaseModel): class CreateCredentialRequest(BaseModel): name: str credential_type: CredentialType - credential: PasswordCredential | CreditCardCredential + credential: NonEmptyPasswordCredential | NonEmptyCreditCardCredential class CredentialResponse(BaseModel):