# 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
from . import outputs

__all__ = [
    'GetEndpointResult',
    'AwaitableGetEndpointResult',
    'get_endpoint',
    'get_endpoint_output',
]

@pulumi.output_type
class GetEndpointResult:
    """
    A collection of values returned by getEndpoint.
    """
    def __init__(__self__, batch_only=None, certificate=None, create_time=None, description=None, endpoint_id=None, endpoint_model_type=None, id=None, model_reference=None, model_unit_id=None, moderation=None, name=None, project_name=None, rate_limit=None, rolling_id=None, scale_tier_id=None, status=None, status_reason=None, support_rolling=None, support_scale_tier=None, tags=None, update_time=None):
        if batch_only and not isinstance(batch_only, bool):
            raise TypeError("Expected argument 'batch_only' to be a bool")
        pulumi.set(__self__, "batch_only", batch_only)
        if certificate and not isinstance(certificate, dict):
            raise TypeError("Expected argument 'certificate' to be a dict")
        pulumi.set(__self__, "certificate", certificate)
        if create_time and not isinstance(create_time, str):
            raise TypeError("Expected argument 'create_time' to be a str")
        pulumi.set(__self__, "create_time", create_time)
        if description and not isinstance(description, str):
            raise TypeError("Expected argument 'description' to be a str")
        pulumi.set(__self__, "description", description)
        if endpoint_id and not isinstance(endpoint_id, str):
            raise TypeError("Expected argument 'endpoint_id' to be a str")
        pulumi.set(__self__, "endpoint_id", endpoint_id)
        if endpoint_model_type and not isinstance(endpoint_model_type, str):
            raise TypeError("Expected argument 'endpoint_model_type' to be a str")
        pulumi.set(__self__, "endpoint_model_type", endpoint_model_type)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if model_reference and not isinstance(model_reference, dict):
            raise TypeError("Expected argument 'model_reference' to be a dict")
        pulumi.set(__self__, "model_reference", model_reference)
        if model_unit_id and not isinstance(model_unit_id, str):
            raise TypeError("Expected argument 'model_unit_id' to be a str")
        pulumi.set(__self__, "model_unit_id", model_unit_id)
        if moderation and not isinstance(moderation, dict):
            raise TypeError("Expected argument 'moderation' to be a dict")
        pulumi.set(__self__, "moderation", moderation)
        if name and not isinstance(name, str):
            raise TypeError("Expected argument 'name' to be a str")
        pulumi.set(__self__, "name", name)
        if project_name and not isinstance(project_name, str):
            raise TypeError("Expected argument 'project_name' to be a str")
        pulumi.set(__self__, "project_name", project_name)
        if rate_limit and not isinstance(rate_limit, dict):
            raise TypeError("Expected argument 'rate_limit' to be a dict")
        pulumi.set(__self__, "rate_limit", rate_limit)
        if rolling_id and not isinstance(rolling_id, str):
            raise TypeError("Expected argument 'rolling_id' to be a str")
        pulumi.set(__self__, "rolling_id", rolling_id)
        if scale_tier_id and not isinstance(scale_tier_id, str):
            raise TypeError("Expected argument 'scale_tier_id' to be a str")
        pulumi.set(__self__, "scale_tier_id", scale_tier_id)
        if status and not isinstance(status, str):
            raise TypeError("Expected argument 'status' to be a str")
        pulumi.set(__self__, "status", status)
        if status_reason and not isinstance(status_reason, str):
            raise TypeError("Expected argument 'status_reason' to be a str")
        pulumi.set(__self__, "status_reason", status_reason)
        if support_rolling and not isinstance(support_rolling, bool):
            raise TypeError("Expected argument 'support_rolling' to be a bool")
        pulumi.set(__self__, "support_rolling", support_rolling)
        if support_scale_tier and not isinstance(support_scale_tier, bool):
            raise TypeError("Expected argument 'support_scale_tier' to be a bool")
        pulumi.set(__self__, "support_scale_tier", support_scale_tier)
        if tags and not isinstance(tags, list):
            raise TypeError("Expected argument 'tags' to be a list")
        pulumi.set(__self__, "tags", tags)
        if update_time and not isinstance(update_time, str):
            raise TypeError("Expected argument 'update_time' to be a str")
        pulumi.set(__self__, "update_time", update_time)

    @property
    @pulumi.getter(name="batchOnly")
    def batch_only(self) -> builtins.bool:
        """
        是否只支持 BatchChat。如果为true，只能访问 Batch 推理接口，否则只能访问在线推理接口。
        """
        return pulumi.get(self, "batch_only")

    @property
    @pulumi.getter
    def certificate(self) -> 'outputs.GetEndpointCertificateResult':
        """
        证书信息。
        """
        return pulumi.get(self, "certificate")

    @property
    @pulumi.getter(name="createTime")
    def create_time(self) -> builtins.str:
        """
        接入点创建时间，RFC3339格式。
        """
        return pulumi.get(self, "create_time")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        接入点描述。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="endpointId")
    def endpoint_id(self) -> builtins.str:
        """
        推理接入点的ID。
        """
        return pulumi.get(self, "endpoint_id")

    @property
    @pulumi.getter(name="endpointModelType")
    def endpoint_model_type(self) -> builtins.str:
        """
        接入点模型类型。取值:FoundationModel为基础模型;CustomModel为定制模型。
        """
        return pulumi.get(self, "endpoint_model_type")

    @property
    @pulumi.getter
    def id(self) -> builtins.str:
        """
        Uniquely identifies the resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="modelReference")
    def model_reference(self) -> 'outputs.GetEndpointModelReferenceResult':
        """
        接入点接入模型。
        """
        return pulumi.get(self, "model_reference")

    @property
    @pulumi.getter(name="modelUnitId")
    def model_unit_id(self) -> builtins.str:
        """
        模型单元，为空表示后付费；否则预付费。
        """
        return pulumi.get(self, "model_unit_id")

    @property
    @pulumi.getter
    def moderation(self) -> 'outputs.GetEndpointModerationResult':
        """
        内容护栏方案。
        """
        return pulumi.get(self, "moderation")

    @property
    @pulumi.getter
    def name(self) -> builtins.str:
        """
        接入点名称。
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="projectName")
    def project_name(self) -> builtins.str:
        """
        资源所属的项目名称，默认值为default。
        """
        return pulumi.get(self, "project_name")

    @property
    @pulumi.getter(name="rateLimit")
    def rate_limit(self) -> 'outputs.GetEndpointRateLimitResult':
        """
        接入点限流。
        """
        return pulumi.get(self, "rate_limit")

    @property
    @pulumi.getter(name="rollingId")
    def rolling_id(self) -> builtins.str:
        """
        接入点切换的Id。
        """
        return pulumi.get(self, "rolling_id")

    @property
    @pulumi.getter(name="scaleTierId")
    def scale_tier_id(self) -> builtins.str:
        """
        如果存在 TPM 保障包，则为 TPM 保障包 ID。
        """
        return pulumi.get(self, "scale_tier_id")

    @property
    @pulumi.getter
    def status(self) -> builtins.str:
        """
        接入点状态。
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter(name="statusReason")
    def status_reason(self) -> builtins.str:
        """
        状态附加说明信息。
        """
        return pulumi.get(self, "status_reason")

    @property
    @pulumi.getter(name="supportRolling")
    def support_rolling(self) -> builtins.bool:
        """
        是否支持接入点切换模型版本。
        """
        return pulumi.get(self, "support_rolling")

    @property
    @pulumi.getter(name="supportScaleTier")
    def support_scale_tier(self) -> builtins.bool:
        """
        是否支持TPM保障包。
        """
        return pulumi.get(self, "support_scale_tier")

    @property
    @pulumi.getter
    def tags(self) -> Sequence['outputs.GetEndpointTagResult']:
        """
        接入点绑定的标签。
        """
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter(name="updateTime")
    def update_time(self) -> builtins.str:
        """
        接入点更新时间，RFC3339格式。
        """
        return pulumi.get(self, "update_time")


class AwaitableGetEndpointResult(GetEndpointResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetEndpointResult(
            batch_only=self.batch_only,
            certificate=self.certificate,
            create_time=self.create_time,
            description=self.description,
            endpoint_id=self.endpoint_id,
            endpoint_model_type=self.endpoint_model_type,
            id=self.id,
            model_reference=self.model_reference,
            model_unit_id=self.model_unit_id,
            moderation=self.moderation,
            name=self.name,
            project_name=self.project_name,
            rate_limit=self.rate_limit,
            rolling_id=self.rolling_id,
            scale_tier_id=self.scale_tier_id,
            status=self.status,
            status_reason=self.status_reason,
            support_rolling=self.support_rolling,
            support_scale_tier=self.support_scale_tier,
            tags=self.tags,
            update_time=self.update_time)


def get_endpoint(id: Optional[builtins.str] = None,
                 opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetEndpointResult:
    """
    Data Source schema for Byteplus::ARK::Endpoint


    :param builtins.str id: Uniquely identifies the resource.
    """
    __args__ = dict()
    __args__['id'] = id
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('bytepluscc:ark/getEndpoint:getEndpoint', __args__, opts=opts, typ=GetEndpointResult).value

    return AwaitableGetEndpointResult(
        batch_only=pulumi.get(__ret__, 'batch_only'),
        certificate=pulumi.get(__ret__, 'certificate'),
        create_time=pulumi.get(__ret__, 'create_time'),
        description=pulumi.get(__ret__, 'description'),
        endpoint_id=pulumi.get(__ret__, 'endpoint_id'),
        endpoint_model_type=pulumi.get(__ret__, 'endpoint_model_type'),
        id=pulumi.get(__ret__, 'id'),
        model_reference=pulumi.get(__ret__, 'model_reference'),
        model_unit_id=pulumi.get(__ret__, 'model_unit_id'),
        moderation=pulumi.get(__ret__, 'moderation'),
        name=pulumi.get(__ret__, 'name'),
        project_name=pulumi.get(__ret__, 'project_name'),
        rate_limit=pulumi.get(__ret__, 'rate_limit'),
        rolling_id=pulumi.get(__ret__, 'rolling_id'),
        scale_tier_id=pulumi.get(__ret__, 'scale_tier_id'),
        status=pulumi.get(__ret__, 'status'),
        status_reason=pulumi.get(__ret__, 'status_reason'),
        support_rolling=pulumi.get(__ret__, 'support_rolling'),
        support_scale_tier=pulumi.get(__ret__, 'support_scale_tier'),
        tags=pulumi.get(__ret__, 'tags'),
        update_time=pulumi.get(__ret__, 'update_time'))
def get_endpoint_output(id: Optional[pulumi.Input[builtins.str]] = None,
                        opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetEndpointResult]:
    """
    Data Source schema for Byteplus::ARK::Endpoint


    :param builtins.str id: Uniquely identifies the resource.
    """
    __args__ = dict()
    __args__['id'] = id
    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke_output('bytepluscc:ark/getEndpoint:getEndpoint', __args__, opts=opts, typ=GetEndpointResult)
    return __ret__.apply(lambda __response__: GetEndpointResult(
        batch_only=pulumi.get(__response__, 'batch_only'),
        certificate=pulumi.get(__response__, 'certificate'),
        create_time=pulumi.get(__response__, 'create_time'),
        description=pulumi.get(__response__, 'description'),
        endpoint_id=pulumi.get(__response__, 'endpoint_id'),
        endpoint_model_type=pulumi.get(__response__, 'endpoint_model_type'),
        id=pulumi.get(__response__, 'id'),
        model_reference=pulumi.get(__response__, 'model_reference'),
        model_unit_id=pulumi.get(__response__, 'model_unit_id'),
        moderation=pulumi.get(__response__, 'moderation'),
        name=pulumi.get(__response__, 'name'),
        project_name=pulumi.get(__response__, 'project_name'),
        rate_limit=pulumi.get(__response__, 'rate_limit'),
        rolling_id=pulumi.get(__response__, 'rolling_id'),
        scale_tier_id=pulumi.get(__response__, 'scale_tier_id'),
        status=pulumi.get(__response__, 'status'),
        status_reason=pulumi.get(__response__, 'status_reason'),
        support_rolling=pulumi.get(__response__, 'support_rolling'),
        support_scale_tier=pulumi.get(__response__, 'support_scale_tier'),
        tags=pulumi.get(__response__, 'tags'),
        update_time=pulumi.get(__response__, 'update_time')))
