# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins
import copy
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities

__all__ = [
    'EndpointCertificateArgs',
    'EndpointCertificateArgsDict',
    'EndpointModelReferenceArgs',
    'EndpointModelReferenceArgsDict',
    'EndpointModelReferenceFoundationModelArgs',
    'EndpointModelReferenceFoundationModelArgsDict',
    'EndpointModerationArgs',
    'EndpointModerationArgsDict',
    'EndpointRateLimitArgs',
    'EndpointRateLimitArgsDict',
    'EndpointTagArgs',
    'EndpointTagArgsDict',
]

MYPY = False

if not MYPY:
    class EndpointCertificateArgsDict(TypedDict):
        not_after: NotRequired[pulumi.Input[builtins.int]]
        """
        X509私有证书过期的时间。使用秒级时间戳表示。
        """
        not_before: NotRequired[pulumi.Input[builtins.int]]
        """
        X509私有证书开始生效的时间。使用秒级时间戳表示。
        """
        pca_host: NotRequired[pulumi.Input[builtins.str]]
        """
        证书方。
        """
        pca_instance_certificate: NotRequired[pulumi.Input[builtins.str]]
        """
        PEM 格式的叶子证书。
        """
        pca_name: NotRequired[pulumi.Input[builtins.str]]
        """
        证书名称。
        """
        pca_root_ca_certificate: NotRequired[pulumi.Input[builtins.str]]
        """
        PEM 格式的根证书。
        """
        pca_sub_ca_certificate: NotRequired[pulumi.Input[builtins.str]]
        """
        PEM 格式的中间根证书和根证书。
        """
elif False:
    EndpointCertificateArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EndpointCertificateArgs:
    def __init__(__self__, *,
                 not_after: Optional[pulumi.Input[builtins.int]] = None,
                 not_before: Optional[pulumi.Input[builtins.int]] = None,
                 pca_host: Optional[pulumi.Input[builtins.str]] = None,
                 pca_instance_certificate: Optional[pulumi.Input[builtins.str]] = None,
                 pca_name: Optional[pulumi.Input[builtins.str]] = None,
                 pca_root_ca_certificate: Optional[pulumi.Input[builtins.str]] = None,
                 pca_sub_ca_certificate: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.int] not_after: X509私有证书过期的时间。使用秒级时间戳表示。
        :param pulumi.Input[builtins.int] not_before: X509私有证书开始生效的时间。使用秒级时间戳表示。
        :param pulumi.Input[builtins.str] pca_host: 证书方。
        :param pulumi.Input[builtins.str] pca_instance_certificate: PEM 格式的叶子证书。
        :param pulumi.Input[builtins.str] pca_name: 证书名称。
        :param pulumi.Input[builtins.str] pca_root_ca_certificate: PEM 格式的根证书。
        :param pulumi.Input[builtins.str] pca_sub_ca_certificate: PEM 格式的中间根证书和根证书。
        """
        if not_after is not None:
            pulumi.set(__self__, "not_after", not_after)
        if not_before is not None:
            pulumi.set(__self__, "not_before", not_before)
        if pca_host is not None:
            pulumi.set(__self__, "pca_host", pca_host)
        if pca_instance_certificate is not None:
            pulumi.set(__self__, "pca_instance_certificate", pca_instance_certificate)
        if pca_name is not None:
            pulumi.set(__self__, "pca_name", pca_name)
        if pca_root_ca_certificate is not None:
            pulumi.set(__self__, "pca_root_ca_certificate", pca_root_ca_certificate)
        if pca_sub_ca_certificate is not None:
            pulumi.set(__self__, "pca_sub_ca_certificate", pca_sub_ca_certificate)

    @property
    @pulumi.getter(name="notAfter")
    def not_after(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        X509私有证书过期的时间。使用秒级时间戳表示。
        """
        return pulumi.get(self, "not_after")

    @not_after.setter
    def not_after(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "not_after", value)

    @property
    @pulumi.getter(name="notBefore")
    def not_before(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        X509私有证书开始生效的时间。使用秒级时间戳表示。
        """
        return pulumi.get(self, "not_before")

    @not_before.setter
    def not_before(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "not_before", value)

    @property
    @pulumi.getter(name="pcaHost")
    def pca_host(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        证书方。
        """
        return pulumi.get(self, "pca_host")

    @pca_host.setter
    def pca_host(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "pca_host", value)

    @property
    @pulumi.getter(name="pcaInstanceCertificate")
    def pca_instance_certificate(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        PEM 格式的叶子证书。
        """
        return pulumi.get(self, "pca_instance_certificate")

    @pca_instance_certificate.setter
    def pca_instance_certificate(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "pca_instance_certificate", value)

    @property
    @pulumi.getter(name="pcaName")
    def pca_name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        证书名称。
        """
        return pulumi.get(self, "pca_name")

    @pca_name.setter
    def pca_name(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "pca_name", value)

    @property
    @pulumi.getter(name="pcaRootCaCertificate")
    def pca_root_ca_certificate(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        PEM 格式的根证书。
        """
        return pulumi.get(self, "pca_root_ca_certificate")

    @pca_root_ca_certificate.setter
    def pca_root_ca_certificate(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "pca_root_ca_certificate", value)

    @property
    @pulumi.getter(name="pcaSubCaCertificate")
    def pca_sub_ca_certificate(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        PEM 格式的中间根证书和根证书。
        """
        return pulumi.get(self, "pca_sub_ca_certificate")

    @pca_sub_ca_certificate.setter
    def pca_sub_ca_certificate(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "pca_sub_ca_certificate", value)


if not MYPY:
    class EndpointModelReferenceArgsDict(TypedDict):
        custom_model_id: NotRequired[pulumi.Input[builtins.str]]
        """
        定制模型的ID。
        """
        foundation_model: NotRequired[pulumi.Input['EndpointModelReferenceFoundationModelArgsDict']]
        """
        基础模型。
        """
elif False:
    EndpointModelReferenceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EndpointModelReferenceArgs:
    def __init__(__self__, *,
                 custom_model_id: Optional[pulumi.Input[builtins.str]] = None,
                 foundation_model: Optional[pulumi.Input['EndpointModelReferenceFoundationModelArgs']] = None):
        """
        :param pulumi.Input[builtins.str] custom_model_id: 定制模型的ID。
        :param pulumi.Input['EndpointModelReferenceFoundationModelArgs'] foundation_model: 基础模型。
        """
        if custom_model_id is not None:
            pulumi.set(__self__, "custom_model_id", custom_model_id)
        if foundation_model is not None:
            pulumi.set(__self__, "foundation_model", foundation_model)

    @property
    @pulumi.getter(name="customModelId")
    def custom_model_id(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        定制模型的ID。
        """
        return pulumi.get(self, "custom_model_id")

    @custom_model_id.setter
    def custom_model_id(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "custom_model_id", value)

    @property
    @pulumi.getter(name="foundationModel")
    def foundation_model(self) -> Optional[pulumi.Input['EndpointModelReferenceFoundationModelArgs']]:
        """
        基础模型。
        """
        return pulumi.get(self, "foundation_model")

    @foundation_model.setter
    def foundation_model(self, value: Optional[pulumi.Input['EndpointModelReferenceFoundationModelArgs']]):
        pulumi.set(self, "foundation_model", value)


if not MYPY:
    class EndpointModelReferenceFoundationModelArgsDict(TypedDict):
        model_version: NotRequired[pulumi.Input[builtins.str]]
        """
        基础模型版本。
        """
        name: NotRequired[pulumi.Input[builtins.str]]
        """
        基础模型名称。请注意模型名称为小写。doubao 1.5 代模型的模型名称格式为"doubao-1-5-**"。
        """
elif False:
    EndpointModelReferenceFoundationModelArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EndpointModelReferenceFoundationModelArgs:
    def __init__(__self__, *,
                 model_version: Optional[pulumi.Input[builtins.str]] = None,
                 name: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] model_version: 基础模型版本。
        :param pulumi.Input[builtins.str] name: 基础模型名称。请注意模型名称为小写。doubao 1.5 代模型的模型名称格式为"doubao-1-5-**"。
        """
        if model_version is not None:
            pulumi.set(__self__, "model_version", model_version)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter(name="modelVersion")
    def model_version(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        基础模型版本。
        """
        return pulumi.get(self, "model_version")

    @model_version.setter
    def model_version(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "model_version", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        基础模型名称。请注意模型名称为小写。doubao 1.5 代模型的模型名称格式为"doubao-1-5-**"。
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "name", value)


if not MYPY:
    class EndpointModerationArgsDict(TypedDict):
        strategy: NotRequired[pulumi.Input[builtins.str]]
        """
        内容安全护栏方案。取值:Default: 默认方案。更低延迟，广泛覆盖内容安全通用需求;Basic：基本方案（公测中）。支持在接口响应中提供命中的风险分类，暂时只包含严重违规和激进行为两类风险。注意：如果是流式接口调用，不建议此方案，会导致吐出的每个分片的长度变长，延时变高。
        """
elif False:
    EndpointModerationArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EndpointModerationArgs:
    def __init__(__self__, *,
                 strategy: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] strategy: 内容安全护栏方案。取值:Default: 默认方案。更低延迟，广泛覆盖内容安全通用需求;Basic：基本方案（公测中）。支持在接口响应中提供命中的风险分类，暂时只包含严重违规和激进行为两类风险。注意：如果是流式接口调用，不建议此方案，会导致吐出的每个分片的长度变长，延时变高。
        """
        if strategy is not None:
            pulumi.set(__self__, "strategy", strategy)

    @property
    @pulumi.getter
    def strategy(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        内容安全护栏方案。取值:Default: 默认方案。更低延迟，广泛覆盖内容安全通用需求;Basic：基本方案（公测中）。支持在接口响应中提供命中的风险分类，暂时只包含严重违规和激进行为两类风险。注意：如果是流式接口调用，不建议此方案，会导致吐出的每个分片的长度变长，延时变高。
        """
        return pulumi.get(self, "strategy")

    @strategy.setter
    def strategy(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "strategy", value)


if not MYPY:
    class EndpointRateLimitArgsDict(TypedDict):
        rpm: NotRequired[pulumi.Input[builtins.int]]
        """
        Requests Per Minute，每分钟请求数。
        """
        tpm: NotRequired[pulumi.Input[builtins.int]]
        """
        Tokens Per Minute，每分钟请求 token 数。
        """
elif False:
    EndpointRateLimitArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EndpointRateLimitArgs:
    def __init__(__self__, *,
                 rpm: Optional[pulumi.Input[builtins.int]] = None,
                 tpm: Optional[pulumi.Input[builtins.int]] = None):
        """
        :param pulumi.Input[builtins.int] rpm: Requests Per Minute，每分钟请求数。
        :param pulumi.Input[builtins.int] tpm: Tokens Per Minute，每分钟请求 token 数。
        """
        if rpm is not None:
            pulumi.set(__self__, "rpm", rpm)
        if tpm is not None:
            pulumi.set(__self__, "tpm", tpm)

    @property
    @pulumi.getter
    def rpm(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        Requests Per Minute，每分钟请求数。
        """
        return pulumi.get(self, "rpm")

    @rpm.setter
    def rpm(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "rpm", value)

    @property
    @pulumi.getter
    def tpm(self) -> Optional[pulumi.Input[builtins.int]]:
        """
        Tokens Per Minute，每分钟请求 token 数。
        """
        return pulumi.get(self, "tpm")

    @tpm.setter
    def tpm(self, value: Optional[pulumi.Input[builtins.int]]):
        pulumi.set(self, "tpm", value)


if not MYPY:
    class EndpointTagArgsDict(TypedDict):
        key: NotRequired[pulumi.Input[builtins.str]]
        """
        标签键。
        """
        value: NotRequired[pulumi.Input[builtins.str]]
        """
        标签值。
        """
elif False:
    EndpointTagArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class EndpointTagArgs:
    def __init__(__self__, *,
                 key: Optional[pulumi.Input[builtins.str]] = None,
                 value: Optional[pulumi.Input[builtins.str]] = None):
        """
        :param pulumi.Input[builtins.str] key: 标签键。
        :param pulumi.Input[builtins.str] value: 标签值。
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签键。
        """
        return pulumi.get(self, "key")

    @key.setter
    def key(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "key", value)

    @property
    @pulumi.getter
    def value(self) -> Optional[pulumi.Input[builtins.str]]:
        """
        标签值。
        """
        return pulumi.get(self, "value")

    @value.setter
    def value(self, value: Optional[pulumi.Input[builtins.str]]):
        pulumi.set(self, "value", value)


