import datetime

from buf.validate import validate_pb2 as _validate_pb2
from google.api import annotations_pb2 as _annotations_pb2
from google.protobuf import timestamp_pb2 as _timestamp_pb2
from tars.auth.v1 import auth_options_pb2 as _auth_options_pb2
from tars.docs.v1 import docs_pb2 as _docs_pb2
from google.protobuf.internal import containers as _containers
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
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 ServiceAccountStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    SERVICE_ACCOUNT_STATUS_UNSPECIFIED: _ClassVar[ServiceAccountStatus]
    SERVICE_ACCOUNT_STATUS_ACTIVE: _ClassVar[ServiceAccountStatus]
    SERVICE_ACCOUNT_STATUS_REVOKED: _ClassVar[ServiceAccountStatus]
    SERVICE_ACCOUNT_STATUS_EXPIRED: _ClassVar[ServiceAccountStatus]

class UserTokenStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
    __slots__ = ()
    USER_TOKEN_STATUS_UNSPECIFIED: _ClassVar[UserTokenStatus]
    USER_TOKEN_STATUS_ACTIVE: _ClassVar[UserTokenStatus]
    USER_TOKEN_STATUS_REVOKED: _ClassVar[UserTokenStatus]
    USER_TOKEN_STATUS_EXPIRED: _ClassVar[UserTokenStatus]
SERVICE_ACCOUNT_STATUS_UNSPECIFIED: ServiceAccountStatus
SERVICE_ACCOUNT_STATUS_ACTIVE: ServiceAccountStatus
SERVICE_ACCOUNT_STATUS_REVOKED: ServiceAccountStatus
SERVICE_ACCOUNT_STATUS_EXPIRED: ServiceAccountStatus
USER_TOKEN_STATUS_UNSPECIFIED: UserTokenStatus
USER_TOKEN_STATUS_ACTIVE: UserTokenStatus
USER_TOKEN_STATUS_REVOKED: UserTokenStatus
USER_TOKEN_STATUS_EXPIRED: UserTokenStatus

class PingRequest(_message.Message):
    __slots__ = ()
    def __init__(self) -> None: ...

class PingResponse(_message.Message):
    __slots__ = ("message", "timestamp")
    MESSAGE_FIELD_NUMBER: _ClassVar[int]
    TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
    message: str
    timestamp: _timestamp_pb2.Timestamp
    def __init__(self, message: _Optional[str] = ..., timestamp: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

class CreateWorkspaceRequest(_message.Message):
    __slots__ = ("customer_id", "workspace_id", "name", "description", "labels", "project_id")
    class LabelsEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    WORKSPACE_ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    LABELS_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    workspace_id: str
    name: str
    description: str
    labels: _containers.ScalarMap[str, str]
    project_id: str
    def __init__(self, customer_id: _Optional[str] = ..., workspace_id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., labels: _Optional[_Mapping[str, str]] = ..., project_id: _Optional[str] = ...) -> None: ...

class CreateWorkspaceResponse(_message.Message):
    __slots__ = ("workspace",)
    WORKSPACE_FIELD_NUMBER: _ClassVar[int]
    workspace: Workspace
    def __init__(self, workspace: _Optional[_Union[Workspace, _Mapping]] = ...) -> None: ...

class ListWorkspacesRequest(_message.Message):
    __slots__ = ("customer_id", "page_size", "page_token")
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PAGE_SIZE_FIELD_NUMBER: _ClassVar[int]
    PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    page_size: int
    page_token: str
    def __init__(self, customer_id: _Optional[str] = ..., page_size: _Optional[int] = ..., page_token: _Optional[str] = ...) -> None: ...

class ListWorkspacesResponse(_message.Message):
    __slots__ = ("workspaces", "next_page_token")
    WORKSPACES_FIELD_NUMBER: _ClassVar[int]
    NEXT_PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int]
    workspaces: _containers.RepeatedCompositeFieldContainer[Workspace]
    next_page_token: str
    def __init__(self, workspaces: _Optional[_Iterable[_Union[Workspace, _Mapping]]] = ..., next_page_token: _Optional[str] = ...) -> None: ...

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

class GetWorkspaceResponse(_message.Message):
    __slots__ = ("workspace",)
    WORKSPACE_FIELD_NUMBER: _ClassVar[int]
    workspace: Workspace
    def __init__(self, workspace: _Optional[_Union[Workspace, _Mapping]] = ...) -> None: ...

class UpdateWorkspaceRequest(_message.Message):
    __slots__ = ("id", "name", "description", "labels")
    class LabelsEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    LABELS_FIELD_NUMBER: _ClassVar[int]
    id: str
    name: str
    description: str
    labels: _containers.ScalarMap[str, str]
    def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., labels: _Optional[_Mapping[str, str]] = ...) -> None: ...

class UpdateWorkspaceResponse(_message.Message):
    __slots__ = ("workspace",)
    WORKSPACE_FIELD_NUMBER: _ClassVar[int]
    workspace: Workspace
    def __init__(self, workspace: _Optional[_Union[Workspace, _Mapping]] = ...) -> None: ...

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

class SetWorkspaceProjectResponse(_message.Message):
    __slots__ = ("workspace",)
    WORKSPACE_FIELD_NUMBER: _ClassVar[int]
    workspace: Workspace
    def __init__(self, workspace: _Optional[_Union[Workspace, _Mapping]] = ...) -> None: ...

class SetWorkspaceURLRequest(_message.Message):
    __slots__ = ("id", "url", "trigger_update")
    ID_FIELD_NUMBER: _ClassVar[int]
    URL_FIELD_NUMBER: _ClassVar[int]
    TRIGGER_UPDATE_FIELD_NUMBER: _ClassVar[int]
    id: str
    url: str
    trigger_update: bool
    def __init__(self, id: _Optional[str] = ..., url: _Optional[str] = ..., trigger_update: _Optional[bool] = ...) -> None: ...

class SetWorkspaceURLResponse(_message.Message):
    __slots__ = ("workspace",)
    WORKSPACE_FIELD_NUMBER: _ClassVar[int]
    workspace: Workspace
    def __init__(self, workspace: _Optional[_Union[Workspace, _Mapping]] = ...) -> None: ...

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

class DeleteWorkspaceResponse(_message.Message):
    __slots__ = ("success", "deleted_at")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    DELETED_AT_FIELD_NUMBER: _ClassVar[int]
    success: bool
    deleted_at: _timestamp_pb2.Timestamp
    def __init__(self, success: _Optional[bool] = ..., deleted_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

class Workspace(_message.Message):
    __slots__ = ("id", "customer_id", "workspace_id", "name", "description", "labels", "created_at", "updated_at", "deleted_at", "project_id")
    class LabelsEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    ID_FIELD_NUMBER: _ClassVar[int]
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    WORKSPACE_ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    LABELS_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_FIELD_NUMBER: _ClassVar[int]
    UPDATED_AT_FIELD_NUMBER: _ClassVar[int]
    DELETED_AT_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    id: str
    customer_id: str
    workspace_id: str
    name: str
    description: str
    labels: _containers.ScalarMap[str, str]
    created_at: _timestamp_pb2.Timestamp
    updated_at: _timestamp_pb2.Timestamp
    deleted_at: _timestamp_pb2.Timestamp
    project_id: str
    def __init__(self, id: _Optional[str] = ..., customer_id: _Optional[str] = ..., workspace_id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., labels: _Optional[_Mapping[str, str]] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., deleted_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., project_id: _Optional[str] = ...) -> None: ...

class CreateServiceAccountRequest(_message.Message):
    __slots__ = ("customer_id", "workspace_id", "validity_days", "api_uri", "serve_url", "issuer", "audience", "jwks_uri", "telemetry_endpoint", "telemetry_protocol", "telemetry_insecure", "telemetry_timeout", "telemetry_headers", "scopes", "router_url", "router_key", "internal_api_key", "telemetry_local_vars")
    class TelemetryHeadersEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    class TelemetryLocalVarsEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    WORKSPACE_ID_FIELD_NUMBER: _ClassVar[int]
    VALIDITY_DAYS_FIELD_NUMBER: _ClassVar[int]
    API_URI_FIELD_NUMBER: _ClassVar[int]
    SERVE_URL_FIELD_NUMBER: _ClassVar[int]
    ISSUER_FIELD_NUMBER: _ClassVar[int]
    AUDIENCE_FIELD_NUMBER: _ClassVar[int]
    JWKS_URI_FIELD_NUMBER: _ClassVar[int]
    TELEMETRY_ENDPOINT_FIELD_NUMBER: _ClassVar[int]
    TELEMETRY_PROTOCOL_FIELD_NUMBER: _ClassVar[int]
    TELEMETRY_INSECURE_FIELD_NUMBER: _ClassVar[int]
    TELEMETRY_TIMEOUT_FIELD_NUMBER: _ClassVar[int]
    TELEMETRY_HEADERS_FIELD_NUMBER: _ClassVar[int]
    SCOPES_FIELD_NUMBER: _ClassVar[int]
    ROUTER_URL_FIELD_NUMBER: _ClassVar[int]
    ROUTER_KEY_FIELD_NUMBER: _ClassVar[int]
    INTERNAL_API_KEY_FIELD_NUMBER: _ClassVar[int]
    TELEMETRY_LOCAL_VARS_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    workspace_id: str
    validity_days: int
    api_uri: str
    serve_url: str
    issuer: str
    audience: str
    jwks_uri: str
    telemetry_endpoint: str
    telemetry_protocol: str
    telemetry_insecure: bool
    telemetry_timeout: str
    telemetry_headers: _containers.ScalarMap[str, str]
    scopes: _containers.RepeatedScalarFieldContainer[str]
    router_url: str
    router_key: str
    internal_api_key: str
    telemetry_local_vars: _containers.ScalarMap[str, str]
    def __init__(self, customer_id: _Optional[str] = ..., workspace_id: _Optional[str] = ..., validity_days: _Optional[int] = ..., api_uri: _Optional[str] = ..., serve_url: _Optional[str] = ..., issuer: _Optional[str] = ..., audience: _Optional[str] = ..., jwks_uri: _Optional[str] = ..., telemetry_endpoint: _Optional[str] = ..., telemetry_protocol: _Optional[str] = ..., telemetry_insecure: _Optional[bool] = ..., telemetry_timeout: _Optional[str] = ..., telemetry_headers: _Optional[_Mapping[str, str]] = ..., scopes: _Optional[_Iterable[str]] = ..., router_url: _Optional[str] = ..., router_key: _Optional[str] = ..., internal_api_key: _Optional[str] = ..., telemetry_local_vars: _Optional[_Mapping[str, str]] = ...) -> None: ...

class CreateServiceAccountResponse(_message.Message):
    __slots__ = ("service_account", "checksum", "checksum_algorithm")
    SERVICE_ACCOUNT_FIELD_NUMBER: _ClassVar[int]
    CHECKSUM_FIELD_NUMBER: _ClassVar[int]
    CHECKSUM_ALGORITHM_FIELD_NUMBER: _ClassVar[int]
    service_account: ServiceAccount
    checksum: str
    checksum_algorithm: str
    def __init__(self, service_account: _Optional[_Union[ServiceAccount, _Mapping]] = ..., checksum: _Optional[str] = ..., checksum_algorithm: _Optional[str] = ...) -> None: ...

class ServiceAccount(_message.Message):
    __slots__ = ("id", "type", "customer_id", "workspace_id", "client_email", "private_key_id", "private_key", "api_uri", "serve_url", "auth_server", "gatekeeper", "data_exports", "scopes", "created_at", "expires_at")
    ID_FIELD_NUMBER: _ClassVar[int]
    TYPE_FIELD_NUMBER: _ClassVar[int]
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    WORKSPACE_ID_FIELD_NUMBER: _ClassVar[int]
    CLIENT_EMAIL_FIELD_NUMBER: _ClassVar[int]
    PRIVATE_KEY_ID_FIELD_NUMBER: _ClassVar[int]
    PRIVATE_KEY_FIELD_NUMBER: _ClassVar[int]
    API_URI_FIELD_NUMBER: _ClassVar[int]
    SERVE_URL_FIELD_NUMBER: _ClassVar[int]
    AUTH_SERVER_FIELD_NUMBER: _ClassVar[int]
    GATEKEEPER_FIELD_NUMBER: _ClassVar[int]
    DATA_EXPORTS_FIELD_NUMBER: _ClassVar[int]
    SCOPES_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_FIELD_NUMBER: _ClassVar[int]
    EXPIRES_AT_FIELD_NUMBER: _ClassVar[int]
    id: str
    type: str
    customer_id: str
    workspace_id: str
    client_email: str
    private_key_id: str
    private_key: str
    api_uri: str
    serve_url: str
    auth_server: AuthServerConfig
    gatekeeper: GatekeeperConfig
    data_exports: DataExportsConfig
    scopes: _containers.RepeatedScalarFieldContainer[str]
    created_at: _timestamp_pb2.Timestamp
    expires_at: _timestamp_pb2.Timestamp
    def __init__(self, id: _Optional[str] = ..., type: _Optional[str] = ..., customer_id: _Optional[str] = ..., workspace_id: _Optional[str] = ..., client_email: _Optional[str] = ..., private_key_id: _Optional[str] = ..., private_key: _Optional[str] = ..., api_uri: _Optional[str] = ..., serve_url: _Optional[str] = ..., auth_server: _Optional[_Union[AuthServerConfig, _Mapping]] = ..., gatekeeper: _Optional[_Union[GatekeeperConfig, _Mapping]] = ..., data_exports: _Optional[_Union[DataExportsConfig, _Mapping]] = ..., scopes: _Optional[_Iterable[str]] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., expires_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

class AuthServerConfig(_message.Message):
    __slots__ = ("issuer", "audience", "jwks_uri", "public_keys")
    ISSUER_FIELD_NUMBER: _ClassVar[int]
    AUDIENCE_FIELD_NUMBER: _ClassVar[int]
    JWKS_URI_FIELD_NUMBER: _ClassVar[int]
    PUBLIC_KEYS_FIELD_NUMBER: _ClassVar[int]
    issuer: str
    audience: str
    jwks_uri: str
    public_keys: _containers.RepeatedCompositeFieldContainer[PublicKey]
    def __init__(self, issuer: _Optional[str] = ..., audience: _Optional[str] = ..., jwks_uri: _Optional[str] = ..., public_keys: _Optional[_Iterable[_Union[PublicKey, _Mapping]]] = ...) -> None: ...

class GatekeeperConfig(_message.Message):
    __slots__ = ("issuer", "audience", "public_keys", "router")
    ISSUER_FIELD_NUMBER: _ClassVar[int]
    AUDIENCE_FIELD_NUMBER: _ClassVar[int]
    PUBLIC_KEYS_FIELD_NUMBER: _ClassVar[int]
    ROUTER_FIELD_NUMBER: _ClassVar[int]
    issuer: str
    audience: str
    public_keys: _containers.RepeatedCompositeFieldContainer[PublicKey]
    router: RouterConfig
    def __init__(self, issuer: _Optional[str] = ..., audience: _Optional[str] = ..., public_keys: _Optional[_Iterable[_Union[PublicKey, _Mapping]]] = ..., router: _Optional[_Union[RouterConfig, _Mapping]] = ...) -> None: ...

class RouterConfig(_message.Message):
    __slots__ = ("url", "key")
    URL_FIELD_NUMBER: _ClassVar[int]
    KEY_FIELD_NUMBER: _ClassVar[int]
    url: str
    key: str
    def __init__(self, url: _Optional[str] = ..., key: _Optional[str] = ...) -> None: ...

class PublicKey(_message.Message):
    __slots__ = ("kid", "alg", "use", "key")
    KID_FIELD_NUMBER: _ClassVar[int]
    ALG_FIELD_NUMBER: _ClassVar[int]
    USE_FIELD_NUMBER: _ClassVar[int]
    KEY_FIELD_NUMBER: _ClassVar[int]
    kid: str
    alg: str
    use: str
    key: str
    def __init__(self, kid: _Optional[str] = ..., alg: _Optional[str] = ..., use: _Optional[str] = ..., key: _Optional[str] = ...) -> None: ...

class DataExportsConfig(_message.Message):
    __slots__ = ("telemetry",)
    TELEMETRY_FIELD_NUMBER: _ClassVar[int]
    telemetry: TelemetryConfig
    def __init__(self, telemetry: _Optional[_Union[TelemetryConfig, _Mapping]] = ...) -> None: ...

class TelemetryConfig(_message.Message):
    __slots__ = ("endpoint", "protocol", "insecure", "timeout", "headers")
    class HeadersEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    ENDPOINT_FIELD_NUMBER: _ClassVar[int]
    PROTOCOL_FIELD_NUMBER: _ClassVar[int]
    INSECURE_FIELD_NUMBER: _ClassVar[int]
    TIMEOUT_FIELD_NUMBER: _ClassVar[int]
    HEADERS_FIELD_NUMBER: _ClassVar[int]
    endpoint: str
    protocol: str
    insecure: bool
    timeout: str
    headers: _containers.ScalarMap[str, str]
    def __init__(self, endpoint: _Optional[str] = ..., protocol: _Optional[str] = ..., insecure: _Optional[bool] = ..., timeout: _Optional[str] = ..., headers: _Optional[_Mapping[str, str]] = ...) -> None: ...

class ListServiceAccountsRequest(_message.Message):
    __slots__ = ("customer_id", "workspace_id", "status", "page_size", "page_token")
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    WORKSPACE_ID_FIELD_NUMBER: _ClassVar[int]
    STATUS_FIELD_NUMBER: _ClassVar[int]
    PAGE_SIZE_FIELD_NUMBER: _ClassVar[int]
    PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    workspace_id: str
    status: ServiceAccountStatus
    page_size: int
    page_token: str
    def __init__(self, customer_id: _Optional[str] = ..., workspace_id: _Optional[str] = ..., status: _Optional[_Union[ServiceAccountStatus, str]] = ..., page_size: _Optional[int] = ..., page_token: _Optional[str] = ...) -> None: ...

class ListServiceAccountsResponse(_message.Message):
    __slots__ = ("service_accounts", "next_page_token")
    SERVICE_ACCOUNTS_FIELD_NUMBER: _ClassVar[int]
    NEXT_PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int]
    service_accounts: _containers.RepeatedCompositeFieldContainer[ServiceAccountInfo]
    next_page_token: str
    def __init__(self, service_accounts: _Optional[_Iterable[_Union[ServiceAccountInfo, _Mapping]]] = ..., next_page_token: _Optional[str] = ...) -> None: ...

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

class GetServiceAccountResponse(_message.Message):
    __slots__ = ("service_account",)
    SERVICE_ACCOUNT_FIELD_NUMBER: _ClassVar[int]
    service_account: ServiceAccountInfo
    def __init__(self, service_account: _Optional[_Union[ServiceAccountInfo, _Mapping]] = ...) -> None: ...

class ServiceAccountInfo(_message.Message):
    __slots__ = ("id", "customer_id", "workspace_id", "email", "status", "created_at", "expires_at", "last_used_at", "public_key_fingerprint", "metadata", "revoked_at")
    class MetadataEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    ID_FIELD_NUMBER: _ClassVar[int]
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    WORKSPACE_ID_FIELD_NUMBER: _ClassVar[int]
    EMAIL_FIELD_NUMBER: _ClassVar[int]
    STATUS_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_FIELD_NUMBER: _ClassVar[int]
    EXPIRES_AT_FIELD_NUMBER: _ClassVar[int]
    LAST_USED_AT_FIELD_NUMBER: _ClassVar[int]
    PUBLIC_KEY_FINGERPRINT_FIELD_NUMBER: _ClassVar[int]
    METADATA_FIELD_NUMBER: _ClassVar[int]
    REVOKED_AT_FIELD_NUMBER: _ClassVar[int]
    id: str
    customer_id: str
    workspace_id: str
    email: str
    status: ServiceAccountStatus
    created_at: _timestamp_pb2.Timestamp
    expires_at: _timestamp_pb2.Timestamp
    last_used_at: _timestamp_pb2.Timestamp
    public_key_fingerprint: str
    metadata: _containers.ScalarMap[str, str]
    revoked_at: _timestamp_pb2.Timestamp
    def __init__(self, id: _Optional[str] = ..., customer_id: _Optional[str] = ..., workspace_id: _Optional[str] = ..., email: _Optional[str] = ..., status: _Optional[_Union[ServiceAccountStatus, str]] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., expires_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., last_used_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., public_key_fingerprint: _Optional[str] = ..., metadata: _Optional[_Mapping[str, str]] = ..., revoked_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

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

class RevokeServiceAccountResponse(_message.Message):
    __slots__ = ("success", "revoked_at")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    REVOKED_AT_FIELD_NUMBER: _ClassVar[int]
    success: bool
    revoked_at: _timestamp_pb2.Timestamp
    def __init__(self, success: _Optional[bool] = ..., revoked_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

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

class RestoreServiceAccountResponse(_message.Message):
    __slots__ = ("success", "service_account")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    SERVICE_ACCOUNT_FIELD_NUMBER: _ClassVar[int]
    success: bool
    service_account: ServiceAccountInfo
    def __init__(self, success: _Optional[bool] = ..., service_account: _Optional[_Union[ServiceAccountInfo, _Mapping]] = ...) -> None: ...

class CreateUserTokenRequest(_message.Message):
    __slots__ = ("customer_id", "workspace_id", "user_id", "role", "organization_unit", "expires_in_days", "scopes", "name", "impersonate", "impersonation_metadata")
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    WORKSPACE_ID_FIELD_NUMBER: _ClassVar[int]
    USER_ID_FIELD_NUMBER: _ClassVar[int]
    ROLE_FIELD_NUMBER: _ClassVar[int]
    ORGANIZATION_UNIT_FIELD_NUMBER: _ClassVar[int]
    EXPIRES_IN_DAYS_FIELD_NUMBER: _ClassVar[int]
    SCOPES_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    IMPERSONATE_FIELD_NUMBER: _ClassVar[int]
    IMPERSONATION_METADATA_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    workspace_id: str
    user_id: str
    role: str
    organization_unit: str
    expires_in_days: int
    scopes: _containers.RepeatedScalarFieldContainer[str]
    name: str
    impersonate: bool
    impersonation_metadata: ImpersonationMetadata
    def __init__(self, customer_id: _Optional[str] = ..., workspace_id: _Optional[str] = ..., user_id: _Optional[str] = ..., role: _Optional[str] = ..., organization_unit: _Optional[str] = ..., expires_in_days: _Optional[int] = ..., scopes: _Optional[_Iterable[str]] = ..., name: _Optional[str] = ..., impersonate: _Optional[bool] = ..., impersonation_metadata: _Optional[_Union[ImpersonationMetadata, _Mapping]] = ...) -> None: ...

class ImpersonationMetadata(_message.Message):
    __slots__ = ("impersonator_key", "reason", "context")
    class ContextEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    IMPERSONATOR_KEY_FIELD_NUMBER: _ClassVar[int]
    REASON_FIELD_NUMBER: _ClassVar[int]
    CONTEXT_FIELD_NUMBER: _ClassVar[int]
    impersonator_key: str
    reason: str
    context: _containers.ScalarMap[str, str]
    def __init__(self, impersonator_key: _Optional[str] = ..., reason: _Optional[str] = ..., context: _Optional[_Mapping[str, str]] = ...) -> None: ...

class CreateUserTokenResponse(_message.Message):
    __slots__ = ("access_token", "token_type", "expires_in", "expires_at", "jti", "key_prefix", "key_hash", "key_address")
    ACCESS_TOKEN_FIELD_NUMBER: _ClassVar[int]
    TOKEN_TYPE_FIELD_NUMBER: _ClassVar[int]
    EXPIRES_IN_FIELD_NUMBER: _ClassVar[int]
    EXPIRES_AT_FIELD_NUMBER: _ClassVar[int]
    JTI_FIELD_NUMBER: _ClassVar[int]
    KEY_PREFIX_FIELD_NUMBER: _ClassVar[int]
    KEY_HASH_FIELD_NUMBER: _ClassVar[int]
    KEY_ADDRESS_FIELD_NUMBER: _ClassVar[int]
    access_token: str
    token_type: str
    expires_in: int
    expires_at: _timestamp_pb2.Timestamp
    jti: str
    key_prefix: str
    key_hash: str
    key_address: str
    def __init__(self, access_token: _Optional[str] = ..., token_type: _Optional[str] = ..., expires_in: _Optional[int] = ..., expires_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., jti: _Optional[str] = ..., key_prefix: _Optional[str] = ..., key_hash: _Optional[str] = ..., key_address: _Optional[str] = ...) -> None: ...

class ListUserTokensRequest(_message.Message):
    __slots__ = ("user_id", "status", "page_size", "page_token")
    USER_ID_FIELD_NUMBER: _ClassVar[int]
    STATUS_FIELD_NUMBER: _ClassVar[int]
    PAGE_SIZE_FIELD_NUMBER: _ClassVar[int]
    PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int]
    user_id: str
    status: UserTokenStatus
    page_size: int
    page_token: str
    def __init__(self, user_id: _Optional[str] = ..., status: _Optional[_Union[UserTokenStatus, str]] = ..., page_size: _Optional[int] = ..., page_token: _Optional[str] = ...) -> None: ...

class ListUserTokensResponse(_message.Message):
    __slots__ = ("tokens", "next_page_token")
    TOKENS_FIELD_NUMBER: _ClassVar[int]
    NEXT_PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int]
    tokens: _containers.RepeatedCompositeFieldContainer[UserTokenInfo]
    next_page_token: str
    def __init__(self, tokens: _Optional[_Iterable[_Union[UserTokenInfo, _Mapping]]] = ..., next_page_token: _Optional[str] = ...) -> None: ...

class GetUserTokenRequest(_message.Message):
    __slots__ = ("jti",)
    JTI_FIELD_NUMBER: _ClassVar[int]
    jti: str
    def __init__(self, jti: _Optional[str] = ...) -> None: ...

class GetUserTokenResponse(_message.Message):
    __slots__ = ("token",)
    TOKEN_FIELD_NUMBER: _ClassVar[int]
    token: UserTokenInfo
    def __init__(self, token: _Optional[_Union[UserTokenInfo, _Mapping]] = ...) -> None: ...

class UserTokenInfo(_message.Message):
    __slots__ = ("jti", "user_id", "role", "organization_unit", "status", "created_at", "expires_at", "last_used_at", "revoked_at", "revoked_reason")
    JTI_FIELD_NUMBER: _ClassVar[int]
    USER_ID_FIELD_NUMBER: _ClassVar[int]
    ROLE_FIELD_NUMBER: _ClassVar[int]
    ORGANIZATION_UNIT_FIELD_NUMBER: _ClassVar[int]
    STATUS_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_FIELD_NUMBER: _ClassVar[int]
    EXPIRES_AT_FIELD_NUMBER: _ClassVar[int]
    LAST_USED_AT_FIELD_NUMBER: _ClassVar[int]
    REVOKED_AT_FIELD_NUMBER: _ClassVar[int]
    REVOKED_REASON_FIELD_NUMBER: _ClassVar[int]
    jti: str
    user_id: str
    role: str
    organization_unit: str
    status: UserTokenStatus
    created_at: _timestamp_pb2.Timestamp
    expires_at: _timestamp_pb2.Timestamp
    last_used_at: _timestamp_pb2.Timestamp
    revoked_at: _timestamp_pb2.Timestamp
    revoked_reason: str
    def __init__(self, jti: _Optional[str] = ..., user_id: _Optional[str] = ..., role: _Optional[str] = ..., organization_unit: _Optional[str] = ..., status: _Optional[_Union[UserTokenStatus, str]] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., expires_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., last_used_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., revoked_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., revoked_reason: _Optional[str] = ...) -> None: ...

class RevokeUserTokenRequest(_message.Message):
    __slots__ = ("jti", "reason")
    JTI_FIELD_NUMBER: _ClassVar[int]
    REASON_FIELD_NUMBER: _ClassVar[int]
    jti: str
    reason: str
    def __init__(self, jti: _Optional[str] = ..., reason: _Optional[str] = ...) -> None: ...

class RevokeUserTokenResponse(_message.Message):
    __slots__ = ("success", "revoked_at")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    REVOKED_AT_FIELD_NUMBER: _ClassVar[int]
    success: bool
    revoked_at: _timestamp_pb2.Timestamp
    def __init__(self, success: _Optional[bool] = ..., revoked_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

class TelemetryForwardingConfig(_message.Message):
    __slots__ = ("id", "user_id", "telemetry_type", "sink_url", "protocol", "auth_type", "auth_value", "api_key_header", "enabled", "last_checked_at", "status", "created_at", "updated_at")
    ID_FIELD_NUMBER: _ClassVar[int]
    USER_ID_FIELD_NUMBER: _ClassVar[int]
    TELEMETRY_TYPE_FIELD_NUMBER: _ClassVar[int]
    SINK_URL_FIELD_NUMBER: _ClassVar[int]
    PROTOCOL_FIELD_NUMBER: _ClassVar[int]
    AUTH_TYPE_FIELD_NUMBER: _ClassVar[int]
    AUTH_VALUE_FIELD_NUMBER: _ClassVar[int]
    API_KEY_HEADER_FIELD_NUMBER: _ClassVar[int]
    ENABLED_FIELD_NUMBER: _ClassVar[int]
    LAST_CHECKED_AT_FIELD_NUMBER: _ClassVar[int]
    STATUS_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_FIELD_NUMBER: _ClassVar[int]
    UPDATED_AT_FIELD_NUMBER: _ClassVar[int]
    id: str
    user_id: str
    telemetry_type: str
    sink_url: str
    protocol: str
    auth_type: str
    auth_value: str
    api_key_header: str
    enabled: bool
    last_checked_at: _timestamp_pb2.Timestamp
    status: str
    created_at: _timestamp_pb2.Timestamp
    updated_at: _timestamp_pb2.Timestamp
    def __init__(self, id: _Optional[str] = ..., user_id: _Optional[str] = ..., telemetry_type: _Optional[str] = ..., sink_url: _Optional[str] = ..., protocol: _Optional[str] = ..., auth_type: _Optional[str] = ..., auth_value: _Optional[str] = ..., api_key_header: _Optional[str] = ..., enabled: _Optional[bool] = ..., last_checked_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., status: _Optional[str] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

class CreateTelemetryConfigRequest(_message.Message):
    __slots__ = ("user_id", "telemetry_type", "sink_url", "protocol", "auth_type", "auth_value", "api_key_header", "enabled")
    USER_ID_FIELD_NUMBER: _ClassVar[int]
    TELEMETRY_TYPE_FIELD_NUMBER: _ClassVar[int]
    SINK_URL_FIELD_NUMBER: _ClassVar[int]
    PROTOCOL_FIELD_NUMBER: _ClassVar[int]
    AUTH_TYPE_FIELD_NUMBER: _ClassVar[int]
    AUTH_VALUE_FIELD_NUMBER: _ClassVar[int]
    API_KEY_HEADER_FIELD_NUMBER: _ClassVar[int]
    ENABLED_FIELD_NUMBER: _ClassVar[int]
    user_id: str
    telemetry_type: str
    sink_url: str
    protocol: str
    auth_type: str
    auth_value: str
    api_key_header: str
    enabled: bool
    def __init__(self, user_id: _Optional[str] = ..., telemetry_type: _Optional[str] = ..., sink_url: _Optional[str] = ..., protocol: _Optional[str] = ..., auth_type: _Optional[str] = ..., auth_value: _Optional[str] = ..., api_key_header: _Optional[str] = ..., enabled: _Optional[bool] = ...) -> None: ...

class CreateTelemetryConfigResponse(_message.Message):
    __slots__ = ("config",)
    CONFIG_FIELD_NUMBER: _ClassVar[int]
    config: TelemetryForwardingConfig
    def __init__(self, config: _Optional[_Union[TelemetryForwardingConfig, _Mapping]] = ...) -> None: ...

class ListTelemetryConfigsRequest(_message.Message):
    __slots__ = ("user_id", "telemetry_type", "enabled")
    USER_ID_FIELD_NUMBER: _ClassVar[int]
    TELEMETRY_TYPE_FIELD_NUMBER: _ClassVar[int]
    ENABLED_FIELD_NUMBER: _ClassVar[int]
    user_id: str
    telemetry_type: str
    enabled: bool
    def __init__(self, user_id: _Optional[str] = ..., telemetry_type: _Optional[str] = ..., enabled: _Optional[bool] = ...) -> None: ...

class ListTelemetryConfigsResponse(_message.Message):
    __slots__ = ("configs", "total")
    CONFIGS_FIELD_NUMBER: _ClassVar[int]
    TOTAL_FIELD_NUMBER: _ClassVar[int]
    configs: _containers.RepeatedCompositeFieldContainer[TelemetryForwardingConfig]
    total: int
    def __init__(self, configs: _Optional[_Iterable[_Union[TelemetryForwardingConfig, _Mapping]]] = ..., total: _Optional[int] = ...) -> None: ...

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

class GetTelemetryConfigResponse(_message.Message):
    __slots__ = ("config",)
    CONFIG_FIELD_NUMBER: _ClassVar[int]
    config: TelemetryForwardingConfig
    def __init__(self, config: _Optional[_Union[TelemetryForwardingConfig, _Mapping]] = ...) -> None: ...

class UpdateTelemetryConfigRequest(_message.Message):
    __slots__ = ("id", "sink_url", "protocol", "auth_type", "auth_value", "api_key_header", "enabled", "status")
    ID_FIELD_NUMBER: _ClassVar[int]
    SINK_URL_FIELD_NUMBER: _ClassVar[int]
    PROTOCOL_FIELD_NUMBER: _ClassVar[int]
    AUTH_TYPE_FIELD_NUMBER: _ClassVar[int]
    AUTH_VALUE_FIELD_NUMBER: _ClassVar[int]
    API_KEY_HEADER_FIELD_NUMBER: _ClassVar[int]
    ENABLED_FIELD_NUMBER: _ClassVar[int]
    STATUS_FIELD_NUMBER: _ClassVar[int]
    id: str
    sink_url: str
    protocol: str
    auth_type: str
    auth_value: str
    api_key_header: str
    enabled: bool
    status: str
    def __init__(self, id: _Optional[str] = ..., sink_url: _Optional[str] = ..., protocol: _Optional[str] = ..., auth_type: _Optional[str] = ..., auth_value: _Optional[str] = ..., api_key_header: _Optional[str] = ..., enabled: _Optional[bool] = ..., status: _Optional[str] = ...) -> None: ...

class UpdateTelemetryConfigResponse(_message.Message):
    __slots__ = ("config",)
    CONFIG_FIELD_NUMBER: _ClassVar[int]
    config: TelemetryForwardingConfig
    def __init__(self, config: _Optional[_Union[TelemetryForwardingConfig, _Mapping]] = ...) -> None: ...

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

class DeleteTelemetryConfigResponse(_message.Message):
    __slots__ = ("success",)
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    success: bool
    def __init__(self, success: _Optional[bool] = ...) -> None: ...

class Customer(_message.Message):
    __slots__ = ("id", "customer_id", "name", "description", "labels", "created_at", "updated_at", "deleted_at")
    class LabelsEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    ID_FIELD_NUMBER: _ClassVar[int]
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    LABELS_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_FIELD_NUMBER: _ClassVar[int]
    UPDATED_AT_FIELD_NUMBER: _ClassVar[int]
    DELETED_AT_FIELD_NUMBER: _ClassVar[int]
    id: str
    customer_id: str
    name: str
    description: str
    labels: _containers.ScalarMap[str, str]
    created_at: _timestamp_pb2.Timestamp
    updated_at: _timestamp_pb2.Timestamp
    deleted_at: _timestamp_pb2.Timestamp
    def __init__(self, id: _Optional[str] = ..., customer_id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., labels: _Optional[_Mapping[str, str]] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., deleted_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

class CreateCustomerRequest(_message.Message):
    __slots__ = ("customer_id", "name", "description", "labels")
    class LabelsEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    LABELS_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    name: str
    description: str
    labels: _containers.ScalarMap[str, str]
    def __init__(self, customer_id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., labels: _Optional[_Mapping[str, str]] = ...) -> None: ...

class CreateCustomerResponse(_message.Message):
    __slots__ = ("customer",)
    CUSTOMER_FIELD_NUMBER: _ClassVar[int]
    customer: Customer
    def __init__(self, customer: _Optional[_Union[Customer, _Mapping]] = ...) -> None: ...

class ListCustomersRequest(_message.Message):
    __slots__ = ("page_size", "page_token")
    PAGE_SIZE_FIELD_NUMBER: _ClassVar[int]
    PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int]
    page_size: int
    page_token: str
    def __init__(self, page_size: _Optional[int] = ..., page_token: _Optional[str] = ...) -> None: ...

class ListCustomersResponse(_message.Message):
    __slots__ = ("customers", "next_page_token")
    CUSTOMERS_FIELD_NUMBER: _ClassVar[int]
    NEXT_PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int]
    customers: _containers.RepeatedCompositeFieldContainer[Customer]
    next_page_token: str
    def __init__(self, customers: _Optional[_Iterable[_Union[Customer, _Mapping]]] = ..., next_page_token: _Optional[str] = ...) -> None: ...

class GetCustomerRequest(_message.Message):
    __slots__ = ("customer_id",)
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    def __init__(self, customer_id: _Optional[str] = ...) -> None: ...

class GetCustomerResponse(_message.Message):
    __slots__ = ("customer",)
    CUSTOMER_FIELD_NUMBER: _ClassVar[int]
    customer: Customer
    def __init__(self, customer: _Optional[_Union[Customer, _Mapping]] = ...) -> None: ...

class UpdateCustomerRequest(_message.Message):
    __slots__ = ("customer_id", "name", "description", "labels")
    class LabelsEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    LABELS_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    name: str
    description: str
    labels: _containers.ScalarMap[str, str]
    def __init__(self, customer_id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., labels: _Optional[_Mapping[str, str]] = ...) -> None: ...

class UpdateCustomerResponse(_message.Message):
    __slots__ = ("customer",)
    CUSTOMER_FIELD_NUMBER: _ClassVar[int]
    customer: Customer
    def __init__(self, customer: _Optional[_Union[Customer, _Mapping]] = ...) -> None: ...

class DeleteCustomerRequest(_message.Message):
    __slots__ = ("customer_id",)
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    def __init__(self, customer_id: _Optional[str] = ...) -> None: ...

class DeleteCustomerResponse(_message.Message):
    __slots__ = ("success", "deleted_at")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    DELETED_AT_FIELD_NUMBER: _ClassVar[int]
    success: bool
    deleted_at: _timestamp_pb2.Timestamp
    def __init__(self, success: _Optional[bool] = ..., deleted_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

class Project(_message.Message):
    __slots__ = ("id", "customer_id", "project_id", "name", "description", "labels", "created_at", "updated_at", "deleted_at")
    class LabelsEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    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]
    LABELS_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_FIELD_NUMBER: _ClassVar[int]
    UPDATED_AT_FIELD_NUMBER: _ClassVar[int]
    DELETED_AT_FIELD_NUMBER: _ClassVar[int]
    id: str
    customer_id: str
    project_id: str
    name: str
    description: str
    labels: _containers.ScalarMap[str, str]
    created_at: _timestamp_pb2.Timestamp
    updated_at: _timestamp_pb2.Timestamp
    deleted_at: _timestamp_pb2.Timestamp
    def __init__(self, id: _Optional[str] = ..., customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., labels: _Optional[_Mapping[str, str]] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., deleted_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

class CreateProjectRequest(_message.Message):
    __slots__ = ("customer_id", "project_id", "name", "description", "labels")
    class LabelsEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    LABELS_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    project_id: str
    name: str
    description: str
    labels: _containers.ScalarMap[str, str]
    def __init__(self, customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., labels: _Optional[_Mapping[str, str]] = ...) -> None: ...

class CreateProjectResponse(_message.Message):
    __slots__ = ("project",)
    PROJECT_FIELD_NUMBER: _ClassVar[int]
    project: Project
    def __init__(self, project: _Optional[_Union[Project, _Mapping]] = ...) -> None: ...

class ListProjectsRequest(_message.Message):
    __slots__ = ("customer_id", "page_size", "page_token")
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PAGE_SIZE_FIELD_NUMBER: _ClassVar[int]
    PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    page_size: int
    page_token: str
    def __init__(self, customer_id: _Optional[str] = ..., page_size: _Optional[int] = ..., page_token: _Optional[str] = ...) -> None: ...

class ListProjectsResponse(_message.Message):
    __slots__ = ("projects", "next_page_token")
    PROJECTS_FIELD_NUMBER: _ClassVar[int]
    NEXT_PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int]
    projects: _containers.RepeatedCompositeFieldContainer[Project]
    next_page_token: str
    def __init__(self, projects: _Optional[_Iterable[_Union[Project, _Mapping]]] = ..., next_page_token: _Optional[str] = ...) -> None: ...

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

class GetProjectResponse(_message.Message):
    __slots__ = ("project",)
    PROJECT_FIELD_NUMBER: _ClassVar[int]
    project: Project
    def __init__(self, project: _Optional[_Union[Project, _Mapping]] = ...) -> None: ...

class UpdateProjectRequest(_message.Message):
    __slots__ = ("customer_id", "project_id", "name", "description", "labels")
    class LabelsEntry(_message.Message):
        __slots__ = ("key", "value")
        KEY_FIELD_NUMBER: _ClassVar[int]
        VALUE_FIELD_NUMBER: _ClassVar[int]
        key: str
        value: str
        def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    NAME_FIELD_NUMBER: _ClassVar[int]
    DESCRIPTION_FIELD_NUMBER: _ClassVar[int]
    LABELS_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    project_id: str
    name: str
    description: str
    labels: _containers.ScalarMap[str, str]
    def __init__(self, customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., labels: _Optional[_Mapping[str, str]] = ...) -> None: ...

class UpdateProjectResponse(_message.Message):
    __slots__ = ("project",)
    PROJECT_FIELD_NUMBER: _ClassVar[int]
    project: Project
    def __init__(self, project: _Optional[_Union[Project, _Mapping]] = ...) -> None: ...

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

class DeleteProjectResponse(_message.Message):
    __slots__ = ("success", "deleted_at")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    DELETED_AT_FIELD_NUMBER: _ClassVar[int]
    success: bool
    deleted_at: _timestamp_pb2.Timestamp
    def __init__(self, success: _Optional[bool] = ..., deleted_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

class ProjectMember(_message.Message):
    __slots__ = ("id", "customer_id", "project_id", "user_id", "role", "created_at", "updated_at")
    ID_FIELD_NUMBER: _ClassVar[int]
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    USER_ID_FIELD_NUMBER: _ClassVar[int]
    ROLE_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_FIELD_NUMBER: _ClassVar[int]
    UPDATED_AT_FIELD_NUMBER: _ClassVar[int]
    id: str
    customer_id: str
    project_id: str
    user_id: str
    role: str
    created_at: _timestamp_pb2.Timestamp
    updated_at: _timestamp_pb2.Timestamp
    def __init__(self, id: _Optional[str] = ..., customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., user_id: _Optional[str] = ..., role: _Optional[str] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

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

class AddProjectMemberResponse(_message.Message):
    __slots__ = ("member",)
    MEMBER_FIELD_NUMBER: _ClassVar[int]
    member: ProjectMember
    def __init__(self, member: _Optional[_Union[ProjectMember, _Mapping]] = ...) -> None: ...

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

class ListProjectMembersResponse(_message.Message):
    __slots__ = ("members",)
    MEMBERS_FIELD_NUMBER: _ClassVar[int]
    members: _containers.RepeatedCompositeFieldContainer[ProjectMember]
    def __init__(self, members: _Optional[_Iterable[_Union[ProjectMember, _Mapping]]] = ...) -> None: ...

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

class UpdateProjectMemberResponse(_message.Message):
    __slots__ = ("member",)
    MEMBER_FIELD_NUMBER: _ClassVar[int]
    member: ProjectMember
    def __init__(self, member: _Optional[_Union[ProjectMember, _Mapping]] = ...) -> None: ...

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

class RemoveProjectMemberResponse(_message.Message):
    __slots__ = ("success",)
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    success: bool
    def __init__(self, success: _Optional[bool] = ...) -> None: ...

class AIModel(_message.Message):
    __slots__ = ("id", "model", "provider", "mode", "is_enabled", "input_price_per_million", "output_price_per_million", "context_window", "capabilities")
    ID_FIELD_NUMBER: _ClassVar[int]
    MODEL_FIELD_NUMBER: _ClassVar[int]
    PROVIDER_FIELD_NUMBER: _ClassVar[int]
    MODE_FIELD_NUMBER: _ClassVar[int]
    IS_ENABLED_FIELD_NUMBER: _ClassVar[int]
    INPUT_PRICE_PER_MILLION_FIELD_NUMBER: _ClassVar[int]
    OUTPUT_PRICE_PER_MILLION_FIELD_NUMBER: _ClassVar[int]
    CONTEXT_WINDOW_FIELD_NUMBER: _ClassVar[int]
    CAPABILITIES_FIELD_NUMBER: _ClassVar[int]
    id: str
    model: str
    provider: str
    mode: str
    is_enabled: bool
    input_price_per_million: float
    output_price_per_million: float
    context_window: int
    capabilities: _containers.RepeatedScalarFieldContainer[str]
    def __init__(self, id: _Optional[str] = ..., model: _Optional[str] = ..., provider: _Optional[str] = ..., mode: _Optional[str] = ..., is_enabled: _Optional[bool] = ..., input_price_per_million: _Optional[float] = ..., output_price_per_million: _Optional[float] = ..., context_window: _Optional[int] = ..., capabilities: _Optional[_Iterable[str]] = ...) -> None: ...

class ListModelsRequest(_message.Message):
    __slots__ = ("only_enabled",)
    ONLY_ENABLED_FIELD_NUMBER: _ClassVar[int]
    only_enabled: bool
    def __init__(self, only_enabled: _Optional[bool] = ...) -> None: ...

class ListModelsResponse(_message.Message):
    __slots__ = ("models",)
    MODELS_FIELD_NUMBER: _ClassVar[int]
    models: _containers.RepeatedCompositeFieldContainer[AIModel]
    def __init__(self, models: _Optional[_Iterable[_Union[AIModel, _Mapping]]] = ...) -> None: ...

class GetModelRequest(_message.Message):
    __slots__ = ("model_id",)
    MODEL_ID_FIELD_NUMBER: _ClassVar[int]
    model_id: str
    def __init__(self, model_id: _Optional[str] = ...) -> None: ...

class GetModelResponse(_message.Message):
    __slots__ = ("model",)
    MODEL_FIELD_NUMBER: _ClassVar[int]
    model: AIModel
    def __init__(self, model: _Optional[_Union[AIModel, _Mapping]] = ...) -> None: ...

class ProjectModelEntry(_message.Message):
    __slots__ = ("id", "customer_id", "project_id", "model_id", "model", "created_at")
    ID_FIELD_NUMBER: _ClassVar[int]
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    MODEL_ID_FIELD_NUMBER: _ClassVar[int]
    MODEL_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_FIELD_NUMBER: _ClassVar[int]
    id: str
    customer_id: str
    project_id: str
    model_id: str
    model: AIModel
    created_at: _timestamp_pb2.Timestamp
    def __init__(self, id: _Optional[str] = ..., customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., model_id: _Optional[str] = ..., model: _Optional[_Union[AIModel, _Mapping]] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

class AddProjectModelRequest(_message.Message):
    __slots__ = ("customer_id", "project_id", "model_id")
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    MODEL_ID_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    project_id: str
    model_id: str
    def __init__(self, customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., model_id: _Optional[str] = ...) -> None: ...

class AddProjectModelResponse(_message.Message):
    __slots__ = ("entry",)
    ENTRY_FIELD_NUMBER: _ClassVar[int]
    entry: ProjectModelEntry
    def __init__(self, entry: _Optional[_Union[ProjectModelEntry, _Mapping]] = ...) -> None: ...

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

class ListProjectModelsResponse(_message.Message):
    __slots__ = ("entries",)
    ENTRIES_FIELD_NUMBER: _ClassVar[int]
    entries: _containers.RepeatedCompositeFieldContainer[ProjectModelEntry]
    def __init__(self, entries: _Optional[_Iterable[_Union[ProjectModelEntry, _Mapping]]] = ...) -> None: ...

class RemoveProjectModelRequest(_message.Message):
    __slots__ = ("customer_id", "project_id", "model_id")
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    MODEL_ID_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    project_id: str
    model_id: str
    def __init__(self, customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., model_id: _Optional[str] = ...) -> None: ...

class RemoveProjectModelResponse(_message.Message):
    __slots__ = ("success",)
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    success: bool
    def __init__(self, success: _Optional[bool] = ...) -> None: ...

class ProjectProviderEntry(_message.Message):
    __slots__ = ("id", "customer_id", "project_id", "provider_name", "created_at")
    ID_FIELD_NUMBER: _ClassVar[int]
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    PROVIDER_NAME_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_FIELD_NUMBER: _ClassVar[int]
    id: str
    customer_id: str
    project_id: str
    provider_name: str
    created_at: _timestamp_pb2.Timestamp
    def __init__(self, id: _Optional[str] = ..., customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., provider_name: _Optional[str] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

class AddProjectProviderRequest(_message.Message):
    __slots__ = ("customer_id", "project_id", "provider_name")
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    PROVIDER_NAME_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    project_id: str
    provider_name: str
    def __init__(self, customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., provider_name: _Optional[str] = ...) -> None: ...

class AddProjectProviderResponse(_message.Message):
    __slots__ = ("entry",)
    ENTRY_FIELD_NUMBER: _ClassVar[int]
    entry: ProjectProviderEntry
    def __init__(self, entry: _Optional[_Union[ProjectProviderEntry, _Mapping]] = ...) -> None: ...

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

class ListProjectProvidersResponse(_message.Message):
    __slots__ = ("entries",)
    ENTRIES_FIELD_NUMBER: _ClassVar[int]
    entries: _containers.RepeatedCompositeFieldContainer[ProjectProviderEntry]
    def __init__(self, entries: _Optional[_Iterable[_Union[ProjectProviderEntry, _Mapping]]] = ...) -> None: ...

class RemoveProjectProviderRequest(_message.Message):
    __slots__ = ("customer_id", "project_id", "provider_name")
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    PROVIDER_NAME_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    project_id: str
    provider_name: str
    def __init__(self, customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., provider_name: _Optional[str] = ...) -> None: ...

class RemoveProjectProviderResponse(_message.Message):
    __slots__ = ("success",)
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    success: bool
    def __init__(self, success: _Optional[bool] = ...) -> None: ...

class ProjectMcpServerEntry(_message.Message):
    __slots__ = ("id", "customer_id", "project_id", "server_id", "created_at")
    ID_FIELD_NUMBER: _ClassVar[int]
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    SERVER_ID_FIELD_NUMBER: _ClassVar[int]
    CREATED_AT_FIELD_NUMBER: _ClassVar[int]
    id: str
    customer_id: str
    project_id: str
    server_id: str
    created_at: _timestamp_pb2.Timestamp
    def __init__(self, id: _Optional[str] = ..., customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., server_id: _Optional[str] = ..., created_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

class AddProjectMcpServerRequest(_message.Message):
    __slots__ = ("customer_id", "project_id", "server_id")
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    SERVER_ID_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    project_id: str
    server_id: str
    def __init__(self, customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., server_id: _Optional[str] = ...) -> None: ...

class AddProjectMcpServerResponse(_message.Message):
    __slots__ = ("entry",)
    ENTRY_FIELD_NUMBER: _ClassVar[int]
    entry: ProjectMcpServerEntry
    def __init__(self, entry: _Optional[_Union[ProjectMcpServerEntry, _Mapping]] = ...) -> None: ...

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

class ListProjectMcpServersResponse(_message.Message):
    __slots__ = ("entries",)
    ENTRIES_FIELD_NUMBER: _ClassVar[int]
    entries: _containers.RepeatedCompositeFieldContainer[ProjectMcpServerEntry]
    def __init__(self, entries: _Optional[_Iterable[_Union[ProjectMcpServerEntry, _Mapping]]] = ...) -> None: ...

class RemoveProjectMcpServerRequest(_message.Message):
    __slots__ = ("customer_id", "project_id", "server_id")
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    SERVER_ID_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    project_id: str
    server_id: str
    def __init__(self, customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., server_id: _Optional[str] = ...) -> None: ...

class RemoveProjectMcpServerResponse(_message.Message):
    __slots__ = ("success",)
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    success: bool
    def __init__(self, success: _Optional[bool] = ...) -> None: ...

class ProjectSetting(_message.Message):
    __slots__ = ("setting_name", "setting_value", "updated_at")
    SETTING_NAME_FIELD_NUMBER: _ClassVar[int]
    SETTING_VALUE_FIELD_NUMBER: _ClassVar[int]
    UPDATED_AT_FIELD_NUMBER: _ClassVar[int]
    setting_name: str
    setting_value: str
    updated_at: _timestamp_pb2.Timestamp
    def __init__(self, setting_name: _Optional[str] = ..., setting_value: _Optional[str] = ..., updated_at: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...

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

class GetProjectSettingsResponse(_message.Message):
    __slots__ = ("settings",)
    SETTINGS_FIELD_NUMBER: _ClassVar[int]
    settings: _containers.RepeatedCompositeFieldContainer[ProjectSetting]
    def __init__(self, settings: _Optional[_Iterable[_Union[ProjectSetting, _Mapping]]] = ...) -> None: ...

class UpsertProjectSettingRequest(_message.Message):
    __slots__ = ("customer_id", "project_id", "setting_name", "setting_value")
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    SETTING_NAME_FIELD_NUMBER: _ClassVar[int]
    SETTING_VALUE_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    project_id: str
    setting_name: str
    setting_value: str
    def __init__(self, customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., setting_name: _Optional[str] = ..., setting_value: _Optional[str] = ...) -> None: ...

class UpsertProjectSettingResponse(_message.Message):
    __slots__ = ("setting",)
    SETTING_FIELD_NUMBER: _ClassVar[int]
    setting: ProjectSetting
    def __init__(self, setting: _Optional[_Union[ProjectSetting, _Mapping]] = ...) -> None: ...

class DeleteProjectSettingRequest(_message.Message):
    __slots__ = ("customer_id", "project_id", "setting_name")
    CUSTOMER_ID_FIELD_NUMBER: _ClassVar[int]
    PROJECT_ID_FIELD_NUMBER: _ClassVar[int]
    SETTING_NAME_FIELD_NUMBER: _ClassVar[int]
    customer_id: str
    project_id: str
    setting_name: str
    def __init__(self, customer_id: _Optional[str] = ..., project_id: _Optional[str] = ..., setting_name: _Optional[str] = ...) -> None: ...

class DeleteProjectSettingResponse(_message.Message):
    __slots__ = ("success",)
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    success: bool
    def __init__(self, success: _Optional[bool] = ...) -> None: ...
