# 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 .enforcing_strategy import EnforcingStrategy
from .secret_detection_guardrail_config_config import SecretDetectionGuardrailConfigConfig
from .secret_detection_guardrail_config_operation import SecretDetectionGuardrailConfigOperation


class SecretDetectionGuardrailConfig(UniversalBaseModel):
    """
    Secrets Detection
    """

    name: str = pydantic.Field()
    """
    The name of the Guardrail Config.
    """

    description: typing.Optional[str] = pydantic.Field(
        default="Detects likely credentials/secrets (AWS keys, API keys, JWT tokens, private keys)"
    )
    """
    Optional description for this Guardrail Config.
    """

    type: typing.Literal["integration/guardrail-config/secret-detection"] = pydantic.Field(
        default="integration/guardrail-config/secret-detection"
    )
    """
    +uiType=Hidden
    +value=integration/guardrail-config/secret-detection
    """

    operation: SecretDetectionGuardrailConfigOperation = pydantic.Field()
    """
    The operation type to use for the Guardrail. Validate guardrails are used to validate requests and mutate can validate as well as mutate requests. Validate guardrails are run in parallel while mutate guardrails are run sequentially.
    """

    priority: typing.Optional[int] = pydantic.Field(default=1)
    """
    Execution order for mutate guardrails. Lower values run first. Only applicable when operation is mutate.
    """

    enforcing_strategy: EnforcingStrategy
    config: SecretDetectionGuardrailConfigConfig

    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
