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

__all__ = ['EndpointArgs', 'Endpoint']

@pulumi.input_type
class EndpointArgs:
    def __init__(__self__, *,
                 model_reference: pulumi.Input['EndpointModelReferenceArgs'],
                 name: pulumi.Input[builtins.str],
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 model_unit_id: Optional[pulumi.Input[builtins.str]] = None,
                 moderation: Optional[pulumi.Input['EndpointModerationArgs']] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 rate_limit: Optional[pulumi.Input['EndpointRateLimitArgs']] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['EndpointTagArgs']]]] = None):
        """
        The set of arguments for constructing a Endpoint resource.
        :param pulumi.Input['EndpointModelReferenceArgs'] model_reference: 接入点接入模型。
        :param pulumi.Input[builtins.str] name: 接入点名称。
        :param pulumi.Input[builtins.str] description: 接入点描述。
        :param pulumi.Input[builtins.str] model_unit_id: 模型单元，为空表示后付费；否则预付费。
        :param pulumi.Input['EndpointModerationArgs'] moderation: 内容护栏方案。
        :param pulumi.Input[builtins.str] project_name: 资源所属的项目名称，默认值为default。
        :param pulumi.Input['EndpointRateLimitArgs'] rate_limit: 接入点限流。
        """
        pulumi.set(__self__, "model_reference", model_reference)
        pulumi.set(__self__, "name", name)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if model_unit_id is not None:
            pulumi.set(__self__, "model_unit_id", model_unit_id)
        if moderation is not None:
            pulumi.set(__self__, "moderation", moderation)
        if project_name is not None:
            pulumi.set(__self__, "project_name", project_name)
        if rate_limit is not None:
            pulumi.set(__self__, "rate_limit", rate_limit)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)

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

    @model_reference.setter
    def model_reference(self, value: pulumi.Input['EndpointModelReferenceArgs']):
        pulumi.set(self, "model_reference", value)

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

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

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

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

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

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

    @property
    @pulumi.getter
    def moderation(self) -> Optional[pulumi.Input['EndpointModerationArgs']]:
        """
        内容护栏方案。
        """
        return pulumi.get(self, "moderation")

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

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

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

    @property
    @pulumi.getter(name="rateLimit")
    def rate_limit(self) -> Optional[pulumi.Input['EndpointRateLimitArgs']]:
        """
        接入点限流。
        """
        return pulumi.get(self, "rate_limit")

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

    @property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['EndpointTagArgs']]]]:
        return pulumi.get(self, "tags")

    @tags.setter
    def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['EndpointTagArgs']]]]):
        pulumi.set(self, "tags", value)


@pulumi.input_type
class _EndpointState:
    def __init__(__self__, *,
                 batch_only: Optional[pulumi.Input[builtins.bool]] = None,
                 certificate: Optional[pulumi.Input['EndpointCertificateArgs']] = None,
                 create_time: Optional[pulumi.Input[builtins.str]] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 endpoint_id: Optional[pulumi.Input[builtins.str]] = None,
                 endpoint_model_type: Optional[pulumi.Input[builtins.str]] = None,
                 model_reference: Optional[pulumi.Input['EndpointModelReferenceArgs']] = None,
                 model_unit_id: Optional[pulumi.Input[builtins.str]] = None,
                 moderation: Optional[pulumi.Input['EndpointModerationArgs']] = None,
                 name: Optional[pulumi.Input[builtins.str]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 rate_limit: Optional[pulumi.Input['EndpointRateLimitArgs']] = None,
                 rolling_id: Optional[pulumi.Input[builtins.str]] = None,
                 scale_tier_id: Optional[pulumi.Input[builtins.str]] = None,
                 status: Optional[pulumi.Input[builtins.str]] = None,
                 status_reason: Optional[pulumi.Input[builtins.str]] = None,
                 support_rolling: Optional[pulumi.Input[builtins.bool]] = None,
                 support_scale_tier: Optional[pulumi.Input[builtins.bool]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['EndpointTagArgs']]]] = None,
                 update_time: Optional[pulumi.Input[builtins.str]] = None):
        """
        Input properties used for looking up and filtering Endpoint resources.
        :param pulumi.Input[builtins.bool] batch_only: 是否只支持 BatchChat。如果为true，只能访问 Batch 推理接口，否则只能访问在线推理接口。
        :param pulumi.Input['EndpointCertificateArgs'] certificate: 证书信息。
        :param pulumi.Input[builtins.str] create_time: 接入点创建时间，RFC3339格式。
        :param pulumi.Input[builtins.str] description: 接入点描述。
        :param pulumi.Input[builtins.str] endpoint_id: 推理接入点的ID。
        :param pulumi.Input[builtins.str] endpoint_model_type: 接入点模型类型。取值:FoundationModel为基础模型;CustomModel为定制模型。
        :param pulumi.Input['EndpointModelReferenceArgs'] model_reference: 接入点接入模型。
        :param pulumi.Input[builtins.str] model_unit_id: 模型单元，为空表示后付费；否则预付费。
        :param pulumi.Input['EndpointModerationArgs'] moderation: 内容护栏方案。
        :param pulumi.Input[builtins.str] name: 接入点名称。
        :param pulumi.Input[builtins.str] project_name: 资源所属的项目名称，默认值为default。
        :param pulumi.Input['EndpointRateLimitArgs'] rate_limit: 接入点限流。
        :param pulumi.Input[builtins.str] rolling_id: 接入点切换的Id。
        :param pulumi.Input[builtins.str] scale_tier_id: 如果存在 TPM 保障包，则为 TPM 保障包 ID。
        :param pulumi.Input[builtins.str] status: 接入点状态。
        :param pulumi.Input[builtins.str] status_reason: 状态附加说明信息。
        :param pulumi.Input[builtins.bool] support_rolling: 是否支持接入点切换模型版本。
        :param pulumi.Input[builtins.bool] support_scale_tier: 是否支持TPM保障包。
        :param pulumi.Input[builtins.str] update_time: 接入点更新时间，RFC3339格式。
        """
        if batch_only is not None:
            pulumi.set(__self__, "batch_only", batch_only)
        if certificate is not None:
            pulumi.set(__self__, "certificate", certificate)
        if create_time is not None:
            pulumi.set(__self__, "create_time", create_time)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if endpoint_id is not None:
            pulumi.set(__self__, "endpoint_id", endpoint_id)
        if endpoint_model_type is not None:
            pulumi.set(__self__, "endpoint_model_type", endpoint_model_type)
        if model_reference is not None:
            pulumi.set(__self__, "model_reference", model_reference)
        if model_unit_id is not None:
            pulumi.set(__self__, "model_unit_id", model_unit_id)
        if moderation is not None:
            pulumi.set(__self__, "moderation", moderation)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if project_name is not None:
            pulumi.set(__self__, "project_name", project_name)
        if rate_limit is not None:
            pulumi.set(__self__, "rate_limit", rate_limit)
        if rolling_id is not None:
            pulumi.set(__self__, "rolling_id", rolling_id)
        if scale_tier_id is not None:
            pulumi.set(__self__, "scale_tier_id", scale_tier_id)
        if status is not None:
            pulumi.set(__self__, "status", status)
        if status_reason is not None:
            pulumi.set(__self__, "status_reason", status_reason)
        if support_rolling is not None:
            pulumi.set(__self__, "support_rolling", support_rolling)
        if support_scale_tier is not None:
            pulumi.set(__self__, "support_scale_tier", support_scale_tier)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if update_time is not None:
            pulumi.set(__self__, "update_time", update_time)

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

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

    @property
    @pulumi.getter
    def certificate(self) -> Optional[pulumi.Input['EndpointCertificateArgs']]:
        """
        证书信息。
        """
        return pulumi.get(self, "certificate")

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="modelReference")
    def model_reference(self) -> Optional[pulumi.Input['EndpointModelReferenceArgs']]:
        """
        接入点接入模型。
        """
        return pulumi.get(self, "model_reference")

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

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

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

    @property
    @pulumi.getter
    def moderation(self) -> Optional[pulumi.Input['EndpointModerationArgs']]:
        """
        内容护栏方案。
        """
        return pulumi.get(self, "moderation")

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

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

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

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

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

    @property
    @pulumi.getter(name="rateLimit")
    def rate_limit(self) -> Optional[pulumi.Input['EndpointRateLimitArgs']]:
        """
        接入点限流。
        """
        return pulumi.get(self, "rate_limit")

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter
    def tags(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['EndpointTagArgs']]]]:
        return pulumi.get(self, "tags")

    @tags.setter
    def tags(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['EndpointTagArgs']]]]):
        pulumi.set(self, "tags", value)

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

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


@pulumi.type_token("bytepluscc:ark/endpoint:Endpoint")
class Endpoint(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 model_reference: Optional[pulumi.Input[Union['EndpointModelReferenceArgs', 'EndpointModelReferenceArgsDict']]] = None,
                 model_unit_id: Optional[pulumi.Input[builtins.str]] = None,
                 moderation: Optional[pulumi.Input[Union['EndpointModerationArgs', 'EndpointModerationArgsDict']]] = None,
                 name: Optional[pulumi.Input[builtins.str]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 rate_limit: Optional[pulumi.Input[Union['EndpointRateLimitArgs', 'EndpointRateLimitArgsDict']]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['EndpointTagArgs', 'EndpointTagArgsDict']]]]] = None,
                 __props__=None):
        """
        在使用大语言模型进行推理服务时，推理接入点（Endpoint）是模型调用的关键入口。开发者只需通过指定的 ID 即可向大模型发起 API / SDK 推理请求，实现快速接入与灵活调用。系统提供统一的 API 调用方式、调用监控、限流策略与安全保障机制，确保推理过程的稳定性与安全性。

        ## Import

        ```sh
        $ pulumi import bytepluscc:ark/endpoint:Endpoint example "endpoint_id"
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[builtins.str] description: 接入点描述。
        :param pulumi.Input[Union['EndpointModelReferenceArgs', 'EndpointModelReferenceArgsDict']] model_reference: 接入点接入模型。
        :param pulumi.Input[builtins.str] model_unit_id: 模型单元，为空表示后付费；否则预付费。
        :param pulumi.Input[Union['EndpointModerationArgs', 'EndpointModerationArgsDict']] moderation: 内容护栏方案。
        :param pulumi.Input[builtins.str] name: 接入点名称。
        :param pulumi.Input[builtins.str] project_name: 资源所属的项目名称，默认值为default。
        :param pulumi.Input[Union['EndpointRateLimitArgs', 'EndpointRateLimitArgsDict']] rate_limit: 接入点限流。
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: EndpointArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        在使用大语言模型进行推理服务时，推理接入点（Endpoint）是模型调用的关键入口。开发者只需通过指定的 ID 即可向大模型发起 API / SDK 推理请求，实现快速接入与灵活调用。系统提供统一的 API 调用方式、调用监控、限流策略与安全保障机制，确保推理过程的稳定性与安全性。

        ## Import

        ```sh
        $ pulumi import bytepluscc:ark/endpoint:Endpoint example "endpoint_id"
        ```

        :param str resource_name: The name of the resource.
        :param EndpointArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(EndpointArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 description: Optional[pulumi.Input[builtins.str]] = None,
                 model_reference: Optional[pulumi.Input[Union['EndpointModelReferenceArgs', 'EndpointModelReferenceArgsDict']]] = None,
                 model_unit_id: Optional[pulumi.Input[builtins.str]] = None,
                 moderation: Optional[pulumi.Input[Union['EndpointModerationArgs', 'EndpointModerationArgsDict']]] = None,
                 name: Optional[pulumi.Input[builtins.str]] = None,
                 project_name: Optional[pulumi.Input[builtins.str]] = None,
                 rate_limit: Optional[pulumi.Input[Union['EndpointRateLimitArgs', 'EndpointRateLimitArgsDict']]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['EndpointTagArgs', 'EndpointTagArgsDict']]]]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = EndpointArgs.__new__(EndpointArgs)

            __props__.__dict__["description"] = description
            if model_reference is None and not opts.urn:
                raise TypeError("Missing required property 'model_reference'")
            __props__.__dict__["model_reference"] = model_reference
            __props__.__dict__["model_unit_id"] = model_unit_id
            __props__.__dict__["moderation"] = moderation
            if name is None and not opts.urn:
                raise TypeError("Missing required property 'name'")
            __props__.__dict__["name"] = name
            __props__.__dict__["project_name"] = project_name
            __props__.__dict__["rate_limit"] = rate_limit
            __props__.__dict__["tags"] = tags
            __props__.__dict__["batch_only"] = None
            __props__.__dict__["certificate"] = None
            __props__.__dict__["create_time"] = None
            __props__.__dict__["endpoint_id"] = None
            __props__.__dict__["endpoint_model_type"] = None
            __props__.__dict__["rolling_id"] = None
            __props__.__dict__["scale_tier_id"] = None
            __props__.__dict__["status"] = None
            __props__.__dict__["status_reason"] = None
            __props__.__dict__["support_rolling"] = None
            __props__.__dict__["support_scale_tier"] = None
            __props__.__dict__["update_time"] = None
        super(Endpoint, __self__).__init__(
            'bytepluscc:ark/endpoint:Endpoint',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            batch_only: Optional[pulumi.Input[builtins.bool]] = None,
            certificate: Optional[pulumi.Input[Union['EndpointCertificateArgs', 'EndpointCertificateArgsDict']]] = None,
            create_time: Optional[pulumi.Input[builtins.str]] = None,
            description: Optional[pulumi.Input[builtins.str]] = None,
            endpoint_id: Optional[pulumi.Input[builtins.str]] = None,
            endpoint_model_type: Optional[pulumi.Input[builtins.str]] = None,
            model_reference: Optional[pulumi.Input[Union['EndpointModelReferenceArgs', 'EndpointModelReferenceArgsDict']]] = None,
            model_unit_id: Optional[pulumi.Input[builtins.str]] = None,
            moderation: Optional[pulumi.Input[Union['EndpointModerationArgs', 'EndpointModerationArgsDict']]] = None,
            name: Optional[pulumi.Input[builtins.str]] = None,
            project_name: Optional[pulumi.Input[builtins.str]] = None,
            rate_limit: Optional[pulumi.Input[Union['EndpointRateLimitArgs', 'EndpointRateLimitArgsDict']]] = None,
            rolling_id: Optional[pulumi.Input[builtins.str]] = None,
            scale_tier_id: Optional[pulumi.Input[builtins.str]] = None,
            status: Optional[pulumi.Input[builtins.str]] = None,
            status_reason: Optional[pulumi.Input[builtins.str]] = None,
            support_rolling: Optional[pulumi.Input[builtins.bool]] = None,
            support_scale_tier: Optional[pulumi.Input[builtins.bool]] = None,
            tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['EndpointTagArgs', 'EndpointTagArgsDict']]]]] = None,
            update_time: Optional[pulumi.Input[builtins.str]] = None) -> 'Endpoint':
        """
        Get an existing Endpoint resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[builtins.bool] batch_only: 是否只支持 BatchChat。如果为true，只能访问 Batch 推理接口，否则只能访问在线推理接口。
        :param pulumi.Input[Union['EndpointCertificateArgs', 'EndpointCertificateArgsDict']] certificate: 证书信息。
        :param pulumi.Input[builtins.str] create_time: 接入点创建时间，RFC3339格式。
        :param pulumi.Input[builtins.str] description: 接入点描述。
        :param pulumi.Input[builtins.str] endpoint_id: 推理接入点的ID。
        :param pulumi.Input[builtins.str] endpoint_model_type: 接入点模型类型。取值:FoundationModel为基础模型;CustomModel为定制模型。
        :param pulumi.Input[Union['EndpointModelReferenceArgs', 'EndpointModelReferenceArgsDict']] model_reference: 接入点接入模型。
        :param pulumi.Input[builtins.str] model_unit_id: 模型单元，为空表示后付费；否则预付费。
        :param pulumi.Input[Union['EndpointModerationArgs', 'EndpointModerationArgsDict']] moderation: 内容护栏方案。
        :param pulumi.Input[builtins.str] name: 接入点名称。
        :param pulumi.Input[builtins.str] project_name: 资源所属的项目名称，默认值为default。
        :param pulumi.Input[Union['EndpointRateLimitArgs', 'EndpointRateLimitArgsDict']] rate_limit: 接入点限流。
        :param pulumi.Input[builtins.str] rolling_id: 接入点切换的Id。
        :param pulumi.Input[builtins.str] scale_tier_id: 如果存在 TPM 保障包，则为 TPM 保障包 ID。
        :param pulumi.Input[builtins.str] status: 接入点状态。
        :param pulumi.Input[builtins.str] status_reason: 状态附加说明信息。
        :param pulumi.Input[builtins.bool] support_rolling: 是否支持接入点切换模型版本。
        :param pulumi.Input[builtins.bool] support_scale_tier: 是否支持TPM保障包。
        :param pulumi.Input[builtins.str] update_time: 接入点更新时间，RFC3339格式。
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _EndpointState.__new__(_EndpointState)

        __props__.__dict__["batch_only"] = batch_only
        __props__.__dict__["certificate"] = certificate
        __props__.__dict__["create_time"] = create_time
        __props__.__dict__["description"] = description
        __props__.__dict__["endpoint_id"] = endpoint_id
        __props__.__dict__["endpoint_model_type"] = endpoint_model_type
        __props__.__dict__["model_reference"] = model_reference
        __props__.__dict__["model_unit_id"] = model_unit_id
        __props__.__dict__["moderation"] = moderation
        __props__.__dict__["name"] = name
        __props__.__dict__["project_name"] = project_name
        __props__.__dict__["rate_limit"] = rate_limit
        __props__.__dict__["rolling_id"] = rolling_id
        __props__.__dict__["scale_tier_id"] = scale_tier_id
        __props__.__dict__["status"] = status
        __props__.__dict__["status_reason"] = status_reason
        __props__.__dict__["support_rolling"] = support_rolling
        __props__.__dict__["support_scale_tier"] = support_scale_tier
        __props__.__dict__["tags"] = tags
        __props__.__dict__["update_time"] = update_time
        return Endpoint(resource_name, opts=opts, __props__=__props__)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter
    def tags(self) -> pulumi.Output[Sequence['outputs.EndpointTag']]:
        return pulumi.get(self, "tags")

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

