# 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


class EntityIdBase(UniversalBaseModel):
    """
    All other entityId fields are inferred from the API request.
    """

    reference_id: typing_extensions.Annotated[str, FieldMetadata(alias="referenceId")] = pydantic.Field()
    """
    Externally supplied ID to uniquely identify this object. Is globally unique when combined with all other entityId fields (type, appId, organizationId, agentId).
    
    Must be less than 192 characters and contain only:
    - alphanumeric characters (`a-z`, `A-Z`, `0-9`)
    - hyphens (`-`)
    - underscores (`_`)
    - plus signs (`+`)
    - periods (`.`)
    - at symbol (`@`)
    - pipe symbol (`|`)
    """

    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
