# This file was auto-generated by Fern from our API Definition.

from ...core.pydantic_utilities import UniversalBaseModel
import pydantic
import typing
from ...core.pydantic_utilities import IS_PYDANTIC_V2


class PlaidLinkRequest(UniversalBaseModel):
    account_id: str = pydantic.Field(alias="accountId")
    """
    Plaid account ID
    """

    public_token: typing.Optional[str] = pydantic.Field(alias="publicToken", default=None)
    """
    Public token received from Plaid Link. Use this if linking the account using the Plaid Link frontend component.
    """

    access_token: typing.Optional[str] = pydantic.Field(alias="accessToken", default=None)
    """
    Plaid access token for the account. If you already have an access token for the account (for example, you have linked the account to your app already), use this instead of publicToken.
    """

    if IS_PYDANTIC_V2:
        model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)  # type: ignore # Pydantic v2
    else:

        class Config:
            frozen = True
            smart_union = True
            extra = pydantic.Extra.allow
