import datetime

from google.api import annotations_pb2 as _annotations_pb2
from google.api import field_behavior_pb2 as _field_behavior_pb2
from google.protobuf import empty_pb2 as _empty_pb2
from google.protobuf import timestamp_pb2 as _timestamp_pb2
from tars.auth.v1 import auth_options_pb2 as _auth_options_pb2
from tars.cli.v1 import cli_pb2 as _cli_pb2
from tars.common.v1 import types_pb2 as _types_pb2
from tars.docs.v1 import docs_pb2 as _docs_pb2
from google.protobuf.internal import containers as _containers
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from collections.abc import Iterable as _Iterable, Mapping as _Mapping
from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union

DESCRIPTOR: _descriptor.FileDescriptor

class MCPProfile(_message.Message):
    __slots__ = ("id", "user_id", "customer_id", "project_id", "name", "description", "url", "status", "error_message", "security_policy_type", "security_policy_value", "created_at", "updated_at")
    ID_FIELD_NUMBER: _ClassVar[int]
    USER_ID_FIELD_NUMBER: _ClassVar[int]
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    URL_FIELD_NUMBER: _ClassVar[int]
    STATUS_FIELD_NUMBER: _ClassVar[int]
    ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int]
    SECURITY_POLICY_TYPE_FIELD_NUMBER: _ClassVar[int]
    SECURITY_POLICY_VALUE_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_FIELD_NUMBER: _ClassVar[int]
    UPDATED_AT_FIELD_NUMBER: _ClassVar[int]
    id: str
    user_id: str
    customer_id: str
    project_id: str
    name: str
    description: str
    url: str
    status: str
    error_message: str
    security_policy_type: str
    security_policy_value: str
    created_at: _timestamp_pb2.Timestamp
    updated_at: _timestamp_pb2.Timestamp
    def __init__(self, id: _Optional[str] = ..., user_id: _Optional[str] = ..., customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., url: _Optional[str] = ..., status: _Optional[str] = ..., error_message: _Optional[str] = ..., security_policy_type: _Optional[str] = ..., security_policy_value: _Optional[str] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

class MCPCatalogServer(_message.Message):
    __slots__ = ("id", "name", "description", "url", "icon_url", "categories", "note", "authentication", "requires_auth", "requires_profile", "is_enabled", "created_at", "updated_at")
    ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    URL_FIELD_NUMBER: _ClassVar[int]
    ICON_URL_FIELD_NUMBER: _ClassVar[int]
    CATEGORIES_FIELD_NUMBER: _ClassVar[int]
    NOTE_FIELD_NUMBER: _ClassVar[int]
    AUTHENTICATION_FIELD_NUMBER: _ClassVar[int]
    REQUIRES_AUTH_FIELD_NUMBER: _ClassVar[int]
    REQUIRES_PROFILE_FIELD_NUMBER: _ClassVar[int]
    IS_ENABLED_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_FIELD_NUMBER: _ClassVar[int]
    UPDATED_AT_FIELD_NUMBER: _ClassVar[int]
    id: str
    name: str
    description: str
    url: str
    icon_url: str
    categories: _containers.RepeatedScalarFieldContainer[str]
    note: str
    authentication: str
    requires_auth: bool
    requires_profile: bool
    is_enabled: bool
    created_at: _timestamp_pb2.Timestamp
    updated_at: _timestamp_pb2.Timestamp
    def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., url: _Optional[str] = ..., icon_url: _Optional[str] = ..., categories: _Optional[_Iterable[str]] = ..., note: _Optional[str] = ..., authentication: _Optional[str] = ..., requires_auth: _Optional[bool] = ..., requires_profile: _Optional[bool] = ..., is_enabled: _Optional[bool] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

class CreateMCPProfileRequest(_message.Message):
    __slots__ = ("user_id", "name", "description", "security_policy_type", "security_policy_value", "customer_id", "project_id")
    USER_ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    SECURITY_POLICY_TYPE_FIELD_NUMBER: _ClassVar[int]
    SECURITY_POLICY_VALUE_FIELD_NUMBER: _ClassVar[int]
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    user_id: str
    name: str
    description: str
    security_policy_type: str
    security_policy_value: str
    customer_id: str
    project_id: str
    def __init__(self, user_id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., security_policy_type: _Optional[str] = ..., security_policy_value: _Optional[str] = ..., customer_id: _Optional[str] = ..., project_id: _Optional[str] = ...) -> None: ...

class GetMCPProfileRequest(_message.Message):
    __slots__ = ("user_id", "profile_id", "customer_id", "project_id")
    USER_ID_FIELD_NUMBER: _ClassVar[int]
    PROFILE_ID_FIELD_NUMBER: _ClassVar[int]
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    user_id: str
    profile_id: str
    customer_id: str
    project_id: str
    def __init__(self, user_id: _Optional[str] = ..., profile_id: _Optional[str] = ..., customer_id: _Optional[str] = ..., project_id: _Optional[str] = ...) -> None: ...

class ListMCPProfilesRequest(_message.Message):
    __slots__ = ("user_id", "page", "customer_id", "project_id")
    USER_ID_FIELD_NUMBER: _ClassVar[int]
    PAGE_FIELD_NUMBER: _ClassVar[int]
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    user_id: str
    page: _types_pb2.PageRequest
    customer_id: str
    project_id: str
    def __init__(self, user_id: _Optional[str] = ..., page: _Optional[_Union[_types_pb2.PageRequest, _Mapping]] = ..., customer_id: _Optional[str] = ..., project_id: _Optional[str] = ...) -> None: ...

class ListMCPProfilesResponse(_message.Message):
    __slots__ = ("profiles", "page")
    PROFILES_FIELD_NUMBER: _ClassVar[int]
    PAGE_FIELD_NUMBER: _ClassVar[int]
    profiles: _containers.RepeatedCompositeFieldContainer[MCPProfile]
    page: _types_pb2.PageResponse
    def __init__(self, profiles: _Optional[_Iterable[_Union[MCPProfile, _Mapping]]] = ..., page: _Optional[_Union[_types_pb2.PageResponse, _Mapping]] = ...) -> None: ...

class UpdateMCPProfileRequest(_message.Message):
    __slots__ = ("user_id", "profile_id", "name", "description", "security_policy_type", "security_policy_value", "customer_id", "project_id")
    USER_ID_FIELD_NUMBER: _ClassVar[int]
    PROFILE_ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    SECURITY_POLICY_TYPE_FIELD_NUMBER: _ClassVar[int]
    SECURITY_POLICY_VALUE_FIELD_NUMBER: _ClassVar[int]
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    user_id: str
    profile_id: str
    name: str
    description: str
    security_policy_type: str
    security_policy_value: str
    customer_id: str
    project_id: str
    def __init__(self, user_id: _Optional[str] = ..., profile_id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., security_policy_type: _Optional[str] = ..., security_policy_value: _Optional[str] = ..., customer_id: _Optional[str] = ..., project_id: _Optional[str] = ...) -> None: ...

class DeleteMCPProfileRequest(_message.Message):
    __slots__ = ("user_id", "profile_id", "customer_id", "project_id")
    USER_ID_FIELD_NUMBER: _ClassVar[int]
    PROFILE_ID_FIELD_NUMBER: _ClassVar[int]
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    user_id: str
    profile_id: str
    customer_id: str
    project_id: str
    def __init__(self, user_id: _Optional[str] = ..., profile_id: _Optional[str] = ..., customer_id: _Optional[str] = ..., project_id: _Optional[str] = ...) -> None: ...

class UpsertCatalogServerRequest(_message.Message):
    __slots__ = ("id", "name", "description", "url", "icon_url", "categories", "note", "authentication", "requires_auth", "requires_profile")
    ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    URL_FIELD_NUMBER: _ClassVar[int]
    ICON_URL_FIELD_NUMBER: _ClassVar[int]
    CATEGORIES_FIELD_NUMBER: _ClassVar[int]
    NOTE_FIELD_NUMBER: _ClassVar[int]
    AUTHENTICATION_FIELD_NUMBER: _ClassVar[int]
    REQUIRES_AUTH_FIELD_NUMBER: _ClassVar[int]
    REQUIRES_PROFILE_FIELD_NUMBER: _ClassVar[int]
    id: str
    name: str
    description: str
    url: str
    icon_url: str
    categories: _containers.RepeatedScalarFieldContainer[str]
    note: str
    authentication: str
    requires_auth: bool
    requires_profile: bool
    def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., url: _Optional[str] = ..., icon_url: _Optional[str] = ..., categories: _Optional[_Iterable[str]] = ..., note: _Optional[str] = ..., authentication: _Optional[str] = ..., requires_auth: _Optional[bool] = ..., requires_profile: _Optional[bool] = ...) -> None: ...

class GetCatalogServerRequest(_message.Message):
    __slots__ = ("id",)
    ID_FIELD_NUMBER: _ClassVar[int]
    id: str
    def __init__(self, id: _Optional[str] = ...) -> None: ...

class ListCatalogServersRequest(_message.Message):
    __slots__ = ("include_disabled", "page")
    INCLUDE_DISABLED_FIELD_NUMBER: _ClassVar[int]
    PAGE_FIELD_NUMBER: _ClassVar[int]
    include_disabled: bool
    page: _types_pb2.PageRequest
    def __init__(self, include_disabled: _Optional[bool] = ..., page: _Optional[_Union[_types_pb2.PageRequest, _Mapping]] = ...) -> None: ...

class ListCatalogServersResponse(_message.Message):
    __slots__ = ("servers", "page")
    SERVERS_FIELD_NUMBER: _ClassVar[int]
    PAGE_FIELD_NUMBER: _ClassVar[int]
    servers: _containers.RepeatedCompositeFieldContainer[MCPCatalogServer]
    page: _types_pb2.PageResponse
    def __init__(self, servers: _Optional[_Iterable[_Union[MCPCatalogServer, _Mapping]]] = ..., page: _Optional[_Union[_types_pb2.PageResponse, _Mapping]] = ...) -> None: ...

class DeleteCatalogServerRequest(_message.Message):
    __slots__ = ("id",)
    ID_FIELD_NUMBER: _ClassVar[int]
    id: str
    def __init__(self, id: _Optional[str] = ...) -> None: ...

class SetCatalogServerEnabledRequest(_message.Message):
    __slots__ = ("id", "enabled")
    ID_FIELD_NUMBER: _ClassVar[int]
    ENABLED_FIELD_NUMBER: _ClassVar[int]
    id: str
    enabled: bool
    def __init__(self, id: _Optional[str] = ..., enabled: _Optional[bool] = ...) -> None: ...
