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

import typing

import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from .header_routing_config import HeaderRoutingConfig
from .model_type import ModelType


class VirtualModel(UniversalBaseModel):
    """
    Virtual Model
    """

    name: str = pydantic.Field()
    """
    The name of the Virtual Model
    """

    type: typing.Literal["integration/model/virtual"] = pydantic.Field(default="integration/model/virtual")
    """
    +value=integration/model/virtual
    """

    model_types: typing.List[ModelType] = pydantic.Field()
    """
    Specify the type of the Virtual Model
    """

    slug: typing.Optional[str] = pydantic.Field(default=None)
    """
    It should be a unique identifier for the virtual model. It is used to uniquely identify the virtual model. It can be used in place of virtualGroupName/virtualModelName.
    """

    routing_config: HeaderRoutingConfig

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

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