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

import typing

import pydantic
import typing_extensions
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from ..core.serialization import FieldMetadata
from .rcs_agent_details_agent_use_case import RcsAgentDetailsAgentUseCase
from .rcs_agent_details_emails_item import RcsAgentDetailsEmailsItem
from .rcs_agent_details_phones_item import RcsAgentDetailsPhonesItem
from .rcs_agent_details_websites_item import RcsAgentDetailsWebsitesItem


class RcsAgentDetails(UniversalBaseModel):
    """
    The configuration details of an RCS agent, as returned by the GET endpoint.
    """

    name: typing.Optional[str] = pydantic.Field(default=None)
    """
    Display name of the agent.
    """

    description: typing.Optional[str] = pydantic.Field(default=None)
    """
    Description of the agent.
    """

    icon_url: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="iconUrl")] = pydantic.Field(
        default=None
    )
    """
    URL to the agent's logo image.
    """

    hero_url: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="heroUrl")] = pydantic.Field(
        default=None
    )
    """
    URL to the agent's hero banner image.
    """

    color: typing.Optional[str] = pydantic.Field(default=None)
    """
    The agent's brand color hex code.
    """

    phones: typing.Optional[typing.List[RcsAgentDetailsPhonesItem]] = pydantic.Field(default=None)
    """
    Contact phone numbers for the agent.
    """

    emails: typing.Optional[typing.List[RcsAgentDetailsEmailsItem]] = pydantic.Field(default=None)
    """
    Contact email addresses for the agent.
    """

    websites: typing.Optional[typing.List[RcsAgentDetailsWebsitesItem]] = pydantic.Field(default=None)
    """
    Website links for the agent.
    """

    privacy_url: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="privacyUrl")] = pydantic.Field(
        default=None
    )
    """
    URL to the agent's privacy policy.
    """

    terms_url: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="termsUrl")] = pydantic.Field(
        default=None
    )
    """
    URL to the agent's terms and conditions.
    """

    is_conversational: typing_extensions.Annotated[typing.Optional[bool], FieldMetadata(alias="isConversational")] = (
        pydantic.Field(default=None)
    )
    """
    Whether the agent supports two-way conversations. `true` for agents that respond
    to user messages, `false` for send-only agents (e.g., notifications).
    """

    agent_use_case: typing_extensions.Annotated[
        typing.Optional[RcsAgentDetailsAgentUseCase], FieldMetadata(alias="agentUseCase")
    ] = pydantic.Field(default=None)
    """
    The primary use case for the RCS agent.
    - `TRANSACTIONAL` — Order confirmations, shipping updates, appointment reminders.
    - `PROMOTIONAL` — Marketing messages, offers, discounts.
    - `OTP` — One-time passwords and verification codes.
    - `MULTI_USE` — A combination of transactional, promotional, and/or OTP messaging.
    """

    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
