# 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 .intelligence_features import IntelligenceFeatures
from .privacy_settings import PrivacySettings
from .speaker_analysis import SpeakerAnalysis
from .transcription_options import TranscriptionOptions
from .webhook_config import WebhookConfig


class TranscriptionCreateRequest(UniversalBaseModel):
    """
    Request to create a new transcription.
    """

    organization_id: str = pydantic.Field()
    """
    Organization ID (org_ prefixed string, required)
    """

    transcription_options: TranscriptionOptions = pydantic.Field()
    """
    Core transcription configuration (required)
    """

    speaker_analysis: typing.Optional[SpeakerAnalysis] = pydantic.Field(default=None)
    """
    Speaker diarization configuration (optional)
    """

    intelligence_features: typing.Optional[IntelligenceFeatures] = pydantic.Field(default=None)
    """
    Advanced analysis features (optional)
    """

    privacy_settings: typing.Optional[PrivacySettings] = pydantic.Field(default=None)
    """
    Privacy and redaction settings (optional)
    """

    webhook: typing.Optional[WebhookConfig] = pydantic.Field(default=None)
    """
    Webhook notification configuration (optional)
    """

    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
