// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.10
// 	protoc        (unknown)
// source: tars/admin/v1/admin.proto

package adminv1

import (
	_ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate"
	_ "github.com/tetrateio/agentrouter-go/genapi/api/tars/auth/v1"
	_ "github.com/tetrateio/agentrouter-go/genapi/api/tars/docs/v1"
	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type ServiceAccountStatus int32

const (
	// Status not set / not filtered.
	ServiceAccountStatus_SERVICE_ACCOUNT_STATUS_UNSPECIFIED ServiceAccountStatus = 0
	// Account is usable.
	ServiceAccountStatus_SERVICE_ACCOUNT_STATUS_ACTIVE ServiceAccountStatus = 1
	// Account was manually revoked.
	ServiceAccountStatus_SERVICE_ACCOUNT_STATUS_REVOKED ServiceAccountStatus = 2
	// Account passed its expiry date.
	ServiceAccountStatus_SERVICE_ACCOUNT_STATUS_EXPIRED ServiceAccountStatus = 3
)

// Enum value maps for ServiceAccountStatus.
var (
	ServiceAccountStatus_name = map[int32]string{
		0: "SERVICE_ACCOUNT_STATUS_UNSPECIFIED",
		1: "SERVICE_ACCOUNT_STATUS_ACTIVE",
		2: "SERVICE_ACCOUNT_STATUS_REVOKED",
		3: "SERVICE_ACCOUNT_STATUS_EXPIRED",
	}
	ServiceAccountStatus_value = map[string]int32{
		"SERVICE_ACCOUNT_STATUS_UNSPECIFIED": 0,
		"SERVICE_ACCOUNT_STATUS_ACTIVE":      1,
		"SERVICE_ACCOUNT_STATUS_REVOKED":     2,
		"SERVICE_ACCOUNT_STATUS_EXPIRED":     3,
	}
)

func (x ServiceAccountStatus) Enum() *ServiceAccountStatus {
	p := new(ServiceAccountStatus)
	*p = x
	return p
}

func (x ServiceAccountStatus) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ServiceAccountStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_tars_admin_v1_admin_proto_enumTypes[0].Descriptor()
}

func (ServiceAccountStatus) Type() protoreflect.EnumType {
	return &file_tars_admin_v1_admin_proto_enumTypes[0]
}

func (x ServiceAccountStatus) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ServiceAccountStatus.Descriptor instead.
func (ServiceAccountStatus) EnumDescriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{0}
}

type UserTokenStatus int32

const (
	// Status not set / not filtered.
	UserTokenStatus_USER_TOKEN_STATUS_UNSPECIFIED UserTokenStatus = 0
	// Token is valid and usable.
	UserTokenStatus_USER_TOKEN_STATUS_ACTIVE UserTokenStatus = 1
	// Token was manually revoked.
	UserTokenStatus_USER_TOKEN_STATUS_REVOKED UserTokenStatus = 2
	// Token passed its expiry.
	UserTokenStatus_USER_TOKEN_STATUS_EXPIRED UserTokenStatus = 3
)

// Enum value maps for UserTokenStatus.
var (
	UserTokenStatus_name = map[int32]string{
		0: "USER_TOKEN_STATUS_UNSPECIFIED",
		1: "USER_TOKEN_STATUS_ACTIVE",
		2: "USER_TOKEN_STATUS_REVOKED",
		3: "USER_TOKEN_STATUS_EXPIRED",
	}
	UserTokenStatus_value = map[string]int32{
		"USER_TOKEN_STATUS_UNSPECIFIED": 0,
		"USER_TOKEN_STATUS_ACTIVE":      1,
		"USER_TOKEN_STATUS_REVOKED":     2,
		"USER_TOKEN_STATUS_EXPIRED":     3,
	}
)

func (x UserTokenStatus) Enum() *UserTokenStatus {
	p := new(UserTokenStatus)
	*p = x
	return p
}

func (x UserTokenStatus) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (UserTokenStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_tars_admin_v1_admin_proto_enumTypes[1].Descriptor()
}

func (UserTokenStatus) Type() protoreflect.EnumType {
	return &file_tars_admin_v1_admin_proto_enumTypes[1]
}

func (x UserTokenStatus) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use UserTokenStatus.Descriptor instead.
func (UserTokenStatus) EnumDescriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{1}
}

type PingRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PingRequest) Reset() {
	*x = PingRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PingRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PingRequest) ProtoMessage() {}

func (x *PingRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PingRequest.ProtoReflect.Descriptor instead.
func (*PingRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{0}
}

type PingResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Human-readable status message (e.g. "pong").
	Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
	// Server time when the ping was handled.
	Timestamp     *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PingResponse) Reset() {
	*x = PingResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PingResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PingResponse) ProtoMessage() {}

func (x *PingResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PingResponse.ProtoReflect.Descriptor instead.
func (*PingResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{1}
}

func (x *PingResponse) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *PingResponse) GetTimestamp() *timestamppb.Timestamp {
	if x != nil {
		return x.Timestamp
	}
	return nil
}

type CreateWorkspaceRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Customer (tenant) slug that will own the workspace.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Caller-chosen workspace slug, unique within the customer.
	WorkspaceId string `protobuf:"bytes,2,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"`
	// Optional human-readable display name.
	Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"`
	// Optional free-text description.
	Description *string `protobuf:"bytes,4,opt,name=description,proto3,oneof" json:"description,omitempty"`
	// Optional user-defined key/value labels for organization/filtering.
	Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// Optional project this workspace belongs to. Empty = default project.
	ProjectId     *string `protobuf:"bytes,6,opt,name=project_id,json=projectId,proto3,oneof" json:"project_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateWorkspaceRequest) Reset() {
	*x = CreateWorkspaceRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateWorkspaceRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateWorkspaceRequest) ProtoMessage() {}

func (x *CreateWorkspaceRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateWorkspaceRequest.ProtoReflect.Descriptor instead.
func (*CreateWorkspaceRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{2}
}

func (x *CreateWorkspaceRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *CreateWorkspaceRequest) GetWorkspaceId() string {
	if x != nil {
		return x.WorkspaceId
	}
	return ""
}

func (x *CreateWorkspaceRequest) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *CreateWorkspaceRequest) GetDescription() string {
	if x != nil && x.Description != nil {
		return *x.Description
	}
	return ""
}

func (x *CreateWorkspaceRequest) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

func (x *CreateWorkspaceRequest) GetProjectId() string {
	if x != nil && x.ProjectId != nil {
		return *x.ProjectId
	}
	return ""
}

type CreateWorkspaceResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The newly created workspace.
	Workspace     *Workspace `protobuf:"bytes,1,opt,name=workspace,proto3" json:"workspace,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateWorkspaceResponse) Reset() {
	*x = CreateWorkspaceResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateWorkspaceResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateWorkspaceResponse) ProtoMessage() {}

func (x *CreateWorkspaceResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateWorkspaceResponse.ProtoReflect.Descriptor instead.
func (*CreateWorkspaceResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{3}
}

func (x *CreateWorkspaceResponse) GetWorkspace() *Workspace {
	if x != nil {
		return x.Workspace
	}
	return nil
}

type ListWorkspacesRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Optional filter: only return workspaces owned by this customer slug.
	CustomerId *string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3,oneof" json:"customer_id,omitempty"`
	// Max workspaces to return per page (0 = server default).
	PageSize *int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3,oneof" json:"page_size,omitempty"`
	// Opaque cursor from a previous response's next_page_token.
	PageToken     *string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3,oneof" json:"page_token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListWorkspacesRequest) Reset() {
	*x = ListWorkspacesRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListWorkspacesRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListWorkspacesRequest) ProtoMessage() {}

func (x *ListWorkspacesRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[4]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListWorkspacesRequest.ProtoReflect.Descriptor instead.
func (*ListWorkspacesRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{4}
}

func (x *ListWorkspacesRequest) GetCustomerId() string {
	if x != nil && x.CustomerId != nil {
		return *x.CustomerId
	}
	return ""
}

func (x *ListWorkspacesRequest) GetPageSize() int32 {
	if x != nil && x.PageSize != nil {
		return *x.PageSize
	}
	return 0
}

func (x *ListWorkspacesRequest) GetPageToken() string {
	if x != nil && x.PageToken != nil {
		return *x.PageToken
	}
	return ""
}

type ListWorkspacesResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Page of matching workspaces.
	Workspaces []*Workspace `protobuf:"bytes,1,rep,name=workspaces,proto3" json:"workspaces,omitempty"`
	// Cursor for the next page; empty when there are no more results.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListWorkspacesResponse) Reset() {
	*x = ListWorkspacesResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListWorkspacesResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListWorkspacesResponse) ProtoMessage() {}

func (x *ListWorkspacesResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[5]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListWorkspacesResponse.ProtoReflect.Descriptor instead.
func (*ListWorkspacesResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{5}
}

func (x *ListWorkspacesResponse) GetWorkspaces() []*Workspace {
	if x != nil {
		return x.Workspaces
	}
	return nil
}

func (x *ListWorkspacesResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

type GetWorkspaceRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Workspace UUID (the internal `id`, not the customer-chosen workspace_id).
	Id            string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetWorkspaceRequest) Reset() {
	*x = GetWorkspaceRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetWorkspaceRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetWorkspaceRequest) ProtoMessage() {}

func (x *GetWorkspaceRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[6]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetWorkspaceRequest.ProtoReflect.Descriptor instead.
func (*GetWorkspaceRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{6}
}

func (x *GetWorkspaceRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

type GetWorkspaceResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The requested workspace.
	Workspace     *Workspace `protobuf:"bytes,1,opt,name=workspace,proto3" json:"workspace,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetWorkspaceResponse) Reset() {
	*x = GetWorkspaceResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetWorkspaceResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetWorkspaceResponse) ProtoMessage() {}

func (x *GetWorkspaceResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[7]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetWorkspaceResponse.ProtoReflect.Descriptor instead.
func (*GetWorkspaceResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{7}
}

func (x *GetWorkspaceResponse) GetWorkspace() *Workspace {
	if x != nil {
		return x.Workspace
	}
	return nil
}

type UpdateWorkspaceRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Workspace UUID to update.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// New display name; unset leaves the existing value.
	Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"`
	// New description; unset leaves the existing value.
	Description *string `protobuf:"bytes,3,opt,name=description,proto3,oneof" json:"description,omitempty"`
	// Replacement set of labels.
	Labels        map[string]string `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateWorkspaceRequest) Reset() {
	*x = UpdateWorkspaceRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateWorkspaceRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateWorkspaceRequest) ProtoMessage() {}

func (x *UpdateWorkspaceRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[8]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateWorkspaceRequest.ProtoReflect.Descriptor instead.
func (*UpdateWorkspaceRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{8}
}

func (x *UpdateWorkspaceRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *UpdateWorkspaceRequest) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *UpdateWorkspaceRequest) GetDescription() string {
	if x != nil && x.Description != nil {
		return *x.Description
	}
	return ""
}

func (x *UpdateWorkspaceRequest) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

type UpdateWorkspaceResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The updated workspace.
	Workspace     *Workspace `protobuf:"bytes,1,opt,name=workspace,proto3" json:"workspace,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateWorkspaceResponse) Reset() {
	*x = UpdateWorkspaceResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateWorkspaceResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateWorkspaceResponse) ProtoMessage() {}

func (x *UpdateWorkspaceResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[9]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateWorkspaceResponse.ProtoReflect.Descriptor instead.
func (*UpdateWorkspaceResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{9}
}

func (x *UpdateWorkspaceResponse) GetWorkspace() *Workspace {
	if x != nil {
		return x.Workspace
	}
	return nil
}

type SetWorkspaceProjectRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Workspace UUID to reassign.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// project_id to assign. Omit or set to empty string to clear back to the default project (NULL).
	ProjectId     *string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3,oneof" json:"project_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetWorkspaceProjectRequest) Reset() {
	*x = SetWorkspaceProjectRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SetWorkspaceProjectRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SetWorkspaceProjectRequest) ProtoMessage() {}

func (x *SetWorkspaceProjectRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[10]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SetWorkspaceProjectRequest.ProtoReflect.Descriptor instead.
func (*SetWorkspaceProjectRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{10}
}

func (x *SetWorkspaceProjectRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *SetWorkspaceProjectRequest) GetProjectId() string {
	if x != nil && x.ProjectId != nil {
		return *x.ProjectId
	}
	return ""
}

type SetWorkspaceProjectResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The workspace with its updated project assignment.
	Workspace     *Workspace `protobuf:"bytes,1,opt,name=workspace,proto3" json:"workspace,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetWorkspaceProjectResponse) Reset() {
	*x = SetWorkspaceProjectResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SetWorkspaceProjectResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SetWorkspaceProjectResponse) ProtoMessage() {}

func (x *SetWorkspaceProjectResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[11]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SetWorkspaceProjectResponse.ProtoReflect.Descriptor instead.
func (*SetWorkspaceProjectResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{11}
}

func (x *SetWorkspaceProjectResponse) GetWorkspace() *Workspace {
	if x != nil {
		return x.Workspace
	}
	return nil
}

type SetWorkspaceURLRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Workspace UUID whose data-plane URL is being set.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// url is the full https:// URL of the data plane's customer-facing gateway endpoint.
	Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
	// trigger_update fires a PROXY_URL config event to the data plane after persisting the URL.
	TriggerUpdate bool `protobuf:"varint,3,opt,name=trigger_update,json=triggerUpdate,proto3" json:"trigger_update,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetWorkspaceURLRequest) Reset() {
	*x = SetWorkspaceURLRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SetWorkspaceURLRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SetWorkspaceURLRequest) ProtoMessage() {}

func (x *SetWorkspaceURLRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[12]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SetWorkspaceURLRequest.ProtoReflect.Descriptor instead.
func (*SetWorkspaceURLRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{12}
}

func (x *SetWorkspaceURLRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *SetWorkspaceURLRequest) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

func (x *SetWorkspaceURLRequest) GetTriggerUpdate() bool {
	if x != nil {
		return x.TriggerUpdate
	}
	return false
}

type SetWorkspaceURLResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The workspace reflecting the new data-plane URL.
	Workspace     *Workspace `protobuf:"bytes,1,opt,name=workspace,proto3" json:"workspace,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SetWorkspaceURLResponse) Reset() {
	*x = SetWorkspaceURLResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SetWorkspaceURLResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SetWorkspaceURLResponse) ProtoMessage() {}

func (x *SetWorkspaceURLResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[13]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SetWorkspaceURLResponse.ProtoReflect.Descriptor instead.
func (*SetWorkspaceURLResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{13}
}

func (x *SetWorkspaceURLResponse) GetWorkspace() *Workspace {
	if x != nil {
		return x.Workspace
	}
	return nil
}

type DeleteWorkspaceRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Workspace UUID to soft-delete.
	Id            string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeleteWorkspaceRequest) Reset() {
	*x = DeleteWorkspaceRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DeleteWorkspaceRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteWorkspaceRequest) ProtoMessage() {}

func (x *DeleteWorkspaceRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[14]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeleteWorkspaceRequest.ProtoReflect.Descriptor instead.
func (*DeleteWorkspaceRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{14}
}

func (x *DeleteWorkspaceRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

type DeleteWorkspaceResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// True if the workspace was deleted.
	Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	// When the soft delete took effect.
	DeletedAt     *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeleteWorkspaceResponse) Reset() {
	*x = DeleteWorkspaceResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DeleteWorkspaceResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteWorkspaceResponse) ProtoMessage() {}

func (x *DeleteWorkspaceResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[15]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeleteWorkspaceResponse.ProtoReflect.Descriptor instead.
func (*DeleteWorkspaceResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{15}
}

func (x *DeleteWorkspaceResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *DeleteWorkspaceResponse) GetDeletedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.DeletedAt
	}
	return nil
}

type Workspace struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Server-generated workspace UUID (primary key).
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,2,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Customer-chosen workspace slug, unique within the customer.
	WorkspaceId string `protobuf:"bytes,3,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"`
	// Human-readable display name.
	Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"`
	// Free-text description.
	Description *string `protobuf:"bytes,5,opt,name=description,proto3,oneof" json:"description,omitempty"`
	// User-defined key/value labels.
	Labels map[string]string `protobuf:"bytes,6,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// Creation timestamp.
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Last-modification timestamp.
	UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	// Soft-delete timestamp; unset while the workspace is active.
	DeletedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=deleted_at,json=deletedAt,proto3,oneof" json:"deleted_at,omitempty"`
	// Project this workspace belongs to; empty means the default project.
	ProjectId     string `protobuf:"bytes,10,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Workspace) Reset() {
	*x = Workspace{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Workspace) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Workspace) ProtoMessage() {}

func (x *Workspace) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[16]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Workspace.ProtoReflect.Descriptor instead.
func (*Workspace) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{16}
}

func (x *Workspace) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Workspace) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *Workspace) GetWorkspaceId() string {
	if x != nil {
		return x.WorkspaceId
	}
	return ""
}

func (x *Workspace) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *Workspace) GetDescription() string {
	if x != nil && x.Description != nil {
		return *x.Description
	}
	return ""
}

func (x *Workspace) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

func (x *Workspace) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *Workspace) GetUpdatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdatedAt
	}
	return nil
}

func (x *Workspace) GetDeletedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.DeletedAt
	}
	return nil
}

func (x *Workspace) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

type CreateServiceAccountRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Customer slug the service account belongs to.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Workspace slug the service account is scoped to.
	WorkspaceId string `protobuf:"bytes,2,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"`
	// How many days the generated credential stays valid (default applied if unset).
	ValidityDays *int64 `protobuf:"varint,3,opt,name=validity_days,json=validityDays,proto3,oneof" json:"validity_days,omitempty"`
	// Management-plane API base URI embedded in the service account.
	ApiUri *string `protobuf:"bytes,4,opt,name=api_uri,json=apiUri,proto3,oneof" json:"api_uri,omitempty"`
	// Customer-facing data-plane serve URL embedded in the service account.
	ServeUrl *string `protobuf:"bytes,18,opt,name=serve_url,json=serveUrl,proto3,oneof" json:"serve_url,omitempty"`
	// JWT issuer (iss) to embed in the auth-server config.
	Issuer *string `protobuf:"bytes,5,opt,name=issuer,proto3,oneof" json:"issuer,omitempty"`
	// JWT audience (aud) to embed in the auth-server config.
	Audience *string `protobuf:"bytes,6,opt,name=audience,proto3,oneof" json:"audience,omitempty"`
	// JWKS endpoint URI for verifying tokens issued to this account.
	JwksUri *string `protobuf:"bytes,7,opt,name=jwks_uri,json=jwksUri,proto3,oneof" json:"jwks_uri,omitempty"`
	// OTLP exporter endpoint for telemetry export.
	TelemetryEndpoint *string `protobuf:"bytes,8,opt,name=telemetry_endpoint,json=telemetryEndpoint,proto3,oneof" json:"telemetry_endpoint,omitempty"`
	// OTLP wire protocol: grpc, http/protobuf, or http/json.
	TelemetryProtocol *string `protobuf:"bytes,9,opt,name=telemetry_protocol,json=telemetryProtocol,proto3,oneof" json:"telemetry_protocol,omitempty"`
	// If true, skip TLS verification for the telemetry endpoint.
	TelemetryInsecure *bool `protobuf:"varint,10,opt,name=telemetry_insecure,json=telemetryInsecure,proto3,oneof" json:"telemetry_insecure,omitempty"`
	// OTLP export timeout as a Go duration (e.g. "10s").
	TelemetryTimeout *string `protobuf:"bytes,11,opt,name=telemetry_timeout,json=telemetryTimeout,proto3,oneof" json:"telemetry_timeout,omitempty"`
	// Extra headers attached to telemetry exports (e.g. auth tokens).
	TelemetryHeaders map[string]string `protobuf:"bytes,12,rep,name=telemetry_headers,json=telemetryHeaders,proto3" json:"telemetry_headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// OAuth-style scopes granted to the service account.
	Scopes []string `protobuf:"bytes,13,rep,name=scopes,proto3" json:"scopes,omitempty"`
	// Optional: Router configuration to include in generated service account.
	// When providing router_key this may be either a plaintext key (the server will
	// store it in the configured secret manager and replace with a secret ref) or
	// a secret reference (e.g. noop://..., sm://..., arn:aws:...).
	RouterUrl *string `protobuf:"bytes,14,opt,name=router_url,json=routerUrl,proto3,oneof" json:"router_url,omitempty"`
	RouterKey *string `protobuf:"bytes,15,opt,name=router_key,json=routerKey,proto3,oneof" json:"router_key,omitempty"`
	// Optional: Internal API key for dataplane → management plane authentication.
	// In production (DB mode): Must be a secret reference (e.g., projects/.../secrets/internal-api-key-...).
	// Generated offline via admin CLI and stored in remote Secret Manager (GCP/AWS).
	// In file mode: Can be plaintext for local development.
	// Typically per-customer (one key shared by all service accounts for the customer).
	InternalApiKey *string `protobuf:"bytes,16,opt,name=internal_api_key,json=internalApiKey,proto3,oneof" json:"internal_api_key,omitempty"`
	// Optional: Local OTEL environment variable overrides to embed in the service account.
	// Values may be plaintext or secret references (e.g., sm://project/secret, noop://name).
	// The server resolves any secret references via the configured secret manager and
	// re-stores them as valet:// references before embedding in the generated service account.
	// The dataplane resolves valet:// references at load time so initLocalDestination sees
	// plaintext values when constructing the OTEL exporter.
	// Example: {"OTEL_EXPORTER_OTLP_HEADERS": "Authorization=Bearer sm://myproject/otlp-token"}
	TelemetryLocalVars map[string]string `protobuf:"bytes,17,rep,name=telemetry_local_vars,json=telemetryLocalVars,proto3" json:"telemetry_local_vars,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *CreateServiceAccountRequest) Reset() {
	*x = CreateServiceAccountRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateServiceAccountRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateServiceAccountRequest) ProtoMessage() {}

func (x *CreateServiceAccountRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[17]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateServiceAccountRequest.ProtoReflect.Descriptor instead.
func (*CreateServiceAccountRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{17}
}

func (x *CreateServiceAccountRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *CreateServiceAccountRequest) GetWorkspaceId() string {
	if x != nil {
		return x.WorkspaceId
	}
	return ""
}

func (x *CreateServiceAccountRequest) GetValidityDays() int64 {
	if x != nil && x.ValidityDays != nil {
		return *x.ValidityDays
	}
	return 0
}

func (x *CreateServiceAccountRequest) GetApiUri() string {
	if x != nil && x.ApiUri != nil {
		return *x.ApiUri
	}
	return ""
}

func (x *CreateServiceAccountRequest) GetServeUrl() string {
	if x != nil && x.ServeUrl != nil {
		return *x.ServeUrl
	}
	return ""
}

func (x *CreateServiceAccountRequest) GetIssuer() string {
	if x != nil && x.Issuer != nil {
		return *x.Issuer
	}
	return ""
}

func (x *CreateServiceAccountRequest) GetAudience() string {
	if x != nil && x.Audience != nil {
		return *x.Audience
	}
	return ""
}

func (x *CreateServiceAccountRequest) GetJwksUri() string {
	if x != nil && x.JwksUri != nil {
		return *x.JwksUri
	}
	return ""
}

func (x *CreateServiceAccountRequest) GetTelemetryEndpoint() string {
	if x != nil && x.TelemetryEndpoint != nil {
		return *x.TelemetryEndpoint
	}
	return ""
}

func (x *CreateServiceAccountRequest) GetTelemetryProtocol() string {
	if x != nil && x.TelemetryProtocol != nil {
		return *x.TelemetryProtocol
	}
	return ""
}

func (x *CreateServiceAccountRequest) GetTelemetryInsecure() bool {
	if x != nil && x.TelemetryInsecure != nil {
		return *x.TelemetryInsecure
	}
	return false
}

func (x *CreateServiceAccountRequest) GetTelemetryTimeout() string {
	if x != nil && x.TelemetryTimeout != nil {
		return *x.TelemetryTimeout
	}
	return ""
}

func (x *CreateServiceAccountRequest) GetTelemetryHeaders() map[string]string {
	if x != nil {
		return x.TelemetryHeaders
	}
	return nil
}

func (x *CreateServiceAccountRequest) GetScopes() []string {
	if x != nil {
		return x.Scopes
	}
	return nil
}

func (x *CreateServiceAccountRequest) GetRouterUrl() string {
	if x != nil && x.RouterUrl != nil {
		return *x.RouterUrl
	}
	return ""
}

func (x *CreateServiceAccountRequest) GetRouterKey() string {
	if x != nil && x.RouterKey != nil {
		return *x.RouterKey
	}
	return ""
}

func (x *CreateServiceAccountRequest) GetInternalApiKey() string {
	if x != nil && x.InternalApiKey != nil {
		return *x.InternalApiKey
	}
	return ""
}

func (x *CreateServiceAccountRequest) GetTelemetryLocalVars() map[string]string {
	if x != nil {
		return x.TelemetryLocalVars
	}
	return nil
}

type CreateServiceAccountResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The generated service account, including the private key (returned only here).
	ServiceAccount *ServiceAccount `protobuf:"bytes,1,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"`
	// Integrity checksum over the canonical service-account JSON.
	Checksum string `protobuf:"bytes,2,opt,name=checksum,proto3" json:"checksum,omitempty"`
	// Hash algorithm used for `checksum` (e.g. "sha256").
	ChecksumAlgorithm string `protobuf:"bytes,3,opt,name=checksum_algorithm,json=checksumAlgorithm,proto3" json:"checksum_algorithm,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *CreateServiceAccountResponse) Reset() {
	*x = CreateServiceAccountResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateServiceAccountResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateServiceAccountResponse) ProtoMessage() {}

func (x *CreateServiceAccountResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[18]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateServiceAccountResponse.ProtoReflect.Descriptor instead.
func (*CreateServiceAccountResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{18}
}

func (x *CreateServiceAccountResponse) GetServiceAccount() *ServiceAccount {
	if x != nil {
		return x.ServiceAccount
	}
	return nil
}

func (x *CreateServiceAccountResponse) GetChecksum() string {
	if x != nil {
		return x.Checksum
	}
	return ""
}

func (x *CreateServiceAccountResponse) GetChecksumAlgorithm() string {
	if x != nil {
		return x.ChecksumAlgorithm
	}
	return ""
}

type ServiceAccount struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Service account UUID.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Credential type discriminator; always "service_account".
	Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,3,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Workspace slug the account is scoped to.
	WorkspaceId string `protobuf:"bytes,4,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"`
	// Email-style subject identifier used as the JWT `sub`.
	ClientEmail string `protobuf:"bytes,5,opt,name=client_email,json=clientEmail,proto3" json:"client_email,omitempty"`
	// Key ID (kid) of the signing key pair.
	PrivateKeyId string `protobuf:"bytes,6,opt,name=private_key_id,json=privateKeyId,proto3" json:"private_key_id,omitempty"`
	// PEM-encoded RSA private key (returned only at creation time).
	PrivateKey string `protobuf:"bytes,7,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"`
	// Management-plane API base URI.
	ApiUri string `protobuf:"bytes,8,opt,name=api_uri,json=apiUri,proto3" json:"api_uri,omitempty"`
	// Customer-facing data-plane serve URL.
	ServeUrl string `protobuf:"bytes,15,opt,name=serve_url,json=serveUrl,proto3" json:"serve_url,omitempty"`
	// Issuer/audience/JWKS settings for the auth server.
	AuthServer *AuthServerConfig `protobuf:"bytes,9,opt,name=auth_server,json=authServer,proto3" json:"auth_server,omitempty"`
	// Issuer/audience/keys plus optional router config for gatekeeper.
	Gatekeeper *GatekeeperConfig `protobuf:"bytes,10,opt,name=gatekeeper,proto3" json:"gatekeeper,omitempty"`
	// Telemetry export configuration.
	DataExports *DataExportsConfig `protobuf:"bytes,11,opt,name=data_exports,json=dataExports,proto3" json:"data_exports,omitempty"`
	// Scopes granted to the account.
	Scopes []string `protobuf:"bytes,12,rep,name=scopes,proto3" json:"scopes,omitempty"`
	// Creation timestamp.
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Expiry timestamp derived from validity_days.
	ExpiresAt     *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ServiceAccount) Reset() {
	*x = ServiceAccount{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ServiceAccount) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ServiceAccount) ProtoMessage() {}

func (x *ServiceAccount) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[19]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ServiceAccount.ProtoReflect.Descriptor instead.
func (*ServiceAccount) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{19}
}

func (x *ServiceAccount) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ServiceAccount) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *ServiceAccount) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *ServiceAccount) GetWorkspaceId() string {
	if x != nil {
		return x.WorkspaceId
	}
	return ""
}

func (x *ServiceAccount) GetClientEmail() string {
	if x != nil {
		return x.ClientEmail
	}
	return ""
}

func (x *ServiceAccount) GetPrivateKeyId() string {
	if x != nil {
		return x.PrivateKeyId
	}
	return ""
}

func (x *ServiceAccount) GetPrivateKey() string {
	if x != nil {
		return x.PrivateKey
	}
	return ""
}

func (x *ServiceAccount) GetApiUri() string {
	if x != nil {
		return x.ApiUri
	}
	return ""
}

func (x *ServiceAccount) GetServeUrl() string {
	if x != nil {
		return x.ServeUrl
	}
	return ""
}

func (x *ServiceAccount) GetAuthServer() *AuthServerConfig {
	if x != nil {
		return x.AuthServer
	}
	return nil
}

func (x *ServiceAccount) GetGatekeeper() *GatekeeperConfig {
	if x != nil {
		return x.Gatekeeper
	}
	return nil
}

func (x *ServiceAccount) GetDataExports() *DataExportsConfig {
	if x != nil {
		return x.DataExports
	}
	return nil
}

func (x *ServiceAccount) GetScopes() []string {
	if x != nil {
		return x.Scopes
	}
	return nil
}

func (x *ServiceAccount) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *ServiceAccount) GetExpiresAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ExpiresAt
	}
	return nil
}

type AuthServerConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Expected JWT issuer (iss).
	Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
	// Expected JWT audience (aud).
	Audience string `protobuf:"bytes,2,opt,name=audience,proto3" json:"audience,omitempty"`
	// JWKS endpoint for key discovery.
	JwksUri string `protobuf:"bytes,3,opt,name=jwks_uri,json=jwksUri,proto3" json:"jwks_uri,omitempty"`
	// Public keys for offline token verification.
	PublicKeys    []*PublicKey `protobuf:"bytes,4,rep,name=public_keys,json=publicKeys,proto3" json:"public_keys,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AuthServerConfig) Reset() {
	*x = AuthServerConfig{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AuthServerConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AuthServerConfig) ProtoMessage() {}

func (x *AuthServerConfig) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[20]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AuthServerConfig.ProtoReflect.Descriptor instead.
func (*AuthServerConfig) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{20}
}

func (x *AuthServerConfig) GetIssuer() string {
	if x != nil {
		return x.Issuer
	}
	return ""
}

func (x *AuthServerConfig) GetAudience() string {
	if x != nil {
		return x.Audience
	}
	return ""
}

func (x *AuthServerConfig) GetJwksUri() string {
	if x != nil {
		return x.JwksUri
	}
	return ""
}

func (x *AuthServerConfig) GetPublicKeys() []*PublicKey {
	if x != nil {
		return x.PublicKeys
	}
	return nil
}

type GatekeeperConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Expected JWT issuer (iss) for gatekeeper-issued tokens.
	Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
	// Expected JWT audience (aud).
	Audience string `protobuf:"bytes,2,opt,name=audience,proto3" json:"audience,omitempty"`
	// Public keys for verifying gatekeeper tokens.
	PublicKeys []*PublicKey `protobuf:"bytes,3,rep,name=public_keys,json=publicKeys,proto3" json:"public_keys,omitempty"`
	// Optional router configuration for TARS routing
	Router        *RouterConfig `protobuf:"bytes,4,opt,name=router,proto3" json:"router,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GatekeeperConfig) Reset() {
	*x = GatekeeperConfig{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GatekeeperConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GatekeeperConfig) ProtoMessage() {}

func (x *GatekeeperConfig) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[21]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GatekeeperConfig.ProtoReflect.Descriptor instead.
func (*GatekeeperConfig) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{21}
}

func (x *GatekeeperConfig) GetIssuer() string {
	if x != nil {
		return x.Issuer
	}
	return ""
}

func (x *GatekeeperConfig) GetAudience() string {
	if x != nil {
		return x.Audience
	}
	return ""
}

func (x *GatekeeperConfig) GetPublicKeys() []*PublicKey {
	if x != nil {
		return x.PublicKeys
	}
	return nil
}

func (x *GatekeeperConfig) GetRouter() *RouterConfig {
	if x != nil {
		return x.Router
	}
	return nil
}

type RouterConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// TARS router base URL.
	Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
	// Secret reference (or the raw value in server responses) for router key.
	Key           string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RouterConfig) Reset() {
	*x = RouterConfig{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RouterConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RouterConfig) ProtoMessage() {}

func (x *RouterConfig) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[22]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RouterConfig.ProtoReflect.Descriptor instead.
func (*RouterConfig) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{22}
}

func (x *RouterConfig) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

func (x *RouterConfig) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

type PublicKey struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Key ID (kid) matching the JWT header.
	Kid string `protobuf:"bytes,1,opt,name=kid,proto3" json:"kid,omitempty"`
	// Signing algorithm (e.g. "RS256").
	Alg string `protobuf:"bytes,2,opt,name=alg,proto3" json:"alg,omitempty"`
	// Intended key use (e.g. "sig").
	Use string `protobuf:"bytes,3,opt,name=use,proto3" json:"use,omitempty"`
	// PEM-encoded public key material.
	Key           string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PublicKey) Reset() {
	*x = PublicKey{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PublicKey) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PublicKey) ProtoMessage() {}

func (x *PublicKey) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[23]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PublicKey.ProtoReflect.Descriptor instead.
func (*PublicKey) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{23}
}

func (x *PublicKey) GetKid() string {
	if x != nil {
		return x.Kid
	}
	return ""
}

func (x *PublicKey) GetAlg() string {
	if x != nil {
		return x.Alg
	}
	return ""
}

func (x *PublicKey) GetUse() string {
	if x != nil {
		return x.Use
	}
	return ""
}

func (x *PublicKey) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

type DataExportsConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Telemetry/OTLP export settings.
	Telemetry     *TelemetryConfig `protobuf:"bytes,1,opt,name=telemetry,proto3" json:"telemetry,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DataExportsConfig) Reset() {
	*x = DataExportsConfig{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DataExportsConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DataExportsConfig) ProtoMessage() {}

func (x *DataExportsConfig) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[24]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DataExportsConfig.ProtoReflect.Descriptor instead.
func (*DataExportsConfig) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{24}
}

func (x *DataExportsConfig) GetTelemetry() *TelemetryConfig {
	if x != nil {
		return x.Telemetry
	}
	return nil
}

type TelemetryConfig struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// OTLP exporter endpoint.
	Endpoint string `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
	// OTLP wire protocol (grpc, http/protobuf, http/json).
	Protocol string `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"`
	// If true, TLS verification is skipped.
	Insecure bool `protobuf:"varint,3,opt,name=insecure,proto3" json:"insecure,omitempty"`
	// Export timeout as a Go duration string.
	Timeout string `protobuf:"bytes,4,opt,name=timeout,proto3" json:"timeout,omitempty"`
	// Extra headers attached to exports.
	Headers       map[string]string `protobuf:"bytes,5,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TelemetryConfig) Reset() {
	*x = TelemetryConfig{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TelemetryConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TelemetryConfig) ProtoMessage() {}

func (x *TelemetryConfig) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[25]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TelemetryConfig.ProtoReflect.Descriptor instead.
func (*TelemetryConfig) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{25}
}

func (x *TelemetryConfig) GetEndpoint() string {
	if x != nil {
		return x.Endpoint
	}
	return ""
}

func (x *TelemetryConfig) GetProtocol() string {
	if x != nil {
		return x.Protocol
	}
	return ""
}

func (x *TelemetryConfig) GetInsecure() bool {
	if x != nil {
		return x.Insecure
	}
	return false
}

func (x *TelemetryConfig) GetTimeout() string {
	if x != nil {
		return x.Timeout
	}
	return ""
}

func (x *TelemetryConfig) GetHeaders() map[string]string {
	if x != nil {
		return x.Headers
	}
	return nil
}

type ListServiceAccountsRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Optional filter by owning customer slug.
	CustomerId *string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3,oneof" json:"customer_id,omitempty"`
	// Optional filter by workspace slug.
	WorkspaceId *string `protobuf:"bytes,2,opt,name=workspace_id,json=workspaceId,proto3,oneof" json:"workspace_id,omitempty"`
	// Optional filter by account status.
	Status *ServiceAccountStatus `protobuf:"varint,3,opt,name=status,proto3,enum=tars.admin.v1.ServiceAccountStatus,oneof" json:"status,omitempty"`
	// Max results per page (0 = server default).
	PageSize *int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3,oneof" json:"page_size,omitempty"`
	// Opaque pagination cursor from a prior response.
	PageToken     *string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3,oneof" json:"page_token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListServiceAccountsRequest) Reset() {
	*x = ListServiceAccountsRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListServiceAccountsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListServiceAccountsRequest) ProtoMessage() {}

func (x *ListServiceAccountsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[26]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListServiceAccountsRequest.ProtoReflect.Descriptor instead.
func (*ListServiceAccountsRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{26}
}

func (x *ListServiceAccountsRequest) GetCustomerId() string {
	if x != nil && x.CustomerId != nil {
		return *x.CustomerId
	}
	return ""
}

func (x *ListServiceAccountsRequest) GetWorkspaceId() string {
	if x != nil && x.WorkspaceId != nil {
		return *x.WorkspaceId
	}
	return ""
}

func (x *ListServiceAccountsRequest) GetStatus() ServiceAccountStatus {
	if x != nil && x.Status != nil {
		return *x.Status
	}
	return ServiceAccountStatus_SERVICE_ACCOUNT_STATUS_UNSPECIFIED
}

func (x *ListServiceAccountsRequest) GetPageSize() int32 {
	if x != nil && x.PageSize != nil {
		return *x.PageSize
	}
	return 0
}

func (x *ListServiceAccountsRequest) GetPageToken() string {
	if x != nil && x.PageToken != nil {
		return *x.PageToken
	}
	return ""
}

type ListServiceAccountsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Page of service account summaries (no private keys).
	ServiceAccounts []*ServiceAccountInfo `protobuf:"bytes,1,rep,name=service_accounts,json=serviceAccounts,proto3" json:"service_accounts,omitempty"`
	// Cursor for the next page; empty when exhausted.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListServiceAccountsResponse) Reset() {
	*x = ListServiceAccountsResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListServiceAccountsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListServiceAccountsResponse) ProtoMessage() {}

func (x *ListServiceAccountsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[27]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListServiceAccountsResponse.ProtoReflect.Descriptor instead.
func (*ListServiceAccountsResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{27}
}

func (x *ListServiceAccountsResponse) GetServiceAccounts() []*ServiceAccountInfo {
	if x != nil {
		return x.ServiceAccounts
	}
	return nil
}

func (x *ListServiceAccountsResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

type GetServiceAccountRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Service account UUID to fetch.
	Id            string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetServiceAccountRequest) Reset() {
	*x = GetServiceAccountRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetServiceAccountRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetServiceAccountRequest) ProtoMessage() {}

func (x *GetServiceAccountRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[28]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetServiceAccountRequest.ProtoReflect.Descriptor instead.
func (*GetServiceAccountRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{28}
}

func (x *GetServiceAccountRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

type GetServiceAccountResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The requested service account summary.
	ServiceAccount *ServiceAccountInfo `protobuf:"bytes,1,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *GetServiceAccountResponse) Reset() {
	*x = GetServiceAccountResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetServiceAccountResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetServiceAccountResponse) ProtoMessage() {}

func (x *GetServiceAccountResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[29]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetServiceAccountResponse.ProtoReflect.Descriptor instead.
func (*GetServiceAccountResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{29}
}

func (x *GetServiceAccountResponse) GetServiceAccount() *ServiceAccountInfo {
	if x != nil {
		return x.ServiceAccount
	}
	return nil
}

type ServiceAccountInfo struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Service account UUID.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,2,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Workspace slug the account is scoped to.
	WorkspaceId string `protobuf:"bytes,3,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"`
	// Email-style subject identifier (client_email).
	Email string `protobuf:"bytes,4,opt,name=email,proto3" json:"email,omitempty"`
	// Current lifecycle status.
	Status ServiceAccountStatus `protobuf:"varint,5,opt,name=status,proto3,enum=tars.admin.v1.ServiceAccountStatus" json:"status,omitempty"`
	// Creation timestamp.
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Expiry timestamp.
	ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"`
	// Last time the account authenticated; unset if never used.
	LastUsedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_used_at,json=lastUsedAt,proto3,oneof" json:"last_used_at,omitempty"`
	// Fingerprint of the account's public key.
	PublicKeyFingerprint string `protobuf:"bytes,9,opt,name=public_key_fingerprint,json=publicKeyFingerprint,proto3" json:"public_key_fingerprint,omitempty"`
	// Arbitrary stored metadata for the account.
	Metadata map[string]string `protobuf:"bytes,10,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// Revocation timestamp; unset unless revoked.
	RevokedAt     *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=revoked_at,json=revokedAt,proto3,oneof" json:"revoked_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ServiceAccountInfo) Reset() {
	*x = ServiceAccountInfo{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ServiceAccountInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ServiceAccountInfo) ProtoMessage() {}

func (x *ServiceAccountInfo) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[30]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ServiceAccountInfo.ProtoReflect.Descriptor instead.
func (*ServiceAccountInfo) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{30}
}

func (x *ServiceAccountInfo) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ServiceAccountInfo) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *ServiceAccountInfo) GetWorkspaceId() string {
	if x != nil {
		return x.WorkspaceId
	}
	return ""
}

func (x *ServiceAccountInfo) GetEmail() string {
	if x != nil {
		return x.Email
	}
	return ""
}

func (x *ServiceAccountInfo) GetStatus() ServiceAccountStatus {
	if x != nil {
		return x.Status
	}
	return ServiceAccountStatus_SERVICE_ACCOUNT_STATUS_UNSPECIFIED
}

func (x *ServiceAccountInfo) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *ServiceAccountInfo) GetExpiresAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ExpiresAt
	}
	return nil
}

func (x *ServiceAccountInfo) GetLastUsedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.LastUsedAt
	}
	return nil
}

func (x *ServiceAccountInfo) GetPublicKeyFingerprint() string {
	if x != nil {
		return x.PublicKeyFingerprint
	}
	return ""
}

func (x *ServiceAccountInfo) GetMetadata() map[string]string {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *ServiceAccountInfo) GetRevokedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.RevokedAt
	}
	return nil
}

type RevokeServiceAccountRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Service account UUID to revoke.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Optional human-readable revocation reason (audit trail).
	Reason        *string `protobuf:"bytes,2,opt,name=reason,proto3,oneof" json:"reason,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RevokeServiceAccountRequest) Reset() {
	*x = RevokeServiceAccountRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RevokeServiceAccountRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RevokeServiceAccountRequest) ProtoMessage() {}

func (x *RevokeServiceAccountRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[31]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RevokeServiceAccountRequest.ProtoReflect.Descriptor instead.
func (*RevokeServiceAccountRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{31}
}

func (x *RevokeServiceAccountRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *RevokeServiceAccountRequest) GetReason() string {
	if x != nil && x.Reason != nil {
		return *x.Reason
	}
	return ""
}

type RevokeServiceAccountResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// True if the account was revoked.
	Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	// When the revocation took effect.
	RevokedAt     *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=revoked_at,json=revokedAt,proto3" json:"revoked_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RevokeServiceAccountResponse) Reset() {
	*x = RevokeServiceAccountResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RevokeServiceAccountResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RevokeServiceAccountResponse) ProtoMessage() {}

func (x *RevokeServiceAccountResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[32]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RevokeServiceAccountResponse.ProtoReflect.Descriptor instead.
func (*RevokeServiceAccountResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{32}
}

func (x *RevokeServiceAccountResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *RevokeServiceAccountResponse) GetRevokedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.RevokedAt
	}
	return nil
}

type RestoreServiceAccountRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Service account UUID to restore to active.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Optional human-readable restore reason (audit trail).
	Reason        *string `protobuf:"bytes,2,opt,name=reason,proto3,oneof" json:"reason,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RestoreServiceAccountRequest) Reset() {
	*x = RestoreServiceAccountRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[33]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RestoreServiceAccountRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RestoreServiceAccountRequest) ProtoMessage() {}

func (x *RestoreServiceAccountRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[33]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RestoreServiceAccountRequest.ProtoReflect.Descriptor instead.
func (*RestoreServiceAccountRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{33}
}

func (x *RestoreServiceAccountRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *RestoreServiceAccountRequest) GetReason() string {
	if x != nil && x.Reason != nil {
		return *x.Reason
	}
	return ""
}

type RestoreServiceAccountResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// True if the account was restored.
	Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	// The restored account summary.
	ServiceAccount *ServiceAccountInfo `protobuf:"bytes,2,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *RestoreServiceAccountResponse) Reset() {
	*x = RestoreServiceAccountResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[34]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RestoreServiceAccountResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RestoreServiceAccountResponse) ProtoMessage() {}

func (x *RestoreServiceAccountResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[34]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RestoreServiceAccountResponse.ProtoReflect.Descriptor instead.
func (*RestoreServiceAccountResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{34}
}

func (x *RestoreServiceAccountResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *RestoreServiceAccountResponse) GetServiceAccount() *ServiceAccountInfo {
	if x != nil {
		return x.ServiceAccount
	}
	return nil
}

type CreateUserTokenRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Customer ID (e.g., "acme", "default")
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Workspace ID (e.g., "production", "staging", "internal")
	WorkspaceId string `protobuf:"bytes,2,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"`
	// User ID from authentication provider (opaque identifier)
	UserId string `protobuf:"bytes,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	// User role from authentication (e.g., "developer", "admin")
	Role string `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
	// Organization unit from authentication (e.g., "engineering", "sales")
	OrganizationUnit string `protobuf:"bytes,5,opt,name=organization_unit,json=organizationUnit,proto3" json:"organization_unit,omitempty"`
	// Token lifetime in days (default applied if unset).
	ExpiresInDays *int64 `protobuf:"varint,6,opt,name=expires_in_days,json=expiresInDays,proto3,oneof" json:"expires_in_days,omitempty"`
	// OAuth-style scopes embedded in the issued token.
	Scopes []string `protobuf:"bytes,7,rep,name=scopes,proto3" json:"scopes,omitempty"`
	// Optional human-readable name for the token
	Name *string `protobuf:"bytes,8,opt,name=name,proto3,oneof" json:"name,omitempty"`
	// If true, the token will not be persisted to the database.
	// This is used for impersonation scenarios where the token is temporary.
	Impersonate *bool `protobuf:"varint,9,opt,name=impersonate,proto3,oneof" json:"impersonate,omitempty"`
	// Optional metadata for impersonation tracking.
	// When impersonate=true, this should contain the original user/admin who is impersonating.
	ImpersonationMetadata *ImpersonationMetadata `protobuf:"bytes,10,opt,name=impersonation_metadata,json=impersonationMetadata,proto3,oneof" json:"impersonation_metadata,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

func (x *CreateUserTokenRequest) Reset() {
	*x = CreateUserTokenRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[35]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateUserTokenRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateUserTokenRequest) ProtoMessage() {}

func (x *CreateUserTokenRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[35]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateUserTokenRequest.ProtoReflect.Descriptor instead.
func (*CreateUserTokenRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{35}
}

func (x *CreateUserTokenRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *CreateUserTokenRequest) GetWorkspaceId() string {
	if x != nil {
		return x.WorkspaceId
	}
	return ""
}

func (x *CreateUserTokenRequest) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *CreateUserTokenRequest) GetRole() string {
	if x != nil {
		return x.Role
	}
	return ""
}

func (x *CreateUserTokenRequest) GetOrganizationUnit() string {
	if x != nil {
		return x.OrganizationUnit
	}
	return ""
}

func (x *CreateUserTokenRequest) GetExpiresInDays() int64 {
	if x != nil && x.ExpiresInDays != nil {
		return *x.ExpiresInDays
	}
	return 0
}

func (x *CreateUserTokenRequest) GetScopes() []string {
	if x != nil {
		return x.Scopes
	}
	return nil
}

func (x *CreateUserTokenRequest) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *CreateUserTokenRequest) GetImpersonate() bool {
	if x != nil && x.Impersonate != nil {
		return *x.Impersonate
	}
	return false
}

func (x *CreateUserTokenRequest) GetImpersonationMetadata() *ImpersonationMetadata {
	if x != nil {
		return x.ImpersonationMetadata
	}
	return nil
}

type ImpersonationMetadata struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The key identifier (ID or key hash) of the user/admin performing the impersonation.
	ImpersonatorKey string `protobuf:"bytes,1,opt,name=impersonator_key,json=impersonatorKey,proto3" json:"impersonator_key,omitempty"`
	// Optional reason for impersonation.
	Reason *string `protobuf:"bytes,2,opt,name=reason,proto3,oneof" json:"reason,omitempty"`
	// Optional additional context.
	Context       map[string]string `protobuf:"bytes,3,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ImpersonationMetadata) Reset() {
	*x = ImpersonationMetadata{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[36]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ImpersonationMetadata) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ImpersonationMetadata) ProtoMessage() {}

func (x *ImpersonationMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[36]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ImpersonationMetadata.ProtoReflect.Descriptor instead.
func (*ImpersonationMetadata) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{36}
}

func (x *ImpersonationMetadata) GetImpersonatorKey() string {
	if x != nil {
		return x.ImpersonatorKey
	}
	return ""
}

func (x *ImpersonationMetadata) GetReason() string {
	if x != nil && x.Reason != nil {
		return *x.Reason
	}
	return ""
}

func (x *ImpersonationMetadata) GetContext() map[string]string {
	if x != nil {
		return x.Context
	}
	return nil
}

type CreateUserTokenResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The signed JWT to use as a bearer credential.
	AccessToken string `protobuf:"bytes,1,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"`
	// Token type, typically "Bearer".
	TokenType string `protobuf:"bytes,2,opt,name=token_type,json=tokenType,proto3" json:"token_type,omitempty"`
	// Seconds until the token expires.
	ExpiresIn int64 `protobuf:"varint,3,opt,name=expires_in,json=expiresIn,proto3" json:"expires_in,omitempty"`
	// Absolute expiry timestamp.
	ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"`
	// JWT ID (jti); used to look up and revoke the token.
	Jti string `protobuf:"bytes,5,opt,name=jti,proto3" json:"jti,omitempty"`
	// Database storage identifiers (for internal use)
	KeyPrefix     string `protobuf:"bytes,6,opt,name=key_prefix,json=keyPrefix,proto3" json:"key_prefix,omitempty"`    // First 12 chars of xxhash64(jti)
	KeyHash       string `protobuf:"bytes,7,opt,name=key_hash,json=keyHash,proto3" json:"key_hash,omitempty"`          // JTI (used for revocation lookups)
	KeyAddress    string `protobuf:"bytes,8,opt,name=key_address,json=keyAddress,proto3" json:"key_address,omitempty"` // xxhash64(userId) as hex string
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateUserTokenResponse) Reset() {
	*x = CreateUserTokenResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[37]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateUserTokenResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateUserTokenResponse) ProtoMessage() {}

func (x *CreateUserTokenResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[37]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateUserTokenResponse.ProtoReflect.Descriptor instead.
func (*CreateUserTokenResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{37}
}

func (x *CreateUserTokenResponse) GetAccessToken() string {
	if x != nil {
		return x.AccessToken
	}
	return ""
}

func (x *CreateUserTokenResponse) GetTokenType() string {
	if x != nil {
		return x.TokenType
	}
	return ""
}

func (x *CreateUserTokenResponse) GetExpiresIn() int64 {
	if x != nil {
		return x.ExpiresIn
	}
	return 0
}

func (x *CreateUserTokenResponse) GetExpiresAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ExpiresAt
	}
	return nil
}

func (x *CreateUserTokenResponse) GetJti() string {
	if x != nil {
		return x.Jti
	}
	return ""
}

func (x *CreateUserTokenResponse) GetKeyPrefix() string {
	if x != nil {
		return x.KeyPrefix
	}
	return ""
}

func (x *CreateUserTokenResponse) GetKeyHash() string {
	if x != nil {
		return x.KeyHash
	}
	return ""
}

func (x *CreateUserTokenResponse) GetKeyAddress() string {
	if x != nil {
		return x.KeyAddress
	}
	return ""
}

type ListUserTokensRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Optional filter by issuing user ID.
	UserId *string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3,oneof" json:"user_id,omitempty"`
	// Optional filter by token status.
	Status *UserTokenStatus `protobuf:"varint,2,opt,name=status,proto3,enum=tars.admin.v1.UserTokenStatus,oneof" json:"status,omitempty"`
	// Max results per page (0 = server default).
	PageSize *int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3,oneof" json:"page_size,omitempty"`
	// Opaque pagination cursor from a prior response.
	PageToken     *string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3,oneof" json:"page_token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListUserTokensRequest) Reset() {
	*x = ListUserTokensRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[38]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListUserTokensRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListUserTokensRequest) ProtoMessage() {}

func (x *ListUserTokensRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[38]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListUserTokensRequest.ProtoReflect.Descriptor instead.
func (*ListUserTokensRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{38}
}

func (x *ListUserTokensRequest) GetUserId() string {
	if x != nil && x.UserId != nil {
		return *x.UserId
	}
	return ""
}

func (x *ListUserTokensRequest) GetStatus() UserTokenStatus {
	if x != nil && x.Status != nil {
		return *x.Status
	}
	return UserTokenStatus_USER_TOKEN_STATUS_UNSPECIFIED
}

func (x *ListUserTokensRequest) GetPageSize() int32 {
	if x != nil && x.PageSize != nil {
		return *x.PageSize
	}
	return 0
}

func (x *ListUserTokensRequest) GetPageToken() string {
	if x != nil && x.PageToken != nil {
		return *x.PageToken
	}
	return ""
}

type ListUserTokensResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Page of user token summaries.
	Tokens []*UserTokenInfo `protobuf:"bytes,1,rep,name=tokens,proto3" json:"tokens,omitempty"`
	// Cursor for the next page; empty when exhausted.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListUserTokensResponse) Reset() {
	*x = ListUserTokensResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[39]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListUserTokensResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListUserTokensResponse) ProtoMessage() {}

func (x *ListUserTokensResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[39]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListUserTokensResponse.ProtoReflect.Descriptor instead.
func (*ListUserTokensResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{39}
}

func (x *ListUserTokensResponse) GetTokens() []*UserTokenInfo {
	if x != nil {
		return x.Tokens
	}
	return nil
}

func (x *ListUserTokensResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

type GetUserTokenRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// JWT ID (jti) of the token to fetch.
	Jti           string `protobuf:"bytes,1,opt,name=jti,proto3" json:"jti,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetUserTokenRequest) Reset() {
	*x = GetUserTokenRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[40]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetUserTokenRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetUserTokenRequest) ProtoMessage() {}

func (x *GetUserTokenRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[40]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetUserTokenRequest.ProtoReflect.Descriptor instead.
func (*GetUserTokenRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{40}
}

func (x *GetUserTokenRequest) GetJti() string {
	if x != nil {
		return x.Jti
	}
	return ""
}

type GetUserTokenResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The requested token summary.
	Token         *UserTokenInfo `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetUserTokenResponse) Reset() {
	*x = GetUserTokenResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[41]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetUserTokenResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetUserTokenResponse) ProtoMessage() {}

func (x *GetUserTokenResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[41]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetUserTokenResponse.ProtoReflect.Descriptor instead.
func (*GetUserTokenResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{41}
}

func (x *GetUserTokenResponse) GetToken() *UserTokenInfo {
	if x != nil {
		return x.Token
	}
	return nil
}

type UserTokenInfo struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// JWT ID (jti), unique per token.
	Jti string `protobuf:"bytes,1,opt,name=jti,proto3" json:"jti,omitempty"`
	// User the token was issued for.
	UserId string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	// Role embedded in the token.
	Role string `protobuf:"bytes,3,opt,name=role,proto3" json:"role,omitempty"`
	// Organization unit embedded in the token.
	OrganizationUnit string `protobuf:"bytes,4,opt,name=organization_unit,json=organizationUnit,proto3" json:"organization_unit,omitempty"`
	// Current lifecycle status.
	Status UserTokenStatus `protobuf:"varint,5,opt,name=status,proto3,enum=tars.admin.v1.UserTokenStatus" json:"status,omitempty"`
	// Issuance timestamp.
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Expiry timestamp.
	ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"`
	// Last time the token was used; unset if never used.
	LastUsedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_used_at,json=lastUsedAt,proto3,oneof" json:"last_used_at,omitempty"`
	// Revocation timestamp; unset unless revoked.
	RevokedAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=revoked_at,json=revokedAt,proto3,oneof" json:"revoked_at,omitempty"`
	// Reason recorded at revocation, if any.
	RevokedReason *string `protobuf:"bytes,10,opt,name=revoked_reason,json=revokedReason,proto3,oneof" json:"revoked_reason,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UserTokenInfo) Reset() {
	*x = UserTokenInfo{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[42]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UserTokenInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UserTokenInfo) ProtoMessage() {}

func (x *UserTokenInfo) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[42]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UserTokenInfo.ProtoReflect.Descriptor instead.
func (*UserTokenInfo) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{42}
}

func (x *UserTokenInfo) GetJti() string {
	if x != nil {
		return x.Jti
	}
	return ""
}

func (x *UserTokenInfo) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *UserTokenInfo) GetRole() string {
	if x != nil {
		return x.Role
	}
	return ""
}

func (x *UserTokenInfo) GetOrganizationUnit() string {
	if x != nil {
		return x.OrganizationUnit
	}
	return ""
}

func (x *UserTokenInfo) GetStatus() UserTokenStatus {
	if x != nil {
		return x.Status
	}
	return UserTokenStatus_USER_TOKEN_STATUS_UNSPECIFIED
}

func (x *UserTokenInfo) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *UserTokenInfo) GetExpiresAt() *timestamppb.Timestamp {
	if x != nil {
		return x.ExpiresAt
	}
	return nil
}

func (x *UserTokenInfo) GetLastUsedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.LastUsedAt
	}
	return nil
}

func (x *UserTokenInfo) GetRevokedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.RevokedAt
	}
	return nil
}

func (x *UserTokenInfo) GetRevokedReason() string {
	if x != nil && x.RevokedReason != nil {
		return *x.RevokedReason
	}
	return ""
}

type RevokeUserTokenRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// JWT ID (jti) of the token to revoke.
	Jti string `protobuf:"bytes,1,opt,name=jti,proto3" json:"jti,omitempty"`
	// Optional human-readable revocation reason (audit trail).
	Reason        *string `protobuf:"bytes,2,opt,name=reason,proto3,oneof" json:"reason,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RevokeUserTokenRequest) Reset() {
	*x = RevokeUserTokenRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[43]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RevokeUserTokenRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RevokeUserTokenRequest) ProtoMessage() {}

func (x *RevokeUserTokenRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[43]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RevokeUserTokenRequest.ProtoReflect.Descriptor instead.
func (*RevokeUserTokenRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{43}
}

func (x *RevokeUserTokenRequest) GetJti() string {
	if x != nil {
		return x.Jti
	}
	return ""
}

func (x *RevokeUserTokenRequest) GetReason() string {
	if x != nil && x.Reason != nil {
		return *x.Reason
	}
	return ""
}

type RevokeUserTokenResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// True if the token was revoked.
	Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	// When the revocation took effect.
	RevokedAt     *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=revoked_at,json=revokedAt,proto3" json:"revoked_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RevokeUserTokenResponse) Reset() {
	*x = RevokeUserTokenResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[44]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RevokeUserTokenResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RevokeUserTokenResponse) ProtoMessage() {}

func (x *RevokeUserTokenResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[44]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RevokeUserTokenResponse.ProtoReflect.Descriptor instead.
func (*RevokeUserTokenResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{44}
}

func (x *RevokeUserTokenResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *RevokeUserTokenResponse) GetRevokedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.RevokedAt
	}
	return nil
}

type TelemetryForwardingConfig struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // UUID
	UserId        string                 `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	TelemetryType string                 `protobuf:"bytes,3,opt,name=telemetry_type,json=telemetryType,proto3" json:"telemetry_type,omitempty"`      // 'traces', 'metrics', 'logs'
	SinkUrl       string                 `protobuf:"bytes,4,opt,name=sink_url,json=sinkUrl,proto3" json:"sink_url,omitempty"`                        // Destination URL
	Protocol      string                 `protobuf:"bytes,5,opt,name=protocol,proto3" json:"protocol,omitempty"`                                     // 'grpc', 'http/json', 'http/protobuf'
	AuthType      string                 `protobuf:"bytes,6,opt,name=auth_type,json=authType,proto3" json:"auth_type,omitempty"`                     // 'none', 'bearer', 'basic', 'api_key'
	AuthValue     *string                `protobuf:"bytes,7,opt,name=auth_value,json=authValue,proto3,oneof" json:"auth_value,omitempty"`            // Decrypted auth value (only returned in Get/Create responses)
	ApiKeyHeader  *string                `protobuf:"bytes,8,opt,name=api_key_header,json=apiKeyHeader,proto3,oneof" json:"api_key_header,omitempty"` // Header name for API key auth
	Enabled       bool                   `protobuf:"varint,9,opt,name=enabled,proto3" json:"enabled,omitempty"`
	LastCheckedAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=last_checked_at,json=lastCheckedAt,proto3" json:"last_checked_at,omitempty"`
	Status        string                 `protobuf:"bytes,11,opt,name=status,proto3" json:"status,omitempty"` // 'connected', 'disconnected', 'error', 'testing'
	CreatedAt     *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	UpdatedAt     *timestamppb.Timestamp `protobuf:"bytes,13,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TelemetryForwardingConfig) Reset() {
	*x = TelemetryForwardingConfig{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[45]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TelemetryForwardingConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TelemetryForwardingConfig) ProtoMessage() {}

func (x *TelemetryForwardingConfig) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[45]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TelemetryForwardingConfig.ProtoReflect.Descriptor instead.
func (*TelemetryForwardingConfig) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{45}
}

func (x *TelemetryForwardingConfig) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *TelemetryForwardingConfig) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *TelemetryForwardingConfig) GetTelemetryType() string {
	if x != nil {
		return x.TelemetryType
	}
	return ""
}

func (x *TelemetryForwardingConfig) GetSinkUrl() string {
	if x != nil {
		return x.SinkUrl
	}
	return ""
}

func (x *TelemetryForwardingConfig) GetProtocol() string {
	if x != nil {
		return x.Protocol
	}
	return ""
}

func (x *TelemetryForwardingConfig) GetAuthType() string {
	if x != nil {
		return x.AuthType
	}
	return ""
}

func (x *TelemetryForwardingConfig) GetAuthValue() string {
	if x != nil && x.AuthValue != nil {
		return *x.AuthValue
	}
	return ""
}

func (x *TelemetryForwardingConfig) GetApiKeyHeader() string {
	if x != nil && x.ApiKeyHeader != nil {
		return *x.ApiKeyHeader
	}
	return ""
}

func (x *TelemetryForwardingConfig) GetEnabled() bool {
	if x != nil {
		return x.Enabled
	}
	return false
}

func (x *TelemetryForwardingConfig) GetLastCheckedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.LastCheckedAt
	}
	return nil
}

func (x *TelemetryForwardingConfig) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *TelemetryForwardingConfig) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *TelemetryForwardingConfig) GetUpdatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdatedAt
	}
	return nil
}

type CreateTelemetryConfigRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owner of the forwarding config.
	UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	// Signal type to forward: traces, metrics, or logs.
	TelemetryType string `protobuf:"bytes,2,opt,name=telemetry_type,json=telemetryType,proto3" json:"telemetry_type,omitempty"`
	// Destination OTLP sink URL.
	SinkUrl string `protobuf:"bytes,3,opt,name=sink_url,json=sinkUrl,proto3" json:"sink_url,omitempty"`
	// OTLP wire protocol for the sink.
	Protocol string `protobuf:"bytes,4,opt,name=protocol,proto3" json:"protocol,omitempty"`
	// Authentication scheme for the sink.
	AuthType  string  `protobuf:"bytes,5,opt,name=auth_type,json=authType,proto3" json:"auth_type,omitempty"`
	AuthValue *string `protobuf:"bytes,6,opt,name=auth_value,json=authValue,proto3,oneof" json:"auth_value,omitempty"` // Plain text auth value to be encrypted
	// Header name to carry the key when auth_type is api_key.
	ApiKeyHeader *string `protobuf:"bytes,7,opt,name=api_key_header,json=apiKeyHeader,proto3,oneof" json:"api_key_header,omitempty"`
	// Whether forwarding starts enabled (default enabled if unset).
	Enabled       *bool `protobuf:"varint,8,opt,name=enabled,proto3,oneof" json:"enabled,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateTelemetryConfigRequest) Reset() {
	*x = CreateTelemetryConfigRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[46]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateTelemetryConfigRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateTelemetryConfigRequest) ProtoMessage() {}

func (x *CreateTelemetryConfigRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[46]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateTelemetryConfigRequest.ProtoReflect.Descriptor instead.
func (*CreateTelemetryConfigRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{46}
}

func (x *CreateTelemetryConfigRequest) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *CreateTelemetryConfigRequest) GetTelemetryType() string {
	if x != nil {
		return x.TelemetryType
	}
	return ""
}

func (x *CreateTelemetryConfigRequest) GetSinkUrl() string {
	if x != nil {
		return x.SinkUrl
	}
	return ""
}

func (x *CreateTelemetryConfigRequest) GetProtocol() string {
	if x != nil {
		return x.Protocol
	}
	return ""
}

func (x *CreateTelemetryConfigRequest) GetAuthType() string {
	if x != nil {
		return x.AuthType
	}
	return ""
}

func (x *CreateTelemetryConfigRequest) GetAuthValue() string {
	if x != nil && x.AuthValue != nil {
		return *x.AuthValue
	}
	return ""
}

func (x *CreateTelemetryConfigRequest) GetApiKeyHeader() string {
	if x != nil && x.ApiKeyHeader != nil {
		return *x.ApiKeyHeader
	}
	return ""
}

func (x *CreateTelemetryConfigRequest) GetEnabled() bool {
	if x != nil && x.Enabled != nil {
		return *x.Enabled
	}
	return false
}

type CreateTelemetryConfigResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The created forwarding config (auth_value decrypted).
	Config        *TelemetryForwardingConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateTelemetryConfigResponse) Reset() {
	*x = CreateTelemetryConfigResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[47]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateTelemetryConfigResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateTelemetryConfigResponse) ProtoMessage() {}

func (x *CreateTelemetryConfigResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[47]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateTelemetryConfigResponse.ProtoReflect.Descriptor instead.
func (*CreateTelemetryConfigResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{47}
}

func (x *CreateTelemetryConfigResponse) GetConfig() *TelemetryForwardingConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

type ListTelemetryConfigsRequest struct {
	state  protoimpl.MessageState `protogen:"open.v1"`
	UserId *string                `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3,oneof" json:"user_id,omitempty"` // Filter by user_id
	// Optional filter by signal type.
	TelemetryType *string `protobuf:"bytes,2,opt,name=telemetry_type,json=telemetryType,proto3,oneof" json:"telemetry_type,omitempty"`
	Enabled       *bool   `protobuf:"varint,3,opt,name=enabled,proto3,oneof" json:"enabled,omitempty"` // Filter by enabled status
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListTelemetryConfigsRequest) Reset() {
	*x = ListTelemetryConfigsRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[48]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListTelemetryConfigsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListTelemetryConfigsRequest) ProtoMessage() {}

func (x *ListTelemetryConfigsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[48]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListTelemetryConfigsRequest.ProtoReflect.Descriptor instead.
func (*ListTelemetryConfigsRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{48}
}

func (x *ListTelemetryConfigsRequest) GetUserId() string {
	if x != nil && x.UserId != nil {
		return *x.UserId
	}
	return ""
}

func (x *ListTelemetryConfigsRequest) GetTelemetryType() string {
	if x != nil && x.TelemetryType != nil {
		return *x.TelemetryType
	}
	return ""
}

func (x *ListTelemetryConfigsRequest) GetEnabled() bool {
	if x != nil && x.Enabled != nil {
		return *x.Enabled
	}
	return false
}

type ListTelemetryConfigsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Matching forwarding configs.
	Configs []*TelemetryForwardingConfig `protobuf:"bytes,1,rep,name=configs,proto3" json:"configs,omitempty"`
	// Total number of matching configs.
	Total         int32 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListTelemetryConfigsResponse) Reset() {
	*x = ListTelemetryConfigsResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[49]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListTelemetryConfigsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListTelemetryConfigsResponse) ProtoMessage() {}

func (x *ListTelemetryConfigsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[49]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListTelemetryConfigsResponse.ProtoReflect.Descriptor instead.
func (*ListTelemetryConfigsResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{49}
}

func (x *ListTelemetryConfigsResponse) GetConfigs() []*TelemetryForwardingConfig {
	if x != nil {
		return x.Configs
	}
	return nil
}

func (x *ListTelemetryConfigsResponse) GetTotal() int32 {
	if x != nil {
		return x.Total
	}
	return 0
}

type GetTelemetryConfigRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Forwarding config ID to fetch.
	Id            string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetTelemetryConfigRequest) Reset() {
	*x = GetTelemetryConfigRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[50]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetTelemetryConfigRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetTelemetryConfigRequest) ProtoMessage() {}

func (x *GetTelemetryConfigRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[50]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetTelemetryConfigRequest.ProtoReflect.Descriptor instead.
func (*GetTelemetryConfigRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{50}
}

func (x *GetTelemetryConfigRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

type GetTelemetryConfigResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The requested forwarding config.
	Config        *TelemetryForwardingConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetTelemetryConfigResponse) Reset() {
	*x = GetTelemetryConfigResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[51]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetTelemetryConfigResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetTelemetryConfigResponse) ProtoMessage() {}

func (x *GetTelemetryConfigResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[51]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetTelemetryConfigResponse.ProtoReflect.Descriptor instead.
func (*GetTelemetryConfigResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{51}
}

func (x *GetTelemetryConfigResponse) GetConfig() *TelemetryForwardingConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

type UpdateTelemetryConfigRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Forwarding config ID to update.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// New sink URL; unset leaves it unchanged.
	SinkUrl *string `protobuf:"bytes,2,opt,name=sink_url,json=sinkUrl,proto3,oneof" json:"sink_url,omitempty"`
	// New OTLP protocol; unset leaves it unchanged.
	Protocol *string `protobuf:"bytes,3,opt,name=protocol,proto3,oneof" json:"protocol,omitempty"`
	// New auth scheme; unset leaves it unchanged.
	AuthType  *string `protobuf:"bytes,4,opt,name=auth_type,json=authType,proto3,oneof" json:"auth_type,omitempty"`
	AuthValue *string `protobuf:"bytes,5,opt,name=auth_value,json=authValue,proto3,oneof" json:"auth_value,omitempty"` // Plain text auth value to be encrypted
	// New API key header name; unset leaves it unchanged.
	ApiKeyHeader *string `protobuf:"bytes,6,opt,name=api_key_header,json=apiKeyHeader,proto3,oneof" json:"api_key_header,omitempty"`
	// New enabled flag; unset leaves it unchanged.
	Enabled *bool `protobuf:"varint,7,opt,name=enabled,proto3,oneof" json:"enabled,omitempty"`
	// Override the connection status (connected/disconnected/error/testing).
	Status        *string `protobuf:"bytes,8,opt,name=status,proto3,oneof" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateTelemetryConfigRequest) Reset() {
	*x = UpdateTelemetryConfigRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[52]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateTelemetryConfigRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateTelemetryConfigRequest) ProtoMessage() {}

func (x *UpdateTelemetryConfigRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[52]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateTelemetryConfigRequest.ProtoReflect.Descriptor instead.
func (*UpdateTelemetryConfigRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{52}
}

func (x *UpdateTelemetryConfigRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *UpdateTelemetryConfigRequest) GetSinkUrl() string {
	if x != nil && x.SinkUrl != nil {
		return *x.SinkUrl
	}
	return ""
}

func (x *UpdateTelemetryConfigRequest) GetProtocol() string {
	if x != nil && x.Protocol != nil {
		return *x.Protocol
	}
	return ""
}

func (x *UpdateTelemetryConfigRequest) GetAuthType() string {
	if x != nil && x.AuthType != nil {
		return *x.AuthType
	}
	return ""
}

func (x *UpdateTelemetryConfigRequest) GetAuthValue() string {
	if x != nil && x.AuthValue != nil {
		return *x.AuthValue
	}
	return ""
}

func (x *UpdateTelemetryConfigRequest) GetApiKeyHeader() string {
	if x != nil && x.ApiKeyHeader != nil {
		return *x.ApiKeyHeader
	}
	return ""
}

func (x *UpdateTelemetryConfigRequest) GetEnabled() bool {
	if x != nil && x.Enabled != nil {
		return *x.Enabled
	}
	return false
}

func (x *UpdateTelemetryConfigRequest) GetStatus() string {
	if x != nil && x.Status != nil {
		return *x.Status
	}
	return ""
}

type UpdateTelemetryConfigResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The updated forwarding config.
	Config        *TelemetryForwardingConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateTelemetryConfigResponse) Reset() {
	*x = UpdateTelemetryConfigResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[53]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateTelemetryConfigResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateTelemetryConfigResponse) ProtoMessage() {}

func (x *UpdateTelemetryConfigResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[53]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateTelemetryConfigResponse.ProtoReflect.Descriptor instead.
func (*UpdateTelemetryConfigResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{53}
}

func (x *UpdateTelemetryConfigResponse) GetConfig() *TelemetryForwardingConfig {
	if x != nil {
		return x.Config
	}
	return nil
}

type DeleteTelemetryConfigRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Forwarding config ID to delete.
	Id            string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeleteTelemetryConfigRequest) Reset() {
	*x = DeleteTelemetryConfigRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[54]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DeleteTelemetryConfigRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteTelemetryConfigRequest) ProtoMessage() {}

func (x *DeleteTelemetryConfigRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[54]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeleteTelemetryConfigRequest.ProtoReflect.Descriptor instead.
func (*DeleteTelemetryConfigRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{54}
}

func (x *DeleteTelemetryConfigRequest) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

type DeleteTelemetryConfigResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// True if the config was deleted.
	Success       bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeleteTelemetryConfigResponse) Reset() {
	*x = DeleteTelemetryConfigResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[55]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DeleteTelemetryConfigResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteTelemetryConfigResponse) ProtoMessage() {}

func (x *DeleteTelemetryConfigResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[55]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeleteTelemetryConfigResponse.ProtoReflect.Descriptor instead.
func (*DeleteTelemetryConfigResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{55}
}

func (x *DeleteTelemetryConfigResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

type Customer struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Server-generated customer UUID (primary key).
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Customer slug, unique across the deployment.
	CustomerId string `protobuf:"bytes,2,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Human-readable display name.
	Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"`
	// Free-text description.
	Description *string `protobuf:"bytes,4,opt,name=description,proto3,oneof" json:"description,omitempty"`
	// User-defined key/value labels.
	Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// Creation timestamp.
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Last-modification timestamp.
	UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	// Soft-delete timestamp; unset while active.
	DeletedAt     *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=deleted_at,json=deletedAt,proto3,oneof" json:"deleted_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Customer) Reset() {
	*x = Customer{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[56]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Customer) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Customer) ProtoMessage() {}

func (x *Customer) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[56]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Customer.ProtoReflect.Descriptor instead.
func (*Customer) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{56}
}

func (x *Customer) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Customer) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *Customer) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *Customer) GetDescription() string {
	if x != nil && x.Description != nil {
		return *x.Description
	}
	return ""
}

func (x *Customer) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

func (x *Customer) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *Customer) GetUpdatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdatedAt
	}
	return nil
}

func (x *Customer) GetDeletedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.DeletedAt
	}
	return nil
}

type CreateCustomerRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Caller-chosen customer slug, unique across the deployment.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Optional display name.
	Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"`
	// Optional description.
	Description *string `protobuf:"bytes,3,opt,name=description,proto3,oneof" json:"description,omitempty"`
	// Optional user-defined labels.
	Labels        map[string]string `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateCustomerRequest) Reset() {
	*x = CreateCustomerRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[57]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateCustomerRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateCustomerRequest) ProtoMessage() {}

func (x *CreateCustomerRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[57]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateCustomerRequest.ProtoReflect.Descriptor instead.
func (*CreateCustomerRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{57}
}

func (x *CreateCustomerRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *CreateCustomerRequest) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *CreateCustomerRequest) GetDescription() string {
	if x != nil && x.Description != nil {
		return *x.Description
	}
	return ""
}

func (x *CreateCustomerRequest) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

type CreateCustomerResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The newly created customer.
	Customer      *Customer `protobuf:"bytes,1,opt,name=customer,proto3" json:"customer,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateCustomerResponse) Reset() {
	*x = CreateCustomerResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[58]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateCustomerResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateCustomerResponse) ProtoMessage() {}

func (x *CreateCustomerResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[58]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateCustomerResponse.ProtoReflect.Descriptor instead.
func (*CreateCustomerResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{58}
}

func (x *CreateCustomerResponse) GetCustomer() *Customer {
	if x != nil {
		return x.Customer
	}
	return nil
}

type ListCustomersRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Max results per page (0 = server default).
	PageSize *int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3,oneof" json:"page_size,omitempty"`
	// Opaque pagination cursor from a prior response.
	PageToken     *string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3,oneof" json:"page_token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListCustomersRequest) Reset() {
	*x = ListCustomersRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[59]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListCustomersRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListCustomersRequest) ProtoMessage() {}

func (x *ListCustomersRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[59]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListCustomersRequest.ProtoReflect.Descriptor instead.
func (*ListCustomersRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{59}
}

func (x *ListCustomersRequest) GetPageSize() int32 {
	if x != nil && x.PageSize != nil {
		return *x.PageSize
	}
	return 0
}

func (x *ListCustomersRequest) GetPageToken() string {
	if x != nil && x.PageToken != nil {
		return *x.PageToken
	}
	return ""
}

type ListCustomersResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Page of customers.
	Customers []*Customer `protobuf:"bytes,1,rep,name=customers,proto3" json:"customers,omitempty"`
	// Cursor for the next page; empty when exhausted.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListCustomersResponse) Reset() {
	*x = ListCustomersResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[60]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListCustomersResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListCustomersResponse) ProtoMessage() {}

func (x *ListCustomersResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[60]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListCustomersResponse.ProtoReflect.Descriptor instead.
func (*ListCustomersResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{60}
}

func (x *ListCustomersResponse) GetCustomers() []*Customer {
	if x != nil {
		return x.Customers
	}
	return nil
}

func (x *ListCustomersResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

type GetCustomerRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Customer slug to fetch.
	CustomerId    string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetCustomerRequest) Reset() {
	*x = GetCustomerRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[61]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetCustomerRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetCustomerRequest) ProtoMessage() {}

func (x *GetCustomerRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[61]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetCustomerRequest.ProtoReflect.Descriptor instead.
func (*GetCustomerRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{61}
}

func (x *GetCustomerRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

type GetCustomerResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The requested customer.
	Customer      *Customer `protobuf:"bytes,1,opt,name=customer,proto3" json:"customer,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetCustomerResponse) Reset() {
	*x = GetCustomerResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[62]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetCustomerResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetCustomerResponse) ProtoMessage() {}

func (x *GetCustomerResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[62]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetCustomerResponse.ProtoReflect.Descriptor instead.
func (*GetCustomerResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{62}
}

func (x *GetCustomerResponse) GetCustomer() *Customer {
	if x != nil {
		return x.Customer
	}
	return nil
}

type UpdateCustomerRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Customer slug to update.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// New display name; unset leaves it unchanged.
	Name *string `protobuf:"bytes,2,opt,name=name,proto3,oneof" json:"name,omitempty"`
	// New description; unset leaves it unchanged.
	Description *string `protobuf:"bytes,3,opt,name=description,proto3,oneof" json:"description,omitempty"`
	// Replacement set of labels.
	Labels        map[string]string `protobuf:"bytes,4,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateCustomerRequest) Reset() {
	*x = UpdateCustomerRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[63]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateCustomerRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateCustomerRequest) ProtoMessage() {}

func (x *UpdateCustomerRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[63]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateCustomerRequest.ProtoReflect.Descriptor instead.
func (*UpdateCustomerRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{63}
}

func (x *UpdateCustomerRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *UpdateCustomerRequest) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *UpdateCustomerRequest) GetDescription() string {
	if x != nil && x.Description != nil {
		return *x.Description
	}
	return ""
}

func (x *UpdateCustomerRequest) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

type UpdateCustomerResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The updated customer.
	Customer      *Customer `protobuf:"bytes,1,opt,name=customer,proto3" json:"customer,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateCustomerResponse) Reset() {
	*x = UpdateCustomerResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[64]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateCustomerResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateCustomerResponse) ProtoMessage() {}

func (x *UpdateCustomerResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[64]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateCustomerResponse.ProtoReflect.Descriptor instead.
func (*UpdateCustomerResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{64}
}

func (x *UpdateCustomerResponse) GetCustomer() *Customer {
	if x != nil {
		return x.Customer
	}
	return nil
}

type DeleteCustomerRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Customer slug to soft-delete.
	CustomerId    string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeleteCustomerRequest) Reset() {
	*x = DeleteCustomerRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[65]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DeleteCustomerRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteCustomerRequest) ProtoMessage() {}

func (x *DeleteCustomerRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[65]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeleteCustomerRequest.ProtoReflect.Descriptor instead.
func (*DeleteCustomerRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{65}
}

func (x *DeleteCustomerRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

type DeleteCustomerResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// True if the customer was deleted.
	Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	// When the soft delete took effect.
	DeletedAt     *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeleteCustomerResponse) Reset() {
	*x = DeleteCustomerResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[66]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DeleteCustomerResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteCustomerResponse) ProtoMessage() {}

func (x *DeleteCustomerResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[66]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeleteCustomerResponse.ProtoReflect.Descriptor instead.
func (*DeleteCustomerResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{66}
}

func (x *DeleteCustomerResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *DeleteCustomerResponse) GetDeletedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.DeletedAt
	}
	return nil
}

type Project struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Server-generated project UUID (primary key).
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,2,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project slug, unique within the customer.
	ProjectId string `protobuf:"bytes,3,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Human-readable display name.
	Name *string `protobuf:"bytes,4,opt,name=name,proto3,oneof" json:"name,omitempty"`
	// Free-text description.
	Description *string `protobuf:"bytes,5,opt,name=description,proto3,oneof" json:"description,omitempty"`
	// User-defined key/value labels.
	Labels map[string]string `protobuf:"bytes,6,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// Creation timestamp.
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Last-modification timestamp.
	UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	// Soft-delete timestamp; unset while active.
	DeletedAt     *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=deleted_at,json=deletedAt,proto3,oneof" json:"deleted_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Project) Reset() {
	*x = Project{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[67]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Project) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Project) ProtoMessage() {}

func (x *Project) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[67]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Project.ProtoReflect.Descriptor instead.
func (*Project) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{67}
}

func (x *Project) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Project) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *Project) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *Project) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *Project) GetDescription() string {
	if x != nil && x.Description != nil {
		return *x.Description
	}
	return ""
}

func (x *Project) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

func (x *Project) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *Project) GetUpdatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdatedAt
	}
	return nil
}

func (x *Project) GetDeletedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.DeletedAt
	}
	return nil
}

type CreateProjectRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Customer slug that will own the project.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Caller-chosen project slug, unique within the customer.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Optional display name.
	Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"`
	// Optional description.
	Description *string `protobuf:"bytes,4,opt,name=description,proto3,oneof" json:"description,omitempty"`
	// Optional user-defined labels.
	Labels        map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateProjectRequest) Reset() {
	*x = CreateProjectRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[68]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateProjectRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateProjectRequest) ProtoMessage() {}

func (x *CreateProjectRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[68]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateProjectRequest.ProtoReflect.Descriptor instead.
func (*CreateProjectRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{68}
}

func (x *CreateProjectRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *CreateProjectRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *CreateProjectRequest) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *CreateProjectRequest) GetDescription() string {
	if x != nil && x.Description != nil {
		return *x.Description
	}
	return ""
}

func (x *CreateProjectRequest) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

type CreateProjectResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The newly created project.
	Project       *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CreateProjectResponse) Reset() {
	*x = CreateProjectResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[69]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CreateProjectResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateProjectResponse) ProtoMessage() {}

func (x *CreateProjectResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[69]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateProjectResponse.ProtoReflect.Descriptor instead.
func (*CreateProjectResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{69}
}

func (x *CreateProjectResponse) GetProject() *Project {
	if x != nil {
		return x.Project
	}
	return nil
}

type ListProjectsRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Customer slug whose projects to list.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Max results per page (0 = server default).
	PageSize *int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3,oneof" json:"page_size,omitempty"`
	// Opaque pagination cursor from a prior response.
	PageToken     *string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3,oneof" json:"page_token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListProjectsRequest) Reset() {
	*x = ListProjectsRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[70]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListProjectsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListProjectsRequest) ProtoMessage() {}

func (x *ListProjectsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[70]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListProjectsRequest.ProtoReflect.Descriptor instead.
func (*ListProjectsRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{70}
}

func (x *ListProjectsRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *ListProjectsRequest) GetPageSize() int32 {
	if x != nil && x.PageSize != nil {
		return *x.PageSize
	}
	return 0
}

func (x *ListProjectsRequest) GetPageToken() string {
	if x != nil && x.PageToken != nil {
		return *x.PageToken
	}
	return ""
}

type ListProjectsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Page of projects.
	Projects []*Project `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"`
	// Cursor for the next page; empty when exhausted.
	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListProjectsResponse) Reset() {
	*x = ListProjectsResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[71]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListProjectsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListProjectsResponse) ProtoMessage() {}

func (x *ListProjectsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[71]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListProjectsResponse.ProtoReflect.Descriptor instead.
func (*ListProjectsResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{71}
}

func (x *ListProjectsResponse) GetProjects() []*Project {
	if x != nil {
		return x.Projects
	}
	return nil
}

func (x *ListProjectsResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

type GetProjectRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project slug to fetch.
	ProjectId     string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetProjectRequest) Reset() {
	*x = GetProjectRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[72]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetProjectRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetProjectRequest) ProtoMessage() {}

func (x *GetProjectRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[72]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetProjectRequest.ProtoReflect.Descriptor instead.
func (*GetProjectRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{72}
}

func (x *GetProjectRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *GetProjectRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

type GetProjectResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The requested project.
	Project       *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetProjectResponse) Reset() {
	*x = GetProjectResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[73]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetProjectResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetProjectResponse) ProtoMessage() {}

func (x *GetProjectResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[73]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetProjectResponse.ProtoReflect.Descriptor instead.
func (*GetProjectResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{73}
}

func (x *GetProjectResponse) GetProject() *Project {
	if x != nil {
		return x.Project
	}
	return nil
}

type UpdateProjectRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project slug to update.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// New display name; unset leaves it unchanged.
	Name *string `protobuf:"bytes,3,opt,name=name,proto3,oneof" json:"name,omitempty"`
	// New description; unset leaves it unchanged.
	Description *string `protobuf:"bytes,4,opt,name=description,proto3,oneof" json:"description,omitempty"`
	// Replacement set of labels.
	Labels        map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateProjectRequest) Reset() {
	*x = UpdateProjectRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[74]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateProjectRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateProjectRequest) ProtoMessage() {}

func (x *UpdateProjectRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[74]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateProjectRequest.ProtoReflect.Descriptor instead.
func (*UpdateProjectRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{74}
}

func (x *UpdateProjectRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *UpdateProjectRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *UpdateProjectRequest) GetName() string {
	if x != nil && x.Name != nil {
		return *x.Name
	}
	return ""
}

func (x *UpdateProjectRequest) GetDescription() string {
	if x != nil && x.Description != nil {
		return *x.Description
	}
	return ""
}

func (x *UpdateProjectRequest) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

type UpdateProjectResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The updated project.
	Project       *Project `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateProjectResponse) Reset() {
	*x = UpdateProjectResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[75]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateProjectResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateProjectResponse) ProtoMessage() {}

func (x *UpdateProjectResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[75]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateProjectResponse.ProtoReflect.Descriptor instead.
func (*UpdateProjectResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{75}
}

func (x *UpdateProjectResponse) GetProject() *Project {
	if x != nil {
		return x.Project
	}
	return nil
}

type DeleteProjectRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project slug to soft-delete.
	ProjectId     string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeleteProjectRequest) Reset() {
	*x = DeleteProjectRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[76]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DeleteProjectRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteProjectRequest) ProtoMessage() {}

func (x *DeleteProjectRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[76]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeleteProjectRequest.ProtoReflect.Descriptor instead.
func (*DeleteProjectRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{76}
}

func (x *DeleteProjectRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *DeleteProjectRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

type DeleteProjectResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// True if the project was deleted.
	Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	// When the soft delete took effect.
	DeletedAt     *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=deleted_at,json=deletedAt,proto3" json:"deleted_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeleteProjectResponse) Reset() {
	*x = DeleteProjectResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[77]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DeleteProjectResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteProjectResponse) ProtoMessage() {}

func (x *DeleteProjectResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[77]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeleteProjectResponse.ProtoReflect.Descriptor instead.
func (*DeleteProjectResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{77}
}

func (x *DeleteProjectResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

func (x *DeleteProjectResponse) GetDeletedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.DeletedAt
	}
	return nil
}

type ProjectMember struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Membership row UUID.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,2,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project the membership belongs to.
	ProjectId string `protobuf:"bytes,3,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// The member's user ID.
	UserId string `protobuf:"bytes,4,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	// The member's role in the project ("admin" or "member").
	Role string `protobuf:"bytes,5,opt,name=role,proto3" json:"role,omitempty"`
	// When the member was added.
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// When the membership was last modified.
	UpdatedAt     *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ProjectMember) Reset() {
	*x = ProjectMember{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[78]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ProjectMember) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProjectMember) ProtoMessage() {}

func (x *ProjectMember) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[78]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ProjectMember.ProtoReflect.Descriptor instead.
func (*ProjectMember) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{78}
}

func (x *ProjectMember) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ProjectMember) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *ProjectMember) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *ProjectMember) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *ProjectMember) GetRole() string {
	if x != nil {
		return x.Role
	}
	return ""
}

func (x *ProjectMember) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

func (x *ProjectMember) GetUpdatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdatedAt
	}
	return nil
}

type AddProjectMemberRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project to add the member to.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// User ID to add as a member.
	UserId string `protobuf:"bytes,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	// Role to grant: "admin" or "member".
	Role          string `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AddProjectMemberRequest) Reset() {
	*x = AddProjectMemberRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[79]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddProjectMemberRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddProjectMemberRequest) ProtoMessage() {}

func (x *AddProjectMemberRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[79]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AddProjectMemberRequest.ProtoReflect.Descriptor instead.
func (*AddProjectMemberRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{79}
}

func (x *AddProjectMemberRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *AddProjectMemberRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *AddProjectMemberRequest) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *AddProjectMemberRequest) GetRole() string {
	if x != nil {
		return x.Role
	}
	return ""
}

type AddProjectMemberResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The created membership.
	Member        *ProjectMember `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AddProjectMemberResponse) Reset() {
	*x = AddProjectMemberResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[80]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddProjectMemberResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddProjectMemberResponse) ProtoMessage() {}

func (x *AddProjectMemberResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[80]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AddProjectMemberResponse.ProtoReflect.Descriptor instead.
func (*AddProjectMemberResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{80}
}

func (x *AddProjectMemberResponse) GetMember() *ProjectMember {
	if x != nil {
		return x.Member
	}
	return nil
}

type ListProjectMembersRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project whose members to list.
	ProjectId     string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListProjectMembersRequest) Reset() {
	*x = ListProjectMembersRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[81]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListProjectMembersRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListProjectMembersRequest) ProtoMessage() {}

func (x *ListProjectMembersRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[81]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListProjectMembersRequest.ProtoReflect.Descriptor instead.
func (*ListProjectMembersRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{81}
}

func (x *ListProjectMembersRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *ListProjectMembersRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

type ListProjectMembersResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// All members of the project.
	Members       []*ProjectMember `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListProjectMembersResponse) Reset() {
	*x = ListProjectMembersResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[82]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListProjectMembersResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListProjectMembersResponse) ProtoMessage() {}

func (x *ListProjectMembersResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[82]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListProjectMembersResponse.ProtoReflect.Descriptor instead.
func (*ListProjectMembersResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{82}
}

func (x *ListProjectMembersResponse) GetMembers() []*ProjectMember {
	if x != nil {
		return x.Members
	}
	return nil
}

type UpdateProjectMemberRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project the member belongs to.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// User ID of the member to update.
	UserId string `protobuf:"bytes,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	// New role: "admin" or "member".
	Role          string `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateProjectMemberRequest) Reset() {
	*x = UpdateProjectMemberRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[83]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateProjectMemberRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateProjectMemberRequest) ProtoMessage() {}

func (x *UpdateProjectMemberRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[83]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateProjectMemberRequest.ProtoReflect.Descriptor instead.
func (*UpdateProjectMemberRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{83}
}

func (x *UpdateProjectMemberRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *UpdateProjectMemberRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *UpdateProjectMemberRequest) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *UpdateProjectMemberRequest) GetRole() string {
	if x != nil {
		return x.Role
	}
	return ""
}

type UpdateProjectMemberResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The updated membership.
	Member        *ProjectMember `protobuf:"bytes,1,opt,name=member,proto3" json:"member,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpdateProjectMemberResponse) Reset() {
	*x = UpdateProjectMemberResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[84]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpdateProjectMemberResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpdateProjectMemberResponse) ProtoMessage() {}

func (x *UpdateProjectMemberResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[84]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpdateProjectMemberResponse.ProtoReflect.Descriptor instead.
func (*UpdateProjectMemberResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{84}
}

func (x *UpdateProjectMemberResponse) GetMember() *ProjectMember {
	if x != nil {
		return x.Member
	}
	return nil
}

type RemoveProjectMemberRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project to remove the member from.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// User ID of the member to remove.
	UserId        string `protobuf:"bytes,3,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RemoveProjectMemberRequest) Reset() {
	*x = RemoveProjectMemberRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[85]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RemoveProjectMemberRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveProjectMemberRequest) ProtoMessage() {}

func (x *RemoveProjectMemberRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[85]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RemoveProjectMemberRequest.ProtoReflect.Descriptor instead.
func (*RemoveProjectMemberRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{85}
}

func (x *RemoveProjectMemberRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *RemoveProjectMemberRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *RemoveProjectMemberRequest) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

type RemoveProjectMemberResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// True if the member was removed.
	Success       bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RemoveProjectMemberResponse) Reset() {
	*x = RemoveProjectMemberResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[86]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RemoveProjectMemberResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveProjectMemberResponse) ProtoMessage() {}

func (x *RemoveProjectMemberResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[86]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RemoveProjectMemberResponse.ProtoReflect.Descriptor instead.
func (*RemoveProjectMemberResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{86}
}

func (x *RemoveProjectMemberResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

type AIModel struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Catalog entry UUID.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Provider-facing model identifier (e.g. "gpt-4o").
	Model string `protobuf:"bytes,2,opt,name=model,proto3" json:"model,omitempty"`
	// Provider that serves this model (e.g. "openai", "anthropic").
	Provider string `protobuf:"bytes,3,opt,name=provider,proto3" json:"provider,omitempty"`
	// Optional mode/modality (e.g. "chat", "embedding").
	Mode *string `protobuf:"bytes,4,opt,name=mode,proto3,oneof" json:"mode,omitempty"`
	// Whether the model is currently enabled in the catalog.
	IsEnabled bool `protobuf:"varint,5,opt,name=is_enabled,json=isEnabled,proto3" json:"is_enabled,omitempty"`
	// Input token price per million tokens.
	InputPricePerMillion float64 `protobuf:"fixed64,6,opt,name=input_price_per_million,json=inputPricePerMillion,proto3" json:"input_price_per_million,omitempty"`
	// Output token price per million tokens.
	OutputPricePerMillion float64 `protobuf:"fixed64,7,opt,name=output_price_per_million,json=outputPricePerMillion,proto3" json:"output_price_per_million,omitempty"`
	// Maximum context window in tokens.
	ContextWindow int32 `protobuf:"varint,8,opt,name=context_window,json=contextWindow,proto3" json:"context_window,omitempty"`
	// Supported capability tags (e.g. "vision", "tools").
	Capabilities  []string `protobuf:"bytes,9,rep,name=capabilities,proto3" json:"capabilities,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AIModel) Reset() {
	*x = AIModel{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[87]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AIModel) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AIModel) ProtoMessage() {}

func (x *AIModel) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[87]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AIModel.ProtoReflect.Descriptor instead.
func (*AIModel) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{87}
}

func (x *AIModel) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *AIModel) GetModel() string {
	if x != nil {
		return x.Model
	}
	return ""
}

func (x *AIModel) GetProvider() string {
	if x != nil {
		return x.Provider
	}
	return ""
}

func (x *AIModel) GetMode() string {
	if x != nil && x.Mode != nil {
		return *x.Mode
	}
	return ""
}

func (x *AIModel) GetIsEnabled() bool {
	if x != nil {
		return x.IsEnabled
	}
	return false
}

func (x *AIModel) GetInputPricePerMillion() float64 {
	if x != nil {
		return x.InputPricePerMillion
	}
	return 0
}

func (x *AIModel) GetOutputPricePerMillion() float64 {
	if x != nil {
		return x.OutputPricePerMillion
	}
	return 0
}

func (x *AIModel) GetContextWindow() int32 {
	if x != nil {
		return x.ContextWindow
	}
	return 0
}

func (x *AIModel) GetCapabilities() []string {
	if x != nil {
		return x.Capabilities
	}
	return nil
}

type ListModelsRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// If true, return only enabled models.
	OnlyEnabled   bool `protobuf:"varint,1,opt,name=only_enabled,json=onlyEnabled,proto3" json:"only_enabled,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListModelsRequest) Reset() {
	*x = ListModelsRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[88]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListModelsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListModelsRequest) ProtoMessage() {}

func (x *ListModelsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[88]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListModelsRequest.ProtoReflect.Descriptor instead.
func (*ListModelsRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{88}
}

func (x *ListModelsRequest) GetOnlyEnabled() bool {
	if x != nil {
		return x.OnlyEnabled
	}
	return false
}

type ListModelsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Catalog models matching the request.
	Models        []*AIModel `protobuf:"bytes,1,rep,name=models,proto3" json:"models,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListModelsResponse) Reset() {
	*x = ListModelsResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[89]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListModelsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListModelsResponse) ProtoMessage() {}

func (x *ListModelsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[89]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListModelsResponse.ProtoReflect.Descriptor instead.
func (*ListModelsResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{89}
}

func (x *ListModelsResponse) GetModels() []*AIModel {
	if x != nil {
		return x.Models
	}
	return nil
}

type GetModelRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Catalog entry UUID to fetch.
	ModelId       string `protobuf:"bytes,1,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetModelRequest) Reset() {
	*x = GetModelRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[90]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetModelRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetModelRequest) ProtoMessage() {}

func (x *GetModelRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[90]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetModelRequest.ProtoReflect.Descriptor instead.
func (*GetModelRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{90}
}

func (x *GetModelRequest) GetModelId() string {
	if x != nil {
		return x.ModelId
	}
	return ""
}

type GetModelResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The requested model.
	Model         *AIModel `protobuf:"bytes,1,opt,name=model,proto3" json:"model,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetModelResponse) Reset() {
	*x = GetModelResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[91]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetModelResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetModelResponse) ProtoMessage() {}

func (x *GetModelResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[91]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetModelResponse.ProtoReflect.Descriptor instead.
func (*GetModelResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{91}
}

func (x *GetModelResponse) GetModel() *AIModel {
	if x != nil {
		return x.Model
	}
	return nil
}

type ProjectModelEntry struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Assignment row UUID.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,2,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project the model is assigned to.
	ProjectId string `protobuf:"bytes,3,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Catalog model UUID assigned to the project.
	ModelId string `protobuf:"bytes,4,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"`
	// Full catalog details of the assigned model.
	Model *AIModel `protobuf:"bytes,5,opt,name=model,proto3" json:"model,omitempty"`
	// When the model was assigned.
	CreatedAt     *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ProjectModelEntry) Reset() {
	*x = ProjectModelEntry{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[92]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ProjectModelEntry) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProjectModelEntry) ProtoMessage() {}

func (x *ProjectModelEntry) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[92]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ProjectModelEntry.ProtoReflect.Descriptor instead.
func (*ProjectModelEntry) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{92}
}

func (x *ProjectModelEntry) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ProjectModelEntry) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *ProjectModelEntry) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *ProjectModelEntry) GetModelId() string {
	if x != nil {
		return x.ModelId
	}
	return ""
}

func (x *ProjectModelEntry) GetModel() *AIModel {
	if x != nil {
		return x.Model
	}
	return nil
}

func (x *ProjectModelEntry) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

type AddProjectModelRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project to assign the model to.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Catalog model UUID to assign.
	ModelId       string `protobuf:"bytes,3,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AddProjectModelRequest) Reset() {
	*x = AddProjectModelRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[93]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddProjectModelRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddProjectModelRequest) ProtoMessage() {}

func (x *AddProjectModelRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[93]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AddProjectModelRequest.ProtoReflect.Descriptor instead.
func (*AddProjectModelRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{93}
}

func (x *AddProjectModelRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *AddProjectModelRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *AddProjectModelRequest) GetModelId() string {
	if x != nil {
		return x.ModelId
	}
	return ""
}

type AddProjectModelResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The created model assignment.
	Entry         *ProjectModelEntry `protobuf:"bytes,1,opt,name=entry,proto3" json:"entry,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AddProjectModelResponse) Reset() {
	*x = AddProjectModelResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[94]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddProjectModelResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddProjectModelResponse) ProtoMessage() {}

func (x *AddProjectModelResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[94]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AddProjectModelResponse.ProtoReflect.Descriptor instead.
func (*AddProjectModelResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{94}
}

func (x *AddProjectModelResponse) GetEntry() *ProjectModelEntry {
	if x != nil {
		return x.Entry
	}
	return nil
}

type ListProjectModelsRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project whose assigned models to list.
	ProjectId     string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListProjectModelsRequest) Reset() {
	*x = ListProjectModelsRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[95]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListProjectModelsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListProjectModelsRequest) ProtoMessage() {}

func (x *ListProjectModelsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[95]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListProjectModelsRequest.ProtoReflect.Descriptor instead.
func (*ListProjectModelsRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{95}
}

func (x *ListProjectModelsRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *ListProjectModelsRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

type ListProjectModelsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Models assigned to the project.
	Entries       []*ProjectModelEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListProjectModelsResponse) Reset() {
	*x = ListProjectModelsResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[96]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListProjectModelsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListProjectModelsResponse) ProtoMessage() {}

func (x *ListProjectModelsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[96]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListProjectModelsResponse.ProtoReflect.Descriptor instead.
func (*ListProjectModelsResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{96}
}

func (x *ListProjectModelsResponse) GetEntries() []*ProjectModelEntry {
	if x != nil {
		return x.Entries
	}
	return nil
}

type RemoveProjectModelRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project to remove the model from.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Catalog model UUID to unassign.
	ModelId       string `protobuf:"bytes,3,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RemoveProjectModelRequest) Reset() {
	*x = RemoveProjectModelRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[97]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RemoveProjectModelRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveProjectModelRequest) ProtoMessage() {}

func (x *RemoveProjectModelRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[97]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RemoveProjectModelRequest.ProtoReflect.Descriptor instead.
func (*RemoveProjectModelRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{97}
}

func (x *RemoveProjectModelRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *RemoveProjectModelRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *RemoveProjectModelRequest) GetModelId() string {
	if x != nil {
		return x.ModelId
	}
	return ""
}

type RemoveProjectModelResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// True if the assignment was removed.
	Success       bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RemoveProjectModelResponse) Reset() {
	*x = RemoveProjectModelResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[98]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RemoveProjectModelResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveProjectModelResponse) ProtoMessage() {}

func (x *RemoveProjectModelResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[98]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RemoveProjectModelResponse.ProtoReflect.Descriptor instead.
func (*RemoveProjectModelResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{98}
}

func (x *RemoveProjectModelResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

type ProjectProviderEntry struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Assignment row UUID.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,2,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project the provider is enabled for.
	ProjectId string `protobuf:"bytes,3,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Provider name enabled for the project (e.g. "openai").
	ProviderName string `protobuf:"bytes,4,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"`
	// When the provider was assigned.
	CreatedAt     *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ProjectProviderEntry) Reset() {
	*x = ProjectProviderEntry{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[99]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ProjectProviderEntry) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProjectProviderEntry) ProtoMessage() {}

func (x *ProjectProviderEntry) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[99]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ProjectProviderEntry.ProtoReflect.Descriptor instead.
func (*ProjectProviderEntry) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{99}
}

func (x *ProjectProviderEntry) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ProjectProviderEntry) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *ProjectProviderEntry) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *ProjectProviderEntry) GetProviderName() string {
	if x != nil {
		return x.ProviderName
	}
	return ""
}

func (x *ProjectProviderEntry) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

type AddProjectProviderRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project to enable the provider for.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Provider name to enable (e.g. "openai").
	ProviderName  string `protobuf:"bytes,3,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AddProjectProviderRequest) Reset() {
	*x = AddProjectProviderRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[100]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddProjectProviderRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddProjectProviderRequest) ProtoMessage() {}

func (x *AddProjectProviderRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[100]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AddProjectProviderRequest.ProtoReflect.Descriptor instead.
func (*AddProjectProviderRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{100}
}

func (x *AddProjectProviderRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *AddProjectProviderRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *AddProjectProviderRequest) GetProviderName() string {
	if x != nil {
		return x.ProviderName
	}
	return ""
}

type AddProjectProviderResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The created provider assignment.
	Entry         *ProjectProviderEntry `protobuf:"bytes,1,opt,name=entry,proto3" json:"entry,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AddProjectProviderResponse) Reset() {
	*x = AddProjectProviderResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[101]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddProjectProviderResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddProjectProviderResponse) ProtoMessage() {}

func (x *AddProjectProviderResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[101]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AddProjectProviderResponse.ProtoReflect.Descriptor instead.
func (*AddProjectProviderResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{101}
}

func (x *AddProjectProviderResponse) GetEntry() *ProjectProviderEntry {
	if x != nil {
		return x.Entry
	}
	return nil
}

type ListProjectProvidersRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project whose enabled providers to list.
	ProjectId     string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListProjectProvidersRequest) Reset() {
	*x = ListProjectProvidersRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[102]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListProjectProvidersRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListProjectProvidersRequest) ProtoMessage() {}

func (x *ListProjectProvidersRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[102]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListProjectProvidersRequest.ProtoReflect.Descriptor instead.
func (*ListProjectProvidersRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{102}
}

func (x *ListProjectProvidersRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *ListProjectProvidersRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

type ListProjectProvidersResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Providers enabled for the project.
	Entries       []*ProjectProviderEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListProjectProvidersResponse) Reset() {
	*x = ListProjectProvidersResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[103]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListProjectProvidersResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListProjectProvidersResponse) ProtoMessage() {}

func (x *ListProjectProvidersResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[103]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListProjectProvidersResponse.ProtoReflect.Descriptor instead.
func (*ListProjectProvidersResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{103}
}

func (x *ListProjectProvidersResponse) GetEntries() []*ProjectProviderEntry {
	if x != nil {
		return x.Entries
	}
	return nil
}

type RemoveProjectProviderRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project to disable the provider for.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Provider name to disable.
	ProviderName  string `protobuf:"bytes,3,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RemoveProjectProviderRequest) Reset() {
	*x = RemoveProjectProviderRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[104]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RemoveProjectProviderRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveProjectProviderRequest) ProtoMessage() {}

func (x *RemoveProjectProviderRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[104]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RemoveProjectProviderRequest.ProtoReflect.Descriptor instead.
func (*RemoveProjectProviderRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{104}
}

func (x *RemoveProjectProviderRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *RemoveProjectProviderRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *RemoveProjectProviderRequest) GetProviderName() string {
	if x != nil {
		return x.ProviderName
	}
	return ""
}

type RemoveProjectProviderResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// True if the provider was removed.
	Success       bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RemoveProjectProviderResponse) Reset() {
	*x = RemoveProjectProviderResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[105]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RemoveProjectProviderResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveProjectProviderResponse) ProtoMessage() {}

func (x *RemoveProjectProviderResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[105]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RemoveProjectProviderResponse.ProtoReflect.Descriptor instead.
func (*RemoveProjectProviderResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{105}
}

func (x *RemoveProjectProviderResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

type ProjectMcpServerEntry struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Assignment row UUID.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,2,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project the MCP server is assigned to.
	ProjectId string `protobuf:"bytes,3,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Catalog server ID assigned to the project (e.g. "github").
	ServerId string `protobuf:"bytes,4,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"`
	// When the server was assigned.
	CreatedAt     *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ProjectMcpServerEntry) Reset() {
	*x = ProjectMcpServerEntry{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[106]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ProjectMcpServerEntry) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProjectMcpServerEntry) ProtoMessage() {}

func (x *ProjectMcpServerEntry) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[106]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ProjectMcpServerEntry.ProtoReflect.Descriptor instead.
func (*ProjectMcpServerEntry) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{106}
}

func (x *ProjectMcpServerEntry) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ProjectMcpServerEntry) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *ProjectMcpServerEntry) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *ProjectMcpServerEntry) GetServerId() string {
	if x != nil {
		return x.ServerId
	}
	return ""
}

func (x *ProjectMcpServerEntry) GetCreatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedAt
	}
	return nil
}

type AddProjectMcpServerRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project to assign the MCP server to.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Catalog server ID to assign (e.g. "github").
	ServerId      string `protobuf:"bytes,3,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AddProjectMcpServerRequest) Reset() {
	*x = AddProjectMcpServerRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[107]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddProjectMcpServerRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddProjectMcpServerRequest) ProtoMessage() {}

func (x *AddProjectMcpServerRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[107]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AddProjectMcpServerRequest.ProtoReflect.Descriptor instead.
func (*AddProjectMcpServerRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{107}
}

func (x *AddProjectMcpServerRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *AddProjectMcpServerRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *AddProjectMcpServerRequest) GetServerId() string {
	if x != nil {
		return x.ServerId
	}
	return ""
}

type AddProjectMcpServerResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The created MCP server assignment.
	Entry         *ProjectMcpServerEntry `protobuf:"bytes,1,opt,name=entry,proto3" json:"entry,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AddProjectMcpServerResponse) Reset() {
	*x = AddProjectMcpServerResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[108]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AddProjectMcpServerResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AddProjectMcpServerResponse) ProtoMessage() {}

func (x *AddProjectMcpServerResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[108]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AddProjectMcpServerResponse.ProtoReflect.Descriptor instead.
func (*AddProjectMcpServerResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{108}
}

func (x *AddProjectMcpServerResponse) GetEntry() *ProjectMcpServerEntry {
	if x != nil {
		return x.Entry
	}
	return nil
}

type ListProjectMcpServersRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project whose assigned MCP servers to list.
	ProjectId     string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListProjectMcpServersRequest) Reset() {
	*x = ListProjectMcpServersRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[109]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListProjectMcpServersRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListProjectMcpServersRequest) ProtoMessage() {}

func (x *ListProjectMcpServersRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[109]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListProjectMcpServersRequest.ProtoReflect.Descriptor instead.
func (*ListProjectMcpServersRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{109}
}

func (x *ListProjectMcpServersRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *ListProjectMcpServersRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

type ListProjectMcpServersResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// MCP servers assigned to the project.
	Entries       []*ProjectMcpServerEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListProjectMcpServersResponse) Reset() {
	*x = ListProjectMcpServersResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[110]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ListProjectMcpServersResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ListProjectMcpServersResponse) ProtoMessage() {}

func (x *ListProjectMcpServersResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[110]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ListProjectMcpServersResponse.ProtoReflect.Descriptor instead.
func (*ListProjectMcpServersResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{110}
}

func (x *ListProjectMcpServersResponse) GetEntries() []*ProjectMcpServerEntry {
	if x != nil {
		return x.Entries
	}
	return nil
}

type RemoveProjectMcpServerRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project to remove the MCP server from.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Catalog server ID to remove.
	ServerId      string `protobuf:"bytes,3,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RemoveProjectMcpServerRequest) Reset() {
	*x = RemoveProjectMcpServerRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[111]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RemoveProjectMcpServerRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveProjectMcpServerRequest) ProtoMessage() {}

func (x *RemoveProjectMcpServerRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[111]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RemoveProjectMcpServerRequest.ProtoReflect.Descriptor instead.
func (*RemoveProjectMcpServerRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{111}
}

func (x *RemoveProjectMcpServerRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *RemoveProjectMcpServerRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *RemoveProjectMcpServerRequest) GetServerId() string {
	if x != nil {
		return x.ServerId
	}
	return ""
}

type RemoveProjectMcpServerResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// True if the MCP server assignment was removed.
	Success       bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RemoveProjectMcpServerResponse) Reset() {
	*x = RemoveProjectMcpServerResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[112]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RemoveProjectMcpServerResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RemoveProjectMcpServerResponse) ProtoMessage() {}

func (x *RemoveProjectMcpServerResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[112]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RemoveProjectMcpServerResponse.ProtoReflect.Descriptor instead.
func (*RemoveProjectMcpServerResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{112}
}

func (x *RemoveProjectMcpServerResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

type ProjectSetting struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Setting key (e.g. "global-fallback", "rate-limit").
	SettingName string `protobuf:"bytes,1,opt,name=setting_name,json=settingName,proto3" json:"setting_name,omitempty"`
	// Setting value (string-encoded).
	SettingValue string `protobuf:"bytes,2,opt,name=setting_value,json=settingValue,proto3" json:"setting_value,omitempty"`
	// When the setting was last updated.
	UpdatedAt     *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ProjectSetting) Reset() {
	*x = ProjectSetting{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[113]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ProjectSetting) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProjectSetting) ProtoMessage() {}

func (x *ProjectSetting) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[113]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ProjectSetting.ProtoReflect.Descriptor instead.
func (*ProjectSetting) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{113}
}

func (x *ProjectSetting) GetSettingName() string {
	if x != nil {
		return x.SettingName
	}
	return ""
}

func (x *ProjectSetting) GetSettingValue() string {
	if x != nil {
		return x.SettingValue
	}
	return ""
}

func (x *ProjectSetting) GetUpdatedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdatedAt
	}
	return nil
}

type GetProjectSettingsRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project whose settings to fetch.
	ProjectId     string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetProjectSettingsRequest) Reset() {
	*x = GetProjectSettingsRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[114]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetProjectSettingsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetProjectSettingsRequest) ProtoMessage() {}

func (x *GetProjectSettingsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[114]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetProjectSettingsRequest.ProtoReflect.Descriptor instead.
func (*GetProjectSettingsRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{114}
}

func (x *GetProjectSettingsRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *GetProjectSettingsRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

type GetProjectSettingsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// All settings for the project.
	Settings      []*ProjectSetting `protobuf:"bytes,1,rep,name=settings,proto3" json:"settings,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetProjectSettingsResponse) Reset() {
	*x = GetProjectSettingsResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[115]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GetProjectSettingsResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetProjectSettingsResponse) ProtoMessage() {}

func (x *GetProjectSettingsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[115]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GetProjectSettingsResponse.ProtoReflect.Descriptor instead.
func (*GetProjectSettingsResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{115}
}

func (x *GetProjectSettingsResponse) GetSettings() []*ProjectSetting {
	if x != nil {
		return x.Settings
	}
	return nil
}

type UpsertProjectSettingRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project to set the value on.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Setting key to create or update ("global-fallback" or "rate-limit").
	SettingName string `protobuf:"bytes,3,opt,name=setting_name,json=settingName,proto3" json:"setting_name,omitempty"`
	// New string-encoded value for the setting.
	SettingValue  string `protobuf:"bytes,4,opt,name=setting_value,json=settingValue,proto3" json:"setting_value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpsertProjectSettingRequest) Reset() {
	*x = UpsertProjectSettingRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[116]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpsertProjectSettingRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpsertProjectSettingRequest) ProtoMessage() {}

func (x *UpsertProjectSettingRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[116]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpsertProjectSettingRequest.ProtoReflect.Descriptor instead.
func (*UpsertProjectSettingRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{116}
}

func (x *UpsertProjectSettingRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *UpsertProjectSettingRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *UpsertProjectSettingRequest) GetSettingName() string {
	if x != nil {
		return x.SettingName
	}
	return ""
}

func (x *UpsertProjectSettingRequest) GetSettingValue() string {
	if x != nil {
		return x.SettingValue
	}
	return ""
}

type UpsertProjectSettingResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The created or updated setting.
	Setting       *ProjectSetting `protobuf:"bytes,1,opt,name=setting,proto3" json:"setting,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *UpsertProjectSettingResponse) Reset() {
	*x = UpsertProjectSettingResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[117]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *UpsertProjectSettingResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*UpsertProjectSettingResponse) ProtoMessage() {}

func (x *UpsertProjectSettingResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[117]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use UpsertProjectSettingResponse.ProtoReflect.Descriptor instead.
func (*UpsertProjectSettingResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{117}
}

func (x *UpsertProjectSettingResponse) GetSetting() *ProjectSetting {
	if x != nil {
		return x.Setting
	}
	return nil
}

type DeleteProjectSettingRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Project to delete the setting from.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Setting key to delete ("global-fallback" or "rate-limit").
	SettingName   string `protobuf:"bytes,3,opt,name=setting_name,json=settingName,proto3" json:"setting_name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeleteProjectSettingRequest) Reset() {
	*x = DeleteProjectSettingRequest{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[118]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DeleteProjectSettingRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteProjectSettingRequest) ProtoMessage() {}

func (x *DeleteProjectSettingRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[118]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeleteProjectSettingRequest.ProtoReflect.Descriptor instead.
func (*DeleteProjectSettingRequest) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{118}
}

func (x *DeleteProjectSettingRequest) GetCustomerId() string {
	if x != nil {
		return x.CustomerId
	}
	return ""
}

func (x *DeleteProjectSettingRequest) GetProjectId() string {
	if x != nil {
		return x.ProjectId
	}
	return ""
}

func (x *DeleteProjectSettingRequest) GetSettingName() string {
	if x != nil {
		return x.SettingName
	}
	return ""
}

type DeleteProjectSettingResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// True if the setting was deleted.
	Success       bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DeleteProjectSettingResponse) Reset() {
	*x = DeleteProjectSettingResponse{}
	mi := &file_tars_admin_v1_admin_proto_msgTypes[119]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DeleteProjectSettingResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DeleteProjectSettingResponse) ProtoMessage() {}

func (x *DeleteProjectSettingResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_admin_v1_admin_proto_msgTypes[119]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DeleteProjectSettingResponse.ProtoReflect.Descriptor instead.
func (*DeleteProjectSettingResponse) Descriptor() ([]byte, []int) {
	return file_tars_admin_v1_admin_proto_rawDescGZIP(), []int{119}
}

func (x *DeleteProjectSettingResponse) GetSuccess() bool {
	if x != nil {
		return x.Success
	}
	return false
}

var File_tars_admin_v1_admin_proto protoreflect.FileDescriptor

const file_tars_admin_v1_admin_proto_rawDesc = "" +
	"\n" +
	"\x19tars/admin/v1/admin.proto\x12\rtars.admin.v1\x1a\x1bbuf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1ftars/auth/v1/auth_options.proto\x1a\x17tars/docs/v1/docs.proto\"\r\n" +
	"\vPingRequest\"b\n" +
	"\fPingResponse\x12\x18\n" +
	"\amessage\x18\x01 \x01(\tR\amessage\x128\n" +
	"\ttimestamp\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\ttimestamp\"\x92\x04\n" +
	"\x16CreateWorkspaceRequest\x12K\n" +
	"\vcustomer_id\x18\x01 \x01(\tB*\xbaH'r%\x10\x01\x18?2\x1f^[a-z0-9]([a-z0-9-]*[a-z0-9])?$R\n" +
	"customerId\x12@\n" +
	"\fworkspace_id\x18\x02 \x01(\tB\x1d\xbaH\x1ar\x18\x10\x01\x18\xfd\x012\x11^[a-zA-Z0-9-_.]+$R\vworkspaceId\x12!\n" +
	"\x04name\x18\x03 \x01(\tB\b\xbaH\x05r\x03\x18\xff\x01H\x00R\x04name\x88\x01\x01\x12/\n" +
	"\vdescription\x18\x04 \x01(\tB\b\xbaH\x05r\x03\x18\xe8\aH\x01R\vdescription\x88\x01\x01\x12\x83\x01\n" +
	"\x06labels\x18\x05 \x03(\v21.tars.admin.v1.CreateWorkspaceRequest.LabelsEntryB8\xbaH5\x9a\x012\x102\"'r%\x18?2!^[a-z0-9]([a-z0-9-_.]*[a-z0-9])?$*\x05r\x03\x18\xff\x01R\x06labels\x12,\n" +
	"\n" +
	"project_id\x18\x06 \x01(\tB\b\xbaH\x05r\x03\x18\xfd\x01H\x02R\tprojectId\x88\x01\x01\x1a9\n" +
	"\vLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\a\n" +
	"\x05_nameB\x0e\n" +
	"\f_descriptionB\r\n" +
	"\v_project_id\"Q\n" +
	"\x17CreateWorkspaceResponse\x126\n" +
	"\tworkspace\x18\x01 \x01(\v2\x18.tars.admin.v1.WorkspaceR\tworkspace\"\xe6\x01\n" +
	"\x15ListWorkspacesRequest\x12N\n" +
	"\vcustomer_id\x18\x01 \x01(\tB(\xbaH%r#\x18?2\x1f^[a-z0-9]([a-z0-9-]*[a-z0-9])?$H\x00R\n" +
	"customerId\x88\x01\x01\x12,\n" +
	"\tpage_size\x18\x02 \x01(\x05B\n" +
	"\xbaH\a\x1a\x05\x18\xe8\a(\x00H\x01R\bpageSize\x88\x01\x01\x12\"\n" +
	"\n" +
	"page_token\x18\x03 \x01(\tH\x02R\tpageToken\x88\x01\x01B\x0e\n" +
	"\f_customer_idB\f\n" +
	"\n" +
	"_page_sizeB\r\n" +
	"\v_page_token\"z\n" +
	"\x16ListWorkspacesResponse\x128\n" +
	"\n" +
	"workspaces\x18\x01 \x03(\v2\x18.tars.admin.v1.WorkspaceR\n" +
	"workspaces\x12&\n" +
	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"l\n" +
	"\x13GetWorkspaceRequest\x12U\n" +
	"\x02id\x18\x01 \x01(\tBE\xbaHBr@2>^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$R\x02id\"N\n" +
	"\x14GetWorkspaceResponse\x126\n" +
	"\tworkspace\x18\x01 \x01(\v2\x18.tars.admin.v1.WorkspaceR\tworkspace\"\x9d\x03\n" +
	"\x16UpdateWorkspaceRequest\x12U\n" +
	"\x02id\x18\x01 \x01(\tBE\xbaHBr@2>^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$R\x02id\x12!\n" +
	"\x04name\x18\x02 \x01(\tB\b\xbaH\x05r\x03\x18\xff\x01H\x00R\x04name\x88\x01\x01\x12/\n" +
	"\vdescription\x18\x03 \x01(\tB\b\xbaH\x05r\x03\x18\xe8\aH\x01R\vdescription\x88\x01\x01\x12\x83\x01\n" +
	"\x06labels\x18\x04 \x03(\v21.tars.admin.v1.UpdateWorkspaceRequest.LabelsEntryB8\xbaH5\x9a\x012\x102\"'r%\x18?2!^[a-z0-9]([a-z0-9-_.]*[a-z0-9])?$*\x05r\x03\x18\xff\x01R\x06labels\x1a9\n" +
	"\vLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\a\n" +
	"\x05_nameB\x0e\n" +
	"\f_description\"Q\n" +
	"\x17UpdateWorkspaceResponse\x126\n" +
	"\tworkspace\x18\x01 \x01(\v2\x18.tars.admin.v1.WorkspaceR\tworkspace\"\xb0\x01\n" +
	"\x1aSetWorkspaceProjectRequest\x12U\n" +
	"\x02id\x18\x01 \x01(\tBE\xbaHBr@2>^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$R\x02id\x12,\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\b\xbaH\x05r\x03\x18\xff\x01H\x00R\tprojectId\x88\x01\x01B\r\n" +
	"\v_project_id\"U\n" +
	"\x1bSetWorkspaceProjectResponse\x126\n" +
	"\tworkspace\x18\x01 \x01(\v2\x18.tars.admin.v1.WorkspaceR\tworkspace\"\xb4\x01\n" +
	"\x16SetWorkspaceURLRequest\x12U\n" +
	"\x02id\x18\x01 \x01(\tBE\xbaHBr@2>^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$R\x02id\x12\x1c\n" +
	"\x03url\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\x80\x10R\x03url\x12%\n" +
	"\x0etrigger_update\x18\x03 \x01(\bR\rtriggerUpdate\"Q\n" +
	"\x17SetWorkspaceURLResponse\x126\n" +
	"\tworkspace\x18\x01 \x01(\v2\x18.tars.admin.v1.WorkspaceR\tworkspace\"o\n" +
	"\x16DeleteWorkspaceRequest\x12U\n" +
	"\x02id\x18\x01 \x01(\tBE\xbaHBr@2>^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$R\x02id\"n\n" +
	"\x17DeleteWorkspaceResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x129\n" +
	"\n" +
	"deleted_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tdeletedAt\"\x95\x04\n" +
	"\tWorkspace\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" +
	"\vcustomer_id\x18\x02 \x01(\tR\n" +
	"customerId\x12!\n" +
	"\fworkspace_id\x18\x03 \x01(\tR\vworkspaceId\x12\x17\n" +
	"\x04name\x18\x04 \x01(\tH\x00R\x04name\x88\x01\x01\x12%\n" +
	"\vdescription\x18\x05 \x01(\tH\x01R\vdescription\x88\x01\x01\x12<\n" +
	"\x06labels\x18\x06 \x03(\v2$.tars.admin.v1.Workspace.LabelsEntryR\x06labels\x129\n" +
	"\n" +
	"created_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
	"\n" +
	"updated_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12>\n" +
	"\n" +
	"deleted_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampH\x02R\tdeletedAt\x88\x01\x01\x12\x1d\n" +
	"\n" +
	"project_id\x18\n" +
	" \x01(\tR\tprojectId\x1a9\n" +
	"\vLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\a\n" +
	"\x05_nameB\x0e\n" +
	"\f_descriptionB\r\n" +
	"\v_deleted_at\"\xe3\v\n" +
	"\x1bCreateServiceAccountRequest\x12K\n" +
	"\vcustomer_id\x18\x01 \x01(\tB*\xbaH'r%\x10\x01\x18?2\x1f^[a-z0-9]([a-z0-9-]*[a-z0-9])?$R\n" +
	"customerId\x12@\n" +
	"\fworkspace_id\x18\x02 \x01(\tB\x1d\xbaH\x1ar\x18\x10\x01\x18\xfd\x012\x11^[a-zA-Z0-9-_.]+$R\vworkspaceId\x124\n" +
	"\rvalidity_days\x18\x03 \x01(\x03B\n" +
	"\xbaH\a\"\x05\x18\xc2\x1c(\x01H\x00R\fvalidityDays\x88\x01\x01\x12&\n" +
	"\aapi_uri\x18\x04 \x01(\tB\b\xbaH\x05r\x03\x88\x01\x01H\x01R\x06apiUri\x88\x01\x01\x12*\n" +
	"\tserve_url\x18\x12 \x01(\tB\b\xbaH\x05r\x03\x88\x01\x01H\x02R\bserveUrl\x88\x01\x01\x12%\n" +
	"\x06issuer\x18\x05 \x01(\tB\b\xbaH\x05r\x03\x88\x01\x01H\x03R\x06issuer\x88\x01\x01\x12<\n" +
	"\baudience\x18\x06 \x01(\tB\x1b\xbaH\x18r\x16\x18\xfd\x012\x11^[a-zA-Z0-9._-]+$H\x04R\baudience\x88\x01\x01\x12(\n" +
	"\bjwks_uri\x18\a \x01(\tB\b\xbaH\x05r\x03\x88\x01\x01H\x05R\ajwksUri\x88\x01\x01\x122\n" +
	"\x12telemetry_endpoint\x18\b \x01(\tH\x06R\x11telemetryEndpoint\x88\x01\x01\x12[\n" +
	"\x12telemetry_protocol\x18\t \x01(\tB'\xbaH$r\"R\x00R\x04grpcR\rhttp/protobufR\thttp/jsonH\aR\x11telemetryProtocol\x88\x01\x01\x122\n" +
	"\x12telemetry_insecure\x18\n" +
	" \x01(\bH\bR\x11telemetryInsecure\x88\x01\x01\x12Q\n" +
	"\x11telemetry_timeout\x18\v \x01(\tB\x1f\xbaH\x1cr\x1a2\x18^[0-9]+(ns|us|ms|s|m|h)$H\tR\x10telemetryTimeout\x88\x01\x01\x12m\n" +
	"\x11telemetry_headers\x18\f \x03(\v2@.tars.admin.v1.CreateServiceAccountRequest.TelemetryHeadersEntryR\x10telemetryHeaders\x123\n" +
	"\x06scopes\x18\r \x03(\tB\x1b\xbaH\x18\x92\x01\x15\b\x00\x10\n" +
	"\"\x0fr\r\x1822\t^[a-z_]+$R\x06scopes\x12,\n" +
	"\n" +
	"router_url\x18\x0e \x01(\tB\b\xbaH\x05r\x03\x88\x01\x01H\n" +
	"R\trouterUrl\x88\x01\x01\x12\"\n" +
	"\n" +
	"router_key\x18\x0f \x01(\tH\vR\trouterKey\x88\x01\x01\x12-\n" +
	"\x10internal_api_key\x18\x10 \x01(\tH\fR\x0einternalApiKey\x88\x01\x01\x12t\n" +
	"\x14telemetry_local_vars\x18\x11 \x03(\v2B.tars.admin.v1.CreateServiceAccountRequest.TelemetryLocalVarsEntryR\x12telemetryLocalVars\x1aC\n" +
	"\x15TelemetryHeadersEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1aE\n" +
	"\x17TelemetryLocalVarsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x10\n" +
	"\x0e_validity_daysB\n" +
	"\n" +
	"\b_api_uriB\f\n" +
	"\n" +
	"_serve_urlB\t\n" +
	"\a_issuerB\v\n" +
	"\t_audienceB\v\n" +
	"\t_jwks_uriB\x15\n" +
	"\x13_telemetry_endpointB\x15\n" +
	"\x13_telemetry_protocolB\x15\n" +
	"\x13_telemetry_insecureB\x14\n" +
	"\x12_telemetry_timeoutB\r\n" +
	"\v_router_urlB\r\n" +
	"\v_router_keyB\x13\n" +
	"\x11_internal_api_key\"\xb1\x01\n" +
	"\x1cCreateServiceAccountResponse\x12F\n" +
	"\x0fservice_account\x18\x01 \x01(\v2\x1d.tars.admin.v1.ServiceAccountR\x0eserviceAccount\x12\x1a\n" +
	"\bchecksum\x18\x02 \x01(\tR\bchecksum\x12-\n" +
	"\x12checksum_algorithm\x18\x03 \x01(\tR\x11checksumAlgorithm\"\xee\x04\n" +
	"\x0eServiceAccount\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04type\x18\x02 \x01(\tR\x04type\x12\x1f\n" +
	"\vcustomer_id\x18\x03 \x01(\tR\n" +
	"customerId\x12!\n" +
	"\fworkspace_id\x18\x04 \x01(\tR\vworkspaceId\x12!\n" +
	"\fclient_email\x18\x05 \x01(\tR\vclientEmail\x12$\n" +
	"\x0eprivate_key_id\x18\x06 \x01(\tR\fprivateKeyId\x12\x1f\n" +
	"\vprivate_key\x18\a \x01(\tR\n" +
	"privateKey\x12\x17\n" +
	"\aapi_uri\x18\b \x01(\tR\x06apiUri\x12\x1b\n" +
	"\tserve_url\x18\x0f \x01(\tR\bserveUrl\x12@\n" +
	"\vauth_server\x18\t \x01(\v2\x1f.tars.admin.v1.AuthServerConfigR\n" +
	"authServer\x12?\n" +
	"\n" +
	"gatekeeper\x18\n" +
	" \x01(\v2\x1f.tars.admin.v1.GatekeeperConfigR\n" +
	"gatekeeper\x12C\n" +
	"\fdata_exports\x18\v \x01(\v2 .tars.admin.v1.DataExportsConfigR\vdataExports\x12\x16\n" +
	"\x06scopes\x18\f \x03(\tR\x06scopes\x129\n" +
	"\n" +
	"created_at\x18\r \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
	"\n" +
	"expires_at\x18\x0e \x01(\v2\x1a.google.protobuf.TimestampR\texpiresAt\"\x9c\x01\n" +
	"\x10AuthServerConfig\x12\x16\n" +
	"\x06issuer\x18\x01 \x01(\tR\x06issuer\x12\x1a\n" +
	"\baudience\x18\x02 \x01(\tR\baudience\x12\x19\n" +
	"\bjwks_uri\x18\x03 \x01(\tR\ajwksUri\x129\n" +
	"\vpublic_keys\x18\x04 \x03(\v2\x18.tars.admin.v1.PublicKeyR\n" +
	"publicKeys\"\xb6\x01\n" +
	"\x10GatekeeperConfig\x12\x16\n" +
	"\x06issuer\x18\x01 \x01(\tR\x06issuer\x12\x1a\n" +
	"\baudience\x18\x02 \x01(\tR\baudience\x129\n" +
	"\vpublic_keys\x18\x03 \x03(\v2\x18.tars.admin.v1.PublicKeyR\n" +
	"publicKeys\x123\n" +
	"\x06router\x18\x04 \x01(\v2\x1b.tars.admin.v1.RouterConfigR\x06router\"<\n" +
	"\fRouterConfig\x12\x1a\n" +
	"\x03url\x18\x01 \x01(\tB\b\xbaH\x05r\x03\x88\x01\x01R\x03url\x12\x10\n" +
	"\x03key\x18\x02 \x01(\tR\x03key\"S\n" +
	"\tPublicKey\x12\x10\n" +
	"\x03kid\x18\x01 \x01(\tR\x03kid\x12\x10\n" +
	"\x03alg\x18\x02 \x01(\tR\x03alg\x12\x10\n" +
	"\x03use\x18\x03 \x01(\tR\x03use\x12\x10\n" +
	"\x03key\x18\x04 \x01(\tR\x03key\"Q\n" +
	"\x11DataExportsConfig\x12<\n" +
	"\ttelemetry\x18\x01 \x01(\v2\x1e.tars.admin.v1.TelemetryConfigR\ttelemetry\"\x82\x02\n" +
	"\x0fTelemetryConfig\x12\x1a\n" +
	"\bendpoint\x18\x01 \x01(\tR\bendpoint\x12\x1a\n" +
	"\bprotocol\x18\x02 \x01(\tR\bprotocol\x12\x1a\n" +
	"\binsecure\x18\x03 \x01(\bR\binsecure\x12\x18\n" +
	"\atimeout\x18\x04 \x01(\tR\atimeout\x12E\n" +
	"\aheaders\x18\x05 \x03(\v2+.tars.admin.v1.TelemetryConfig.HeadersEntryR\aheaders\x1a:\n" +
	"\fHeadersEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x8e\x03\n" +
	"\x1aListServiceAccountsRequest\x12N\n" +
	"\vcustomer_id\x18\x01 \x01(\tB(\xbaH%r#\x18?2\x1f^[a-z0-9]([a-z0-9-]*[a-z0-9])?$H\x00R\n" +
	"customerId\x88\x01\x01\x12C\n" +
	"\fworkspace_id\x18\x02 \x01(\tB\x1b\xbaH\x18r\x16\x18\xfd\x012\x11^[a-zA-Z0-9-_.]+$H\x01R\vworkspaceId\x88\x01\x01\x12@\n" +
	"\x06status\x18\x03 \x01(\x0e2#.tars.admin.v1.ServiceAccountStatusH\x02R\x06status\x88\x01\x01\x12,\n" +
	"\tpage_size\x18\x04 \x01(\x05B\n" +
	"\xbaH\a\x1a\x05\x18\xe8\a(\x00H\x03R\bpageSize\x88\x01\x01\x12\"\n" +
	"\n" +
	"page_token\x18\x05 \x01(\tH\x04R\tpageToken\x88\x01\x01B\x0e\n" +
	"\f_customer_idB\x0f\n" +
	"\r_workspace_idB\t\n" +
	"\a_statusB\f\n" +
	"\n" +
	"_page_sizeB\r\n" +
	"\v_page_token\"\x93\x01\n" +
	"\x1bListServiceAccountsResponse\x12L\n" +
	"\x10service_accounts\x18\x01 \x03(\v2!.tars.admin.v1.ServiceAccountInfoR\x0fserviceAccounts\x12&\n" +
	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"q\n" +
	"\x18GetServiceAccountRequest\x12U\n" +
	"\x02id\x18\x01 \x01(\tBE\xbaHBr@2>^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$R\x02id\"g\n" +
	"\x19GetServiceAccountResponse\x12J\n" +
	"\x0fservice_account\x18\x01 \x01(\v2!.tars.admin.v1.ServiceAccountInfoR\x0eserviceAccount\"\x94\x05\n" +
	"\x12ServiceAccountInfo\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" +
	"\vcustomer_id\x18\x02 \x01(\tR\n" +
	"customerId\x12!\n" +
	"\fworkspace_id\x18\x03 \x01(\tR\vworkspaceId\x12\x14\n" +
	"\x05email\x18\x04 \x01(\tR\x05email\x12;\n" +
	"\x06status\x18\x05 \x01(\x0e2#.tars.admin.v1.ServiceAccountStatusR\x06status\x129\n" +
	"\n" +
	"created_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
	"\n" +
	"expires_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\texpiresAt\x12A\n" +
	"\flast_used_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampH\x00R\n" +
	"lastUsedAt\x88\x01\x01\x124\n" +
	"\x16public_key_fingerprint\x18\t \x01(\tR\x14publicKeyFingerprint\x12K\n" +
	"\bmetadata\x18\n" +
	" \x03(\v2/.tars.admin.v1.ServiceAccountInfo.MetadataEntryR\bmetadata\x12>\n" +
	"\n" +
	"revoked_at\x18\v \x01(\v2\x1a.google.protobuf.TimestampH\x01R\trevokedAt\x88\x01\x01\x1a;\n" +
	"\rMetadataEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\x0f\n" +
	"\r_last_used_atB\r\n" +
	"\v_revoked_at\"\xa6\x01\n" +
	"\x1bRevokeServiceAccountRequest\x12U\n" +
	"\x02id\x18\x01 \x01(\tBE\xbaHBr@2>^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$R\x02id\x12%\n" +
	"\x06reason\x18\x02 \x01(\tB\b\xbaH\x05r\x03\x18\xf4\x03H\x00R\x06reason\x88\x01\x01B\t\n" +
	"\a_reason\"s\n" +
	"\x1cRevokeServiceAccountResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x129\n" +
	"\n" +
	"revoked_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\trevokedAt\"\xa7\x01\n" +
	"\x1cRestoreServiceAccountRequest\x12U\n" +
	"\x02id\x18\x01 \x01(\tBE\xbaHBr@2>^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$R\x02id\x12%\n" +
	"\x06reason\x18\x02 \x01(\tB\b\xbaH\x05r\x03\x18\xf4\x03H\x00R\x06reason\x88\x01\x01B\t\n" +
	"\a_reason\"\x85\x01\n" +
	"\x1dRestoreServiceAccountResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12J\n" +
	"\x0fservice_account\x18\x02 \x01(\v2!.tars.admin.v1.ServiceAccountInfoR\x0eserviceAccount\"\xef\x04\n" +
	"\x16CreateUserTokenRequest\x129\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\x18\xbaH\x15r\x13\x10\x01\x18d2\r^[a-z0-9_-]+$R\n" +
	"customerId\x12;\n" +
	"\fworkspace_id\x18\x02 \x01(\tB\x18\xbaH\x15r\x13\x10\x01\x18d2\r^[a-z0-9_-]+$R\vworkspaceId\x12#\n" +
	"\auser_id\x18\x03 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xff\x01R\x06userId\x12\x1d\n" +
	"\x04role\x18\x04 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18dR\x04role\x127\n" +
	"\x11organization_unit\x18\x05 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xff\x01R\x10organizationUnit\x127\n" +
	"\x0fexpires_in_days\x18\x06 \x01(\x03B\n" +
	"\xbaH\a\"\x05\x18\xed\x02(\x01H\x00R\rexpiresInDays\x88\x01\x01\x123\n" +
	"\x06scopes\x18\a \x03(\tB\x1b\xbaH\x18\x92\x01\x15\b\x00\x10\n" +
	"\"\x0fr\r\x1822\t^[a-z_]+$R\x06scopes\x12!\n" +
	"\x04name\x18\b \x01(\tB\b\xbaH\x05r\x03\x18\xff\x01H\x01R\x04name\x88\x01\x01\x12%\n" +
	"\vimpersonate\x18\t \x01(\bH\x02R\vimpersonate\x88\x01\x01\x12`\n" +
	"\x16impersonation_metadata\x18\n" +
	" \x01(\v2$.tars.admin.v1.ImpersonationMetadataH\x03R\x15impersonationMetadata\x88\x01\x01B\x12\n" +
	"\x10_expires_in_daysB\a\n" +
	"\x05_nameB\x0e\n" +
	"\f_impersonateB\x19\n" +
	"\x17_impersonation_metadata\"\x89\x02\n" +
	"\x15ImpersonationMetadata\x125\n" +
	"\x10impersonator_key\x18\x01 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xff\x01R\x0fimpersonatorKey\x12%\n" +
	"\x06reason\x18\x02 \x01(\tB\b\xbaH\x05r\x03\x18\xf4\x03H\x00R\x06reason\x88\x01\x01\x12K\n" +
	"\acontext\x18\x03 \x03(\v21.tars.admin.v1.ImpersonationMetadata.ContextEntryR\acontext\x1a:\n" +
	"\fContextEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\t\n" +
	"\a_reason\"\xa2\x02\n" +
	"\x17CreateUserTokenResponse\x12!\n" +
	"\faccess_token\x18\x01 \x01(\tR\vaccessToken\x12\x1d\n" +
	"\n" +
	"token_type\x18\x02 \x01(\tR\ttokenType\x12\x1d\n" +
	"\n" +
	"expires_in\x18\x03 \x01(\x03R\texpiresIn\x129\n" +
	"\n" +
	"expires_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\texpiresAt\x12\x10\n" +
	"\x03jti\x18\x05 \x01(\tR\x03jti\x12\x1d\n" +
	"\n" +
	"key_prefix\x18\x06 \x01(\tR\tkeyPrefix\x12\x19\n" +
	"\bkey_hash\x18\a \x01(\tR\akeyHash\x12\x1f\n" +
	"\vkey_address\x18\b \x01(\tR\n" +
	"keyAddress\"\x82\x02\n" +
	"\x15ListUserTokensRequest\x12&\n" +
	"\auser_id\x18\x01 \x01(\tB\b\xbaH\x05r\x03\x18\xff\x01H\x00R\x06userId\x88\x01\x01\x12;\n" +
	"\x06status\x18\x02 \x01(\x0e2\x1e.tars.admin.v1.UserTokenStatusH\x01R\x06status\x88\x01\x01\x12,\n" +
	"\tpage_size\x18\x03 \x01(\x05B\n" +
	"\xbaH\a\x1a\x05\x18\xe8\a(\x00H\x02R\bpageSize\x88\x01\x01\x12\"\n" +
	"\n" +
	"page_token\x18\x04 \x01(\tH\x03R\tpageToken\x88\x01\x01B\n" +
	"\n" +
	"\b_user_idB\t\n" +
	"\a_statusB\f\n" +
	"\n" +
	"_page_sizeB\r\n" +
	"\v_page_token\"v\n" +
	"\x16ListUserTokensResponse\x124\n" +
	"\x06tokens\x18\x01 \x03(\v2\x1c.tars.admin.v1.UserTokenInfoR\x06tokens\x12&\n" +
	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"2\n" +
	"\x13GetUserTokenRequest\x12\x1b\n" +
	"\x03jti\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18@R\x03jti\"J\n" +
	"\x14GetUserTokenResponse\x122\n" +
	"\x05token\x18\x01 \x01(\v2\x1c.tars.admin.v1.UserTokenInfoR\x05token\"\x8b\x04\n" +
	"\rUserTokenInfo\x12\x10\n" +
	"\x03jti\x18\x01 \x01(\tR\x03jti\x12\x17\n" +
	"\auser_id\x18\x02 \x01(\tR\x06userId\x12\x12\n" +
	"\x04role\x18\x03 \x01(\tR\x04role\x12+\n" +
	"\x11organization_unit\x18\x04 \x01(\tR\x10organizationUnit\x126\n" +
	"\x06status\x18\x05 \x01(\x0e2\x1e.tars.admin.v1.UserTokenStatusR\x06status\x129\n" +
	"\n" +
	"created_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
	"\n" +
	"expires_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\texpiresAt\x12A\n" +
	"\flast_used_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampH\x00R\n" +
	"lastUsedAt\x88\x01\x01\x12>\n" +
	"\n" +
	"revoked_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampH\x01R\trevokedAt\x88\x01\x01\x12*\n" +
	"\x0erevoked_reason\x18\n" +
	" \x01(\tH\x02R\rrevokedReason\x88\x01\x01B\x0f\n" +
	"\r_last_used_atB\r\n" +
	"\v_revoked_atB\x11\n" +
	"\x0f_revoked_reason\"g\n" +
	"\x16RevokeUserTokenRequest\x12\x1b\n" +
	"\x03jti\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18@R\x03jti\x12%\n" +
	"\x06reason\x18\x02 \x01(\tB\b\xbaH\x05r\x03\x18\xf4\x03H\x00R\x06reason\x88\x01\x01B\t\n" +
	"\a_reason\"n\n" +
	"\x17RevokeUserTokenResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x129\n" +
	"\n" +
	"revoked_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\trevokedAt\"\x9c\x04\n" +
	"\x19TelemetryForwardingConfig\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x17\n" +
	"\auser_id\x18\x02 \x01(\tR\x06userId\x12%\n" +
	"\x0etelemetry_type\x18\x03 \x01(\tR\rtelemetryType\x12\x19\n" +
	"\bsink_url\x18\x04 \x01(\tR\asinkUrl\x12\x1a\n" +
	"\bprotocol\x18\x05 \x01(\tR\bprotocol\x12\x1b\n" +
	"\tauth_type\x18\x06 \x01(\tR\bauthType\x12\"\n" +
	"\n" +
	"auth_value\x18\a \x01(\tH\x00R\tauthValue\x88\x01\x01\x12)\n" +
	"\x0eapi_key_header\x18\b \x01(\tH\x01R\fapiKeyHeader\x88\x01\x01\x12\x18\n" +
	"\aenabled\x18\t \x01(\bR\aenabled\x12B\n" +
	"\x0flast_checked_at\x18\n" +
	" \x01(\v2\x1a.google.protobuf.TimestampR\rlastCheckedAt\x12\x16\n" +
	"\x06status\x18\v \x01(\tR\x06status\x129\n" +
	"\n" +
	"created_at\x18\f \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
	"\n" +
	"updated_at\x18\r \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAtB\r\n" +
	"\v_auth_valueB\x11\n" +
	"\x0f_api_key_header\"\xd7\x03\n" +
	"\x1cCreateTelemetryConfigRequest\x12 \n" +
	"\auser_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x06userId\x12C\n" +
	"\x0etelemetry_type\x18\x02 \x01(\tB\x1c\xbaH\x19r\x17R\x06tracesR\ametricsR\x04logsR\rtelemetryType\x12%\n" +
	"\bsink_url\x18\x03 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x88\x01\x01R\asinkUrl\x12A\n" +
	"\bprotocol\x18\x04 \x01(\tB%\xbaH\"r R\x04grpcR\thttp/jsonR\rhttp/protobufR\bprotocol\x12@\n" +
	"\tauth_type\x18\x05 \x01(\tB#\xbaH r\x1eR\x04noneR\x06bearerR\x05basicR\aapi_keyR\bauthType\x12\"\n" +
	"\n" +
	"auth_value\x18\x06 \x01(\tH\x00R\tauthValue\x88\x01\x01\x123\n" +
	"\x0eapi_key_header\x18\a \x01(\tB\b\xbaH\x05r\x03\x18\x80\x02H\x01R\fapiKeyHeader\x88\x01\x01\x12\x1d\n" +
	"\aenabled\x18\b \x01(\bH\x02R\aenabled\x88\x01\x01B\r\n" +
	"\v_auth_valueB\x11\n" +
	"\x0f_api_key_headerB\n" +
	"\n" +
	"\b_enabled\"a\n" +
	"\x1dCreateTelemetryConfigResponse\x12@\n" +
	"\x06config\x18\x01 \x01(\v2(.tars.admin.v1.TelemetryForwardingConfigR\x06config\"\xcf\x01\n" +
	"\x1bListTelemetryConfigsRequest\x12\x1c\n" +
	"\auser_id\x18\x01 \x01(\tH\x00R\x06userId\x88\x01\x01\x12H\n" +
	"\x0etelemetry_type\x18\x02 \x01(\tB\x1c\xbaH\x19r\x17R\x06tracesR\ametricsR\x04logsH\x01R\rtelemetryType\x88\x01\x01\x12\x1d\n" +
	"\aenabled\x18\x03 \x01(\bH\x02R\aenabled\x88\x01\x01B\n" +
	"\n" +
	"\b_user_idB\x11\n" +
	"\x0f_telemetry_typeB\n" +
	"\n" +
	"\b_enabled\"x\n" +
	"\x1cListTelemetryConfigsResponse\x12B\n" +
	"\aconfigs\x18\x01 \x03(\v2(.tars.admin.v1.TelemetryForwardingConfigR\aconfigs\x12\x14\n" +
	"\x05total\x18\x02 \x01(\x05R\x05total\"6\n" +
	"\x19GetTelemetryConfigRequest\x12\x19\n" +
	"\x02id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18@R\x02id\"^\n" +
	"\x1aGetTelemetryConfigResponse\x12@\n" +
	"\x06config\x18\x01 \x01(\v2(.tars.admin.v1.TelemetryForwardingConfigR\x06config\"\x98\x04\n" +
	"\x1cUpdateTelemetryConfigRequest\x12\x19\n" +
	"\x02id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18@R\x02id\x12(\n" +
	"\bsink_url\x18\x02 \x01(\tB\b\xbaH\x05r\x03\x88\x01\x01H\x00R\asinkUrl\x88\x01\x01\x12F\n" +
	"\bprotocol\x18\x03 \x01(\tB%\xbaH\"r R\x04grpcR\thttp/jsonR\rhttp/protobufH\x01R\bprotocol\x88\x01\x01\x12E\n" +
	"\tauth_type\x18\x04 \x01(\tB#\xbaH r\x1eR\x04noneR\x06bearerR\x05basicR\aapi_keyH\x02R\bauthType\x88\x01\x01\x12\"\n" +
	"\n" +
	"auth_value\x18\x05 \x01(\tH\x03R\tauthValue\x88\x01\x01\x123\n" +
	"\x0eapi_key_header\x18\x06 \x01(\tB\b\xbaH\x05r\x03\x18\x80\x02H\x04R\fapiKeyHeader\x88\x01\x01\x12\x1d\n" +
	"\aenabled\x18\a \x01(\bH\x05R\aenabled\x88\x01\x01\x12K\n" +
	"\x06status\x18\b \x01(\tB.\xbaH+r)R\tconnectedR\fdisconnectedR\x05errorR\atestingH\x06R\x06status\x88\x01\x01B\v\n" +
	"\t_sink_urlB\v\n" +
	"\t_protocolB\f\n" +
	"\n" +
	"_auth_typeB\r\n" +
	"\v_auth_valueB\x11\n" +
	"\x0f_api_key_headerB\n" +
	"\n" +
	"\b_enabledB\t\n" +
	"\a_status\"a\n" +
	"\x1dUpdateTelemetryConfigResponse\x12@\n" +
	"\x06config\x18\x01 \x01(\v2(.tars.admin.v1.TelemetryForwardingConfigR\x06config\"9\n" +
	"\x1cDeleteTelemetryConfigRequest\x12\x19\n" +
	"\x02id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18@R\x02id\"9\n" +
	"\x1dDeleteTelemetryConfigResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\"\xd1\x03\n" +
	"\bCustomer\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" +
	"\vcustomer_id\x18\x02 \x01(\tR\n" +
	"customerId\x12\x17\n" +
	"\x04name\x18\x03 \x01(\tH\x00R\x04name\x88\x01\x01\x12%\n" +
	"\vdescription\x18\x04 \x01(\tH\x01R\vdescription\x88\x01\x01\x12;\n" +
	"\x06labels\x18\x05 \x03(\v2#.tars.admin.v1.Customer.LabelsEntryR\x06labels\x129\n" +
	"\n" +
	"created_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
	"\n" +
	"updated_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12>\n" +
	"\n" +
	"deleted_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampH\x02R\tdeletedAt\x88\x01\x01\x1a9\n" +
	"\vLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\a\n" +
	"\x05_nameB\x0e\n" +
	"\f_descriptionB\r\n" +
	"\v_deleted_at\"\xd6\x02\n" +
	"\x15CreateCustomerRequest\x12K\n" +
	"\vcustomer_id\x18\x01 \x01(\tB*\xbaH'r%\x10\x01\x18?2\x1f^[a-z0-9]([a-z0-9-]*[a-z0-9])?$R\n" +
	"customerId\x12!\n" +
	"\x04name\x18\x02 \x01(\tB\b\xbaH\x05r\x03\x18\xff\x01H\x00R\x04name\x88\x01\x01\x12/\n" +
	"\vdescription\x18\x03 \x01(\tB\b\xbaH\x05r\x03\x18\xe8\aH\x01R\vdescription\x88\x01\x01\x12H\n" +
	"\x06labels\x18\x04 \x03(\v20.tars.admin.v1.CreateCustomerRequest.LabelsEntryR\x06labels\x1a9\n" +
	"\vLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\a\n" +
	"\x05_nameB\x0e\n" +
	"\f_description\"M\n" +
	"\x16CreateCustomerResponse\x123\n" +
	"\bcustomer\x18\x01 \x01(\v2\x17.tars.admin.v1.CustomerR\bcustomer\"\x85\x01\n" +
	"\x14ListCustomersRequest\x12,\n" +
	"\tpage_size\x18\x01 \x01(\x05B\n" +
	"\xbaH\a\x1a\x05\x18\xe8\a(\x00H\x00R\bpageSize\x88\x01\x01\x12\"\n" +
	"\n" +
	"page_token\x18\x02 \x01(\tH\x01R\tpageToken\x88\x01\x01B\f\n" +
	"\n" +
	"_page_sizeB\r\n" +
	"\v_page_token\"v\n" +
	"\x15ListCustomersResponse\x125\n" +
	"\tcustomers\x18\x01 \x03(\v2\x17.tars.admin.v1.CustomerR\tcustomers\x12&\n" +
	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"@\n" +
	"\x12GetCustomerRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\"J\n" +
	"\x13GetCustomerResponse\x123\n" +
	"\bcustomer\x18\x01 \x01(\v2\x17.tars.admin.v1.CustomerR\bcustomer\"\xb5\x02\n" +
	"\x15UpdateCustomerRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12!\n" +
	"\x04name\x18\x02 \x01(\tB\b\xbaH\x05r\x03\x18\xff\x01H\x00R\x04name\x88\x01\x01\x12/\n" +
	"\vdescription\x18\x03 \x01(\tB\b\xbaH\x05r\x03\x18\xe8\aH\x01R\vdescription\x88\x01\x01\x12H\n" +
	"\x06labels\x18\x04 \x03(\v20.tars.admin.v1.UpdateCustomerRequest.LabelsEntryR\x06labels\x1a9\n" +
	"\vLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\a\n" +
	"\x05_nameB\x0e\n" +
	"\f_description\"M\n" +
	"\x16UpdateCustomerResponse\x123\n" +
	"\bcustomer\x18\x01 \x01(\v2\x17.tars.admin.v1.CustomerR\bcustomer\"C\n" +
	"\x15DeleteCustomerRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\"m\n" +
	"\x16DeleteCustomerResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x129\n" +
	"\n" +
	"deleted_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tdeletedAt\"\xee\x03\n" +
	"\aProject\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" +
	"\vcustomer_id\x18\x02 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x03 \x01(\tR\tprojectId\x12\x17\n" +
	"\x04name\x18\x04 \x01(\tH\x00R\x04name\x88\x01\x01\x12%\n" +
	"\vdescription\x18\x05 \x01(\tH\x01R\vdescription\x88\x01\x01\x12:\n" +
	"\x06labels\x18\x06 \x03(\v2\".tars.admin.v1.Project.LabelsEntryR\x06labels\x129\n" +
	"\n" +
	"created_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
	"\n" +
	"updated_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12>\n" +
	"\n" +
	"deleted_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampH\x02R\tdeletedAt\x88\x01\x01\x1a9\n" +
	"\vLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\a\n" +
	"\x05_nameB\x0e\n" +
	"\f_descriptionB\r\n" +
	"\v_deleted_at\"\x81\x03\n" +
	"\x14CreateProjectRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12L\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB-\xbaH*r(\x10\x01\x18\xfd\x012!^[a-z0-9]([a-z0-9-_.]*[a-z0-9])?$R\tprojectId\x12!\n" +
	"\x04name\x18\x03 \x01(\tB\b\xbaH\x05r\x03\x18\xff\x01H\x00R\x04name\x88\x01\x01\x12/\n" +
	"\vdescription\x18\x04 \x01(\tB\b\xbaH\x05r\x03\x18\xe8\aH\x01R\vdescription\x88\x01\x01\x12G\n" +
	"\x06labels\x18\x05 \x03(\v2/.tars.admin.v1.CreateProjectRequest.LabelsEntryR\x06labels\x1a9\n" +
	"\vLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\a\n" +
	"\x05_nameB\x0e\n" +
	"\f_description\"I\n" +
	"\x15CreateProjectResponse\x120\n" +
	"\aproject\x18\x01 \x01(\v2\x16.tars.admin.v1.ProjectR\aproject\"\xb0\x01\n" +
	"\x13ListProjectsRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12,\n" +
	"\tpage_size\x18\x02 \x01(\x05B\n" +
	"\xbaH\a\x1a\x05\x18\xe8\a(\x00H\x00R\bpageSize\x88\x01\x01\x12\"\n" +
	"\n" +
	"page_token\x18\x03 \x01(\tH\x01R\tpageToken\x88\x01\x01B\f\n" +
	"\n" +
	"_page_sizeB\r\n" +
	"\v_page_token\"r\n" +
	"\x14ListProjectsResponse\x122\n" +
	"\bprojects\x18\x01 \x03(\v2\x16.tars.admin.v1.ProjectR\bprojects\x12&\n" +
	"\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"j\n" +
	"\x11GetProjectRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\"F\n" +
	"\x12GetProjectResponse\x120\n" +
	"\aproject\x18\x01 \x01(\v2\x16.tars.admin.v1.ProjectR\aproject\"\xde\x02\n" +
	"\x14UpdateProjectRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\x12!\n" +
	"\x04name\x18\x03 \x01(\tB\b\xbaH\x05r\x03\x18\xff\x01H\x00R\x04name\x88\x01\x01\x12/\n" +
	"\vdescription\x18\x04 \x01(\tB\b\xbaH\x05r\x03\x18\xe8\aH\x01R\vdescription\x88\x01\x01\x12G\n" +
	"\x06labels\x18\x05 \x03(\v2/.tars.admin.v1.UpdateProjectRequest.LabelsEntryR\x06labels\x1a9\n" +
	"\vLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\a\n" +
	"\x05_nameB\x0e\n" +
	"\f_description\"I\n" +
	"\x15UpdateProjectResponse\x120\n" +
	"\aproject\x18\x01 \x01(\v2\x16.tars.admin.v1.ProjectR\aproject\"m\n" +
	"\x14DeleteProjectRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\"l\n" +
	"\x15DeleteProjectResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x129\n" +
	"\n" +
	"deleted_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tdeletedAt\"\x82\x02\n" +
	"\rProjectMember\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" +
	"\vcustomer_id\x18\x02 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x03 \x01(\tR\tprojectId\x12\x17\n" +
	"\auser_id\x18\x04 \x01(\tR\x06userId\x12\x12\n" +
	"\x04role\x18\x05 \x01(\tR\x04role\x129\n" +
	"\n" +
	"created_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
	"\n" +
	"updated_at\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\"\xbf\x01\n" +
	"\x17AddProjectMemberRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\x12#\n" +
	"\auser_id\x18\x03 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xff\x01R\x06userId\x12(\n" +
	"\x04role\x18\x04 \x01(\tB\x14\xbaH\x11r\x0fR\x05adminR\x06memberR\x04role\"P\n" +
	"\x18AddProjectMemberResponse\x124\n" +
	"\x06member\x18\x01 \x01(\v2\x1c.tars.admin.v1.ProjectMemberR\x06member\"r\n" +
	"\x19ListProjectMembersRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\"T\n" +
	"\x1aListProjectMembersResponse\x126\n" +
	"\amembers\x18\x01 \x03(\v2\x1c.tars.admin.v1.ProjectMemberR\amembers\"\xc2\x01\n" +
	"\x1aUpdateProjectMemberRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\x12#\n" +
	"\auser_id\x18\x03 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xff\x01R\x06userId\x12(\n" +
	"\x04role\x18\x04 \x01(\tB\x14\xbaH\x11r\x0fR\x05adminR\x06memberR\x04role\"S\n" +
	"\x1bUpdateProjectMemberResponse\x124\n" +
	"\x06member\x18\x01 \x01(\v2\x1c.tars.admin.v1.ProjectMemberR\x06member\"\x98\x01\n" +
	"\x1aRemoveProjectMemberRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\x12#\n" +
	"\auser_id\x18\x03 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xff\x01R\x06userId\"7\n" +
	"\x1bRemoveProjectMemberResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\"\xc7\x02\n" +
	"\aAIModel\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" +
	"\x05model\x18\x02 \x01(\tR\x05model\x12\x1a\n" +
	"\bprovider\x18\x03 \x01(\tR\bprovider\x12\x17\n" +
	"\x04mode\x18\x04 \x01(\tH\x00R\x04mode\x88\x01\x01\x12\x1d\n" +
	"\n" +
	"is_enabled\x18\x05 \x01(\bR\tisEnabled\x125\n" +
	"\x17input_price_per_million\x18\x06 \x01(\x01R\x14inputPricePerMillion\x127\n" +
	"\x18output_price_per_million\x18\a \x01(\x01R\x15outputPricePerMillion\x12%\n" +
	"\x0econtext_window\x18\b \x01(\x05R\rcontextWindow\x12\"\n" +
	"\fcapabilities\x18\t \x03(\tR\fcapabilitiesB\a\n" +
	"\x05_mode\"6\n" +
	"\x11ListModelsRequest\x12!\n" +
	"\fonly_enabled\x18\x01 \x01(\bR\vonlyEnabled\"D\n" +
	"\x12ListModelsResponse\x12.\n" +
	"\x06models\x18\x01 \x03(\v2\x16.tars.admin.v1.AIModelR\x06models\"s\n" +
	"\x0fGetModelRequest\x12`\n" +
	"\bmodel_id\x18\x01 \x01(\tBE\xbaHBr@2>^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$R\amodelId\"@\n" +
	"\x10GetModelResponse\x12,\n" +
	"\x05model\x18\x01 \x01(\v2\x16.tars.admin.v1.AIModelR\x05model\"\xe7\x01\n" +
	"\x11ProjectModelEntry\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" +
	"\vcustomer_id\x18\x02 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x03 \x01(\tR\tprojectId\x12\x19\n" +
	"\bmodel_id\x18\x04 \x01(\tR\amodelId\x12,\n" +
	"\x05model\x18\x05 \x01(\v2\x16.tars.admin.v1.AIModelR\x05model\x129\n" +
	"\n" +
	"created_at\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\"\xd1\x01\n" +
	"\x16AddProjectModelRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\x12`\n" +
	"\bmodel_id\x18\x03 \x01(\tBE\xbaHBr@2>^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$R\amodelId\"Q\n" +
	"\x17AddProjectModelResponse\x126\n" +
	"\x05entry\x18\x01 \x01(\v2 .tars.admin.v1.ProjectModelEntryR\x05entry\"q\n" +
	"\x18ListProjectModelsRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\"W\n" +
	"\x19ListProjectModelsResponse\x12:\n" +
	"\aentries\x18\x01 \x03(\v2 .tars.admin.v1.ProjectModelEntryR\aentries\"\xd4\x01\n" +
	"\x19RemoveProjectModelRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\x12`\n" +
	"\bmodel_id\x18\x03 \x01(\tBE\xbaHBr@2>^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$R\amodelId\"6\n" +
	"\x1aRemoveProjectModelResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\"\xc6\x01\n" +
	"\x14ProjectProviderEntry\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" +
	"\vcustomer_id\x18\x02 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x03 \x01(\tR\tprojectId\x12#\n" +
	"\rprovider_name\x18\x04 \x01(\tR\fproviderName\x129\n" +
	"\n" +
	"created_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\"\xa2\x01\n" +
	"\x19AddProjectProviderRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\x12.\n" +
	"\rprovider_name\x18\x03 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\fproviderName\"W\n" +
	"\x1aAddProjectProviderResponse\x129\n" +
	"\x05entry\x18\x01 \x01(\v2#.tars.admin.v1.ProjectProviderEntryR\x05entry\"t\n" +
	"\x1bListProjectProvidersRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\"]\n" +
	"\x1cListProjectProvidersResponse\x12=\n" +
	"\aentries\x18\x01 \x03(\v2#.tars.admin.v1.ProjectProviderEntryR\aentries\"\xa5\x01\n" +
	"\x1cRemoveProjectProviderRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\x12.\n" +
	"\rprovider_name\x18\x03 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\fproviderName\"9\n" +
	"\x1dRemoveProjectProviderResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\"\xbf\x01\n" +
	"\x15ProjectMcpServerEntry\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1f\n" +
	"\vcustomer_id\x18\x02 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x03 \x01(\tR\tprojectId\x12\x1b\n" +
	"\tserver_id\x18\x04 \x01(\tR\bserverId\x129\n" +
	"\n" +
	"created_at\x18\x05 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\"\xc8\x01\n" +
	"\x1aAddProjectMcpServerRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\x12S\n" +
	"\tserver_id\x18\x03 \x01(\tB6\xbaH3r1\x10\x01\x18\xfd\x012*^[a-zA-Z0-9]([a-zA-Z0-9._-]*[a-zA-Z0-9])?$R\bserverId\"Y\n" +
	"\x1bAddProjectMcpServerResponse\x12:\n" +
	"\x05entry\x18\x01 \x01(\v2$.tars.admin.v1.ProjectMcpServerEntryR\x05entry\"u\n" +
	"\x1cListProjectMcpServersRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\"_\n" +
	"\x1dListProjectMcpServersResponse\x12>\n" +
	"\aentries\x18\x01 \x03(\v2$.tars.admin.v1.ProjectMcpServerEntryR\aentries\"\xcb\x01\n" +
	"\x1dRemoveProjectMcpServerRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\x12S\n" +
	"\tserver_id\x18\x03 \x01(\tB6\xbaH3r1\x10\x01\x18\xfd\x012*^[a-zA-Z0-9]([a-zA-Z0-9._-]*[a-zA-Z0-9])?$R\bserverId\":\n" +
	"\x1eRemoveProjectMcpServerResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\"\x93\x01\n" +
	"\x0eProjectSetting\x12!\n" +
	"\fsetting_name\x18\x01 \x01(\tR\vsettingName\x12#\n" +
	"\rsetting_value\x18\x02 \x01(\tR\fsettingValue\x129\n" +
	"\n" +
	"updated_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\"r\n" +
	"\x19GetProjectSettingsRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\"W\n" +
	"\x1aGetProjectSettingsResponse\x129\n" +
	"\bsettings\x18\x01 \x03(\v2\x1d.tars.admin.v1.ProjectSettingR\bsettings\"\xec\x01\n" +
	"\x1bUpsertProjectSettingRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\x12E\n" +
	"\fsetting_name\x18\x03 \x01(\tB\"\xbaH\x1fr\x1dR\x0fglobal-fallbackR\n" +
	"rate-limitR\vsettingName\x12/\n" +
	"\rsetting_value\x18\x04 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\x80\bR\fsettingValue\"W\n" +
	"\x1cUpsertProjectSettingResponse\x127\n" +
	"\asetting\x18\x01 \x01(\v2\x1d.tars.admin.v1.ProjectSettingR\asetting\"\xbb\x01\n" +
	"\x1bDeleteProjectSettingRequest\x12*\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18?R\n" +
	"customerId\x12)\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\n" +
	"\xbaH\ar\x05\x10\x01\x18\xfd\x01R\tprojectId\x12E\n" +
	"\fsetting_name\x18\x03 \x01(\tB\"\xbaH\x1fr\x1dR\x0fglobal-fallbackR\n" +
	"rate-limitR\vsettingName\"8\n" +
	"\x1cDeleteProjectSettingResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess*\xa9\x01\n" +
	"\x14ServiceAccountStatus\x12&\n" +
	"\"SERVICE_ACCOUNT_STATUS_UNSPECIFIED\x10\x00\x12!\n" +
	"\x1dSERVICE_ACCOUNT_STATUS_ACTIVE\x10\x01\x12\"\n" +
	"\x1eSERVICE_ACCOUNT_STATUS_REVOKED\x10\x02\x12\"\n" +
	"\x1eSERVICE_ACCOUNT_STATUS_EXPIRED\x10\x03*\x90\x01\n" +
	"\x0fUserTokenStatus\x12!\n" +
	"\x1dUSER_TOKEN_STATUS_UNSPECIFIED\x10\x00\x12\x1c\n" +
	"\x18USER_TOKEN_STATUS_ACTIVE\x10\x01\x12\x1d\n" +
	"\x19USER_TOKEN_STATUS_REVOKED\x10\x02\x12\x1d\n" +
	"\x19USER_TOKEN_STATUS_EXPIRED\x10\x032\xb9I\n" +
	"\fAdminService\x12h\n" +
	"\x04Ping\x12\x1a.tars.admin.v1.PingRequest\x1a\x1b.tars.admin.v1.PingResponse\"'\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\x82\xd3\xe4\x93\x02\x10\x12\x0e/admin/v1/ping\x90\x02\x01\x12\x9d\x01\n" +
	"\x0fCreateWorkspace\x12%.tars.admin.v1.CreateWorkspaceRequest\x1a&.tars.admin.v1.CreateWorkspaceResponse\";\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\n" +
	"Workspaces\x82\xd3\xe4\x93\x02\x19:\x01*\"\x14/admin/v1/workspaces\x12\x9a\x01\n" +
	"\x0eListWorkspaces\x12$.tars.admin.v1.ListWorkspacesRequest\x1a%.tars.admin.v1.ListWorkspacesResponse\";\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\n" +
	"Workspaces\x82\xd3\xe4\x93\x02\x16\x12\x14/admin/v1/workspaces\x90\x02\x01\x12\x99\x01\n" +
	"\fGetWorkspace\x12\".tars.admin.v1.GetWorkspaceRequest\x1a#.tars.admin.v1.GetWorkspaceResponse\"@\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\n" +
	"Workspaces\x82\xd3\xe4\x93\x02\x1b\x12\x19/admin/v1/workspaces/{id}\x90\x02\x01\x12\xa2\x01\n" +
	"\x0fUpdateWorkspace\x12%.tars.admin.v1.UpdateWorkspaceRequest\x1a&.tars.admin.v1.UpdateWorkspaceResponse\"@\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\n" +
	"Workspaces\x82\xd3\xe4\x93\x02\x1e:\x01*2\x19/admin/v1/workspaces/{id}\x12\xa6\x01\n" +
	"\x0fSetWorkspaceURL\x12%.tars.admin.v1.SetWorkspaceURLRequest\x1a&.tars.admin.v1.SetWorkspaceURLResponse\"D\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\n" +
	"Workspaces\x82\xd3\xe4\x93\x02\":\x01*\"\x1d/admin/v1/workspaces/{id}/url\x12\xb6\x01\n" +
	"\x13SetWorkspaceProject\x12).tars.admin.v1.SetWorkspaceProjectRequest\x1a*.tars.admin.v1.SetWorkspaceProjectResponse\"H\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\n" +
	"Workspaces\x82\xd3\xe4\x93\x02&:\x01*\"!/admin/v1/workspaces/{id}/project\x12\x9f\x01\n" +
	"\x0fDeleteWorkspace\x12%.tars.admin.v1.DeleteWorkspaceRequest\x1a&.tars.admin.v1.DeleteWorkspaceResponse\"=\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\n" +
	"Workspaces\x82\xd3\xe4\x93\x02\x1b*\x19/admin/v1/workspaces/{id}\x12\xb8\x01\n" +
	"\x14CreateServiceAccount\x12*.tars.admin.v1.CreateServiceAccountRequest\x1a+.tars.admin.v1.CreateServiceAccountResponse\"G\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x10Service Accounts\x82\xd3\xe4\x93\x02\x1f:\x01*\"\x1a/admin/v1/service-accounts\x12\xb5\x01\n" +
	"\x13ListServiceAccounts\x12).tars.admin.v1.ListServiceAccountsRequest\x1a*.tars.admin.v1.ListServiceAccountsResponse\"G\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x10Service Accounts\x82\xd3\xe4\x93\x02\x1c\x12\x1a/admin/v1/service-accounts\x90\x02\x01\x12\xb4\x01\n" +
	"\x11GetServiceAccount\x12'.tars.admin.v1.GetServiceAccountRequest\x1a(.tars.admin.v1.GetServiceAccountResponse\"L\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x10Service Accounts\x82\xd3\xe4\x93\x02!\x12\x1f/admin/v1/service-accounts/{id}\x90\x02\x01\x12\xc4\x01\n" +
	"\x14RevokeServiceAccount\x12*.tars.admin.v1.RevokeServiceAccountRequest\x1a+.tars.admin.v1.RevokeServiceAccountResponse\"S\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x10Service Accounts\x82\xd3\xe4\x93\x02+:\x01*\"&/admin/v1/service-accounts/{id}:revoke\x12\xc8\x01\n" +
	"\x15RestoreServiceAccount\x12+.tars.admin.v1.RestoreServiceAccountRequest\x1a,.tars.admin.v1.RestoreServiceAccountResponse\"T\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x10Service Accounts\x82\xd3\xe4\x93\x02,:\x01*\"'/admin/v1/service-accounts/{id}:restore\x12\x9f\x01\n" +
	"\x0fCreateUserToken\x12%.tars.admin.v1.CreateUserTokenRequest\x1a&.tars.admin.v1.CreateUserTokenResponse\"=\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\vUser Tokens\x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/admin/v1/user-tokens\x12\x9c\x01\n" +
	"\x0eListUserTokens\x12$.tars.admin.v1.ListUserTokensRequest\x1a%.tars.admin.v1.ListUserTokensResponse\"=\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\vUser Tokens\x82\xd3\xe4\x93\x02\x17\x12\x15/admin/v1/user-tokens\x90\x02\x01\x12\x9c\x01\n" +
	"\fGetUserToken\x12\".tars.admin.v1.GetUserTokenRequest\x1a#.tars.admin.v1.GetUserTokenResponse\"C\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\vUser Tokens\x82\xd3\xe4\x93\x02\x1d\x12\x1b/admin/v1/user-tokens/{jti}\x90\x02\x01\x12\xac\x01\n" +
	"\x0fRevokeUserToken\x12%.tars.admin.v1.RevokeUserTokenRequest\x1a&.tars.admin.v1.RevokeUserTokenResponse\"J\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\vUser Tokens\x82\xd3\xe4\x93\x02':\x01*\"\"/admin/v1/user-tokens/{jti}:revoke\x12\xb5\x01\n" +
	"\x15CreateTelemetryConfig\x12+.tars.admin.v1.CreateTelemetryConfigRequest\x1a,.tars.admin.v1.CreateTelemetryConfigResponse\"A\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\tTelemetry\x82\xd3\xe4\x93\x02 :\x01*\"\x1b/admin/v1/telemetry-configs\x12\xb2\x01\n" +
	"\x14ListTelemetryConfigs\x12*.tars.admin.v1.ListTelemetryConfigsRequest\x1a+.tars.admin.v1.ListTelemetryConfigsResponse\"A\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\tTelemetry\x82\xd3\xe4\x93\x02\x1d\x12\x1b/admin/v1/telemetry-configs\x90\x02\x01\x12\xb1\x01\n" +
	"\x12GetTelemetryConfig\x12(.tars.admin.v1.GetTelemetryConfigRequest\x1a).tars.admin.v1.GetTelemetryConfigResponse\"F\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\tTelemetry\x82\xd3\xe4\x93\x02\"\x12 /admin/v1/telemetry-configs/{id}\x90\x02\x01\x12\xba\x01\n" +
	"\x15UpdateTelemetryConfig\x12+.tars.admin.v1.UpdateTelemetryConfigRequest\x1a,.tars.admin.v1.UpdateTelemetryConfigResponse\"F\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\tTelemetry\x82\xd3\xe4\x93\x02%:\x01*2 /admin/v1/telemetry-configs/{id}\x12\xb7\x01\n" +
	"\x15DeleteTelemetryConfig\x12+.tars.admin.v1.DeleteTelemetryConfigRequest\x1a,.tars.admin.v1.DeleteTelemetryConfigResponse\"C\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\tTelemetry\x82\xd3\xe4\x93\x02\"* /admin/v1/telemetry-configs/{id}\x12\x98\x01\n" +
	"\x0eCreateCustomer\x12$.tars.admin.v1.CreateCustomerRequest\x1a%.tars.admin.v1.CreateCustomerResponse\"9\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\tCustomers\x82\xd3\xe4\x93\x02\x18:\x01*\"\x13/admin/v1/customers\x12\x95\x01\n" +
	"\rListCustomers\x12#.tars.admin.v1.ListCustomersRequest\x1a$.tars.admin.v1.ListCustomersResponse\"9\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\tCustomers\x82\xd3\xe4\x93\x02\x15\x12\x13/admin/v1/customers\x90\x02\x01\x12\x9d\x01\n" +
	"\vGetCustomer\x12!.tars.admin.v1.GetCustomerRequest\x1a\".tars.admin.v1.GetCustomerResponse\"G\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\tCustomers\x82\xd3\xe4\x93\x02#\x12!/admin/v1/customers/{customer_id}\x90\x02\x01\x12\xa6\x01\n" +
	"\x0eUpdateCustomer\x12$.tars.admin.v1.UpdateCustomerRequest\x1a%.tars.admin.v1.UpdateCustomerResponse\"G\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\tCustomers\x82\xd3\xe4\x93\x02&:\x01*2!/admin/v1/customers/{customer_id}\x12\xa3\x01\n" +
	"\x0eDeleteCustomer\x12$.tars.admin.v1.DeleteCustomerRequest\x1a%.tars.admin.v1.DeleteCustomerResponse\"D\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\tCustomers\x82\xd3\xe4\x93\x02#*!/admin/v1/customers/{customer_id}\x12\xab\x01\n" +
	"\rCreateProject\x12#.tars.admin.v1.CreateProjectRequest\x1a$.tars.admin.v1.CreateProjectResponse\"O\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\bProjects\x82\xd3\xe4\x93\x02/:\x01*\"*/admin/v1/customers/{customer_id}/projects\x12\xa8\x01\n" +
	"\fListProjects\x12\".tars.admin.v1.ListProjectsRequest\x1a#.tars.admin.v1.ListProjectsResponse\"O\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\bProjects\x82\xd3\xe4\x93\x02,\x12*/admin/v1/customers/{customer_id}/projects\x90\x02\x01\x12\xaf\x01\n" +
	"\n" +
	"GetProject\x12 .tars.admin.v1.GetProjectRequest\x1a!.tars.admin.v1.GetProjectResponse\"\\\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\bProjects\x82\xd3\xe4\x93\x029\x127/admin/v1/customers/{customer_id}/projects/{project_id}\x90\x02\x01\x12\xb8\x01\n" +
	"\rUpdateProject\x12#.tars.admin.v1.UpdateProjectRequest\x1a$.tars.admin.v1.UpdateProjectResponse\"\\\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\bProjects\x82\xd3\xe4\x93\x02<:\x01*27/admin/v1/customers/{customer_id}/projects/{project_id}\x12\xb5\x01\n" +
	"\rDeleteProject\x12#.tars.admin.v1.DeleteProjectRequest\x1a$.tars.admin.v1.DeleteProjectResponse\"Y\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\bProjects\x82\xd3\xe4\x93\x029*7/admin/v1/customers/{customer_id}/projects/{project_id}\x12\xd0\x01\n" +
	"\x10AddProjectMember\x12&.tars.admin.v1.AddProjectMemberRequest\x1a'.tars.admin.v1.AddProjectMemberResponse\"k\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x0fProject Members\x82\xd3\xe4\x93\x02D:\x01*\"?/admin/v1/customers/{customer_id}/projects/{project_id}/members\x12\xd6\x01\n" +
	"\x12ListProjectMembers\x12(.tars.admin.v1.ListProjectMembersRequest\x1a).tars.admin.v1.ListProjectMembersResponse\"k\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x0fProject Members\x82\xd3\xe4\x93\x02A\x12?/admin/v1/customers/{customer_id}/projects/{project_id}/members\x90\x02\x01\x12\xe3\x01\n" +
	"\x13UpdateProjectMember\x12).tars.admin.v1.UpdateProjectMemberRequest\x1a*.tars.admin.v1.UpdateProjectMemberResponse\"u\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x0fProject Members\x82\xd3\xe4\x93\x02N:\x01*2I/admin/v1/customers/{customer_id}/projects/{project_id}/members/{user_id}\x12\xe0\x01\n" +
	"\x13RemoveProjectMember\x12).tars.admin.v1.RemoveProjectMemberRequest\x1a*.tars.admin.v1.RemoveProjectMemberResponse\"r\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x0fProject Members\x82\xd3\xe4\x93\x02K*I/admin/v1/customers/{customer_id}/projects/{project_id}/members/{user_id}\x12\x86\x01\n" +
	"\n" +
	"ListModels\x12 .tars.admin.v1.ListModelsRequest\x1a!.tars.admin.v1.ListModelsResponse\"3\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x06Models\x82\xd3\xe4\x93\x02\x12\x12\x10/admin/v1/models\x90\x02\x01\x12\x8b\x01\n" +
	"\bGetModel\x12\x1e.tars.admin.v1.GetModelRequest\x1a\x1f.tars.admin.v1.GetModelResponse\">\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x06Models\x82\xd3\xe4\x93\x02\x1d\x12\x1b/admin/v1/models/{model_id}\x90\x02\x01\x12\xcb\x01\n" +
	"\x0fAddProjectModel\x12%.tars.admin.v1.AddProjectModelRequest\x1a&.tars.admin.v1.AddProjectModelResponse\"i\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x0eProject Models\x82\xd3\xe4\x93\x02C:\x01*\">/admin/v1/customers/{customer_id}/projects/{project_id}/models\x12\xd1\x01\n" +
	"\x11ListProjectModels\x12'.tars.admin.v1.ListProjectModelsRequest\x1a(.tars.admin.v1.ListProjectModelsResponse\"i\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x0eProject Models\x82\xd3\xe4\x93\x02@\x12>/admin/v1/customers/{customer_id}/projects/{project_id}/models\x90\x02\x01\x12\xdc\x01\n" +
	"\x12RemoveProjectModel\x12(.tars.admin.v1.RemoveProjectModelRequest\x1a).tars.admin.v1.RemoveProjectModelResponse\"q\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x0eProject Models\x82\xd3\xe4\x93\x02K*I/admin/v1/customers/{customer_id}/projects/{project_id}/models/{model_id}\x12\xda\x01\n" +
	"\x12AddProjectProvider\x12(.tars.admin.v1.AddProjectProviderRequest\x1a).tars.admin.v1.AddProjectProviderResponse\"o\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x11Project Providers\x82\xd3\xe4\x93\x02F:\x01*\"A/admin/v1/customers/{customer_id}/projects/{project_id}/providers\x12\xe0\x01\n" +
	"\x14ListProjectProviders\x12*.tars.admin.v1.ListProjectProvidersRequest\x1a+.tars.admin.v1.ListProjectProvidersResponse\"o\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x11Project Providers\x82\xd3\xe4\x93\x02C\x12A/admin/v1/customers/{customer_id}/projects/{project_id}/providers\x90\x02\x01\x12\xf0\x01\n" +
	"\x15RemoveProjectProvider\x12+.tars.admin.v1.RemoveProjectProviderRequest\x1a,.tars.admin.v1.RemoveProjectProviderResponse\"|\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x11Project Providers\x82\xd3\xe4\x93\x02S*Q/admin/v1/customers/{customer_id}/projects/{project_id}/providers/{provider_name}\x12\xe1\x01\n" +
	"\x13AddProjectMcpServer\x12).tars.admin.v1.AddProjectMcpServerRequest\x1a*.tars.admin.v1.AddProjectMcpServerResponse\"s\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x13Project MCP Servers\x82\xd3\xe4\x93\x02H:\x01*\"C/admin/v1/customers/{customer_id}/projects/{project_id}/mcp-servers\x12\xe7\x01\n" +
	"\x15ListProjectMcpServers\x12+.tars.admin.v1.ListProjectMcpServersRequest\x1a,.tars.admin.v1.ListProjectMcpServersResponse\"s\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x13Project MCP Servers\x82\xd3\xe4\x93\x02E\x12C/admin/v1/customers/{customer_id}/projects/{project_id}/mcp-servers\x90\x02\x01\x12\xf3\x01\n" +
	"\x16RemoveProjectMcpServer\x12,.tars.admin.v1.RemoveProjectMcpServerRequest\x1a-.tars.admin.v1.RemoveProjectMcpServerResponse\"|\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x13Project MCP Servers\x82\xd3\xe4\x93\x02Q*O/admin/v1/customers/{customer_id}/projects/{project_id}/mcp-servers/{server_id}\x12\xd8\x01\n" +
	"\x12GetProjectSettings\x12(.tars.admin.v1.GetProjectSettingsRequest\x1a).tars.admin.v1.GetProjectSettingsResponse\"m\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x10Project Settings\x82\xd3\xe4\x93\x02B\x12@/admin/v1/customers/{customer_id}/projects/{project_id}/settings\x90\x02\x01\x12\xed\x01\n" +
	"\x14UpsertProjectSetting\x12*.tars.admin.v1.UpsertProjectSettingRequest\x1a+.tars.admin.v1.UpsertProjectSettingResponse\"|\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x10Project Settings\x82\xd3\xe4\x93\x02T:\x01*\x1aO/admin/v1/customers/{customer_id}/projects/{project_id}/settings/{setting_name}\x12\xea\x01\n" +
	"\x14DeleteProjectSetting\x12*.tars.admin.v1.DeleteProjectSettingRequest\x1a+.tars.admin.v1.DeleteProjectSettingResponse\"y\x8a\xb5\x18\n" +
	"\n" +
	"\x01\x01\x12\x05admin\xaa\xb5\x18\x10Project Settings\x82\xd3\xe4\x93\x02Q*O/admin/v1/customers/{customer_id}/projects/{project_id}/settings/{setting_name}B\xac\x01\n" +
	"\x11com.tars.admin.v1B\n" +
	"AdminProtoP\x01Z5github.com/tetrateio/fraser/api/tars/admin/v1;adminv1\xa2\x02\x03TAX\xaa\x02\rTars.Admin.V1\xca\x02\rTars\\Admin\\V1\xe2\x02\x19Tars\\Admin\\V1\\GPBMetadata\xea\x02\x0fTars::Admin::V1b\x06proto3"

var (
	file_tars_admin_v1_admin_proto_rawDescOnce sync.Once
	file_tars_admin_v1_admin_proto_rawDescData []byte
)

func file_tars_admin_v1_admin_proto_rawDescGZIP() []byte {
	file_tars_admin_v1_admin_proto_rawDescOnce.Do(func() {
		file_tars_admin_v1_admin_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_tars_admin_v1_admin_proto_rawDesc), len(file_tars_admin_v1_admin_proto_rawDesc)))
	})
	return file_tars_admin_v1_admin_proto_rawDescData
}

var file_tars_admin_v1_admin_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_tars_admin_v1_admin_proto_msgTypes = make([]protoimpl.MessageInfo, 134)
var file_tars_admin_v1_admin_proto_goTypes = []any{
	(ServiceAccountStatus)(0),              // 0: tars.admin.v1.ServiceAccountStatus
	(UserTokenStatus)(0),                   // 1: tars.admin.v1.UserTokenStatus
	(*PingRequest)(nil),                    // 2: tars.admin.v1.PingRequest
	(*PingResponse)(nil),                   // 3: tars.admin.v1.PingResponse
	(*CreateWorkspaceRequest)(nil),         // 4: tars.admin.v1.CreateWorkspaceRequest
	(*CreateWorkspaceResponse)(nil),        // 5: tars.admin.v1.CreateWorkspaceResponse
	(*ListWorkspacesRequest)(nil),          // 6: tars.admin.v1.ListWorkspacesRequest
	(*ListWorkspacesResponse)(nil),         // 7: tars.admin.v1.ListWorkspacesResponse
	(*GetWorkspaceRequest)(nil),            // 8: tars.admin.v1.GetWorkspaceRequest
	(*GetWorkspaceResponse)(nil),           // 9: tars.admin.v1.GetWorkspaceResponse
	(*UpdateWorkspaceRequest)(nil),         // 10: tars.admin.v1.UpdateWorkspaceRequest
	(*UpdateWorkspaceResponse)(nil),        // 11: tars.admin.v1.UpdateWorkspaceResponse
	(*SetWorkspaceProjectRequest)(nil),     // 12: tars.admin.v1.SetWorkspaceProjectRequest
	(*SetWorkspaceProjectResponse)(nil),    // 13: tars.admin.v1.SetWorkspaceProjectResponse
	(*SetWorkspaceURLRequest)(nil),         // 14: tars.admin.v1.SetWorkspaceURLRequest
	(*SetWorkspaceURLResponse)(nil),        // 15: tars.admin.v1.SetWorkspaceURLResponse
	(*DeleteWorkspaceRequest)(nil),         // 16: tars.admin.v1.DeleteWorkspaceRequest
	(*DeleteWorkspaceResponse)(nil),        // 17: tars.admin.v1.DeleteWorkspaceResponse
	(*Workspace)(nil),                      // 18: tars.admin.v1.Workspace
	(*CreateServiceAccountRequest)(nil),    // 19: tars.admin.v1.CreateServiceAccountRequest
	(*CreateServiceAccountResponse)(nil),   // 20: tars.admin.v1.CreateServiceAccountResponse
	(*ServiceAccount)(nil),                 // 21: tars.admin.v1.ServiceAccount
	(*AuthServerConfig)(nil),               // 22: tars.admin.v1.AuthServerConfig
	(*GatekeeperConfig)(nil),               // 23: tars.admin.v1.GatekeeperConfig
	(*RouterConfig)(nil),                   // 24: tars.admin.v1.RouterConfig
	(*PublicKey)(nil),                      // 25: tars.admin.v1.PublicKey
	(*DataExportsConfig)(nil),              // 26: tars.admin.v1.DataExportsConfig
	(*TelemetryConfig)(nil),                // 27: tars.admin.v1.TelemetryConfig
	(*ListServiceAccountsRequest)(nil),     // 28: tars.admin.v1.ListServiceAccountsRequest
	(*ListServiceAccountsResponse)(nil),    // 29: tars.admin.v1.ListServiceAccountsResponse
	(*GetServiceAccountRequest)(nil),       // 30: tars.admin.v1.GetServiceAccountRequest
	(*GetServiceAccountResponse)(nil),      // 31: tars.admin.v1.GetServiceAccountResponse
	(*ServiceAccountInfo)(nil),             // 32: tars.admin.v1.ServiceAccountInfo
	(*RevokeServiceAccountRequest)(nil),    // 33: tars.admin.v1.RevokeServiceAccountRequest
	(*RevokeServiceAccountResponse)(nil),   // 34: tars.admin.v1.RevokeServiceAccountResponse
	(*RestoreServiceAccountRequest)(nil),   // 35: tars.admin.v1.RestoreServiceAccountRequest
	(*RestoreServiceAccountResponse)(nil),  // 36: tars.admin.v1.RestoreServiceAccountResponse
	(*CreateUserTokenRequest)(nil),         // 37: tars.admin.v1.CreateUserTokenRequest
	(*ImpersonationMetadata)(nil),          // 38: tars.admin.v1.ImpersonationMetadata
	(*CreateUserTokenResponse)(nil),        // 39: tars.admin.v1.CreateUserTokenResponse
	(*ListUserTokensRequest)(nil),          // 40: tars.admin.v1.ListUserTokensRequest
	(*ListUserTokensResponse)(nil),         // 41: tars.admin.v1.ListUserTokensResponse
	(*GetUserTokenRequest)(nil),            // 42: tars.admin.v1.GetUserTokenRequest
	(*GetUserTokenResponse)(nil),           // 43: tars.admin.v1.GetUserTokenResponse
	(*UserTokenInfo)(nil),                  // 44: tars.admin.v1.UserTokenInfo
	(*RevokeUserTokenRequest)(nil),         // 45: tars.admin.v1.RevokeUserTokenRequest
	(*RevokeUserTokenResponse)(nil),        // 46: tars.admin.v1.RevokeUserTokenResponse
	(*TelemetryForwardingConfig)(nil),      // 47: tars.admin.v1.TelemetryForwardingConfig
	(*CreateTelemetryConfigRequest)(nil),   // 48: tars.admin.v1.CreateTelemetryConfigRequest
	(*CreateTelemetryConfigResponse)(nil),  // 49: tars.admin.v1.CreateTelemetryConfigResponse
	(*ListTelemetryConfigsRequest)(nil),    // 50: tars.admin.v1.ListTelemetryConfigsRequest
	(*ListTelemetryConfigsResponse)(nil),   // 51: tars.admin.v1.ListTelemetryConfigsResponse
	(*GetTelemetryConfigRequest)(nil),      // 52: tars.admin.v1.GetTelemetryConfigRequest
	(*GetTelemetryConfigResponse)(nil),     // 53: tars.admin.v1.GetTelemetryConfigResponse
	(*UpdateTelemetryConfigRequest)(nil),   // 54: tars.admin.v1.UpdateTelemetryConfigRequest
	(*UpdateTelemetryConfigResponse)(nil),  // 55: tars.admin.v1.UpdateTelemetryConfigResponse
	(*DeleteTelemetryConfigRequest)(nil),   // 56: tars.admin.v1.DeleteTelemetryConfigRequest
	(*DeleteTelemetryConfigResponse)(nil),  // 57: tars.admin.v1.DeleteTelemetryConfigResponse
	(*Customer)(nil),                       // 58: tars.admin.v1.Customer
	(*CreateCustomerRequest)(nil),          // 59: tars.admin.v1.CreateCustomerRequest
	(*CreateCustomerResponse)(nil),         // 60: tars.admin.v1.CreateCustomerResponse
	(*ListCustomersRequest)(nil),           // 61: tars.admin.v1.ListCustomersRequest
	(*ListCustomersResponse)(nil),          // 62: tars.admin.v1.ListCustomersResponse
	(*GetCustomerRequest)(nil),             // 63: tars.admin.v1.GetCustomerRequest
	(*GetCustomerResponse)(nil),            // 64: tars.admin.v1.GetCustomerResponse
	(*UpdateCustomerRequest)(nil),          // 65: tars.admin.v1.UpdateCustomerRequest
	(*UpdateCustomerResponse)(nil),         // 66: tars.admin.v1.UpdateCustomerResponse
	(*DeleteCustomerRequest)(nil),          // 67: tars.admin.v1.DeleteCustomerRequest
	(*DeleteCustomerResponse)(nil),         // 68: tars.admin.v1.DeleteCustomerResponse
	(*Project)(nil),                        // 69: tars.admin.v1.Project
	(*CreateProjectRequest)(nil),           // 70: tars.admin.v1.CreateProjectRequest
	(*CreateProjectResponse)(nil),          // 71: tars.admin.v1.CreateProjectResponse
	(*ListProjectsRequest)(nil),            // 72: tars.admin.v1.ListProjectsRequest
	(*ListProjectsResponse)(nil),           // 73: tars.admin.v1.ListProjectsResponse
	(*GetProjectRequest)(nil),              // 74: tars.admin.v1.GetProjectRequest
	(*GetProjectResponse)(nil),             // 75: tars.admin.v1.GetProjectResponse
	(*UpdateProjectRequest)(nil),           // 76: tars.admin.v1.UpdateProjectRequest
	(*UpdateProjectResponse)(nil),          // 77: tars.admin.v1.UpdateProjectResponse
	(*DeleteProjectRequest)(nil),           // 78: tars.admin.v1.DeleteProjectRequest
	(*DeleteProjectResponse)(nil),          // 79: tars.admin.v1.DeleteProjectResponse
	(*ProjectMember)(nil),                  // 80: tars.admin.v1.ProjectMember
	(*AddProjectMemberRequest)(nil),        // 81: tars.admin.v1.AddProjectMemberRequest
	(*AddProjectMemberResponse)(nil),       // 82: tars.admin.v1.AddProjectMemberResponse
	(*ListProjectMembersRequest)(nil),      // 83: tars.admin.v1.ListProjectMembersRequest
	(*ListProjectMembersResponse)(nil),     // 84: tars.admin.v1.ListProjectMembersResponse
	(*UpdateProjectMemberRequest)(nil),     // 85: tars.admin.v1.UpdateProjectMemberRequest
	(*UpdateProjectMemberResponse)(nil),    // 86: tars.admin.v1.UpdateProjectMemberResponse
	(*RemoveProjectMemberRequest)(nil),     // 87: tars.admin.v1.RemoveProjectMemberRequest
	(*RemoveProjectMemberResponse)(nil),    // 88: tars.admin.v1.RemoveProjectMemberResponse
	(*AIModel)(nil),                        // 89: tars.admin.v1.AIModel
	(*ListModelsRequest)(nil),              // 90: tars.admin.v1.ListModelsRequest
	(*ListModelsResponse)(nil),             // 91: tars.admin.v1.ListModelsResponse
	(*GetModelRequest)(nil),                // 92: tars.admin.v1.GetModelRequest
	(*GetModelResponse)(nil),               // 93: tars.admin.v1.GetModelResponse
	(*ProjectModelEntry)(nil),              // 94: tars.admin.v1.ProjectModelEntry
	(*AddProjectModelRequest)(nil),         // 95: tars.admin.v1.AddProjectModelRequest
	(*AddProjectModelResponse)(nil),        // 96: tars.admin.v1.AddProjectModelResponse
	(*ListProjectModelsRequest)(nil),       // 97: tars.admin.v1.ListProjectModelsRequest
	(*ListProjectModelsResponse)(nil),      // 98: tars.admin.v1.ListProjectModelsResponse
	(*RemoveProjectModelRequest)(nil),      // 99: tars.admin.v1.RemoveProjectModelRequest
	(*RemoveProjectModelResponse)(nil),     // 100: tars.admin.v1.RemoveProjectModelResponse
	(*ProjectProviderEntry)(nil),           // 101: tars.admin.v1.ProjectProviderEntry
	(*AddProjectProviderRequest)(nil),      // 102: tars.admin.v1.AddProjectProviderRequest
	(*AddProjectProviderResponse)(nil),     // 103: tars.admin.v1.AddProjectProviderResponse
	(*ListProjectProvidersRequest)(nil),    // 104: tars.admin.v1.ListProjectProvidersRequest
	(*ListProjectProvidersResponse)(nil),   // 105: tars.admin.v1.ListProjectProvidersResponse
	(*RemoveProjectProviderRequest)(nil),   // 106: tars.admin.v1.RemoveProjectProviderRequest
	(*RemoveProjectProviderResponse)(nil),  // 107: tars.admin.v1.RemoveProjectProviderResponse
	(*ProjectMcpServerEntry)(nil),          // 108: tars.admin.v1.ProjectMcpServerEntry
	(*AddProjectMcpServerRequest)(nil),     // 109: tars.admin.v1.AddProjectMcpServerRequest
	(*AddProjectMcpServerResponse)(nil),    // 110: tars.admin.v1.AddProjectMcpServerResponse
	(*ListProjectMcpServersRequest)(nil),   // 111: tars.admin.v1.ListProjectMcpServersRequest
	(*ListProjectMcpServersResponse)(nil),  // 112: tars.admin.v1.ListProjectMcpServersResponse
	(*RemoveProjectMcpServerRequest)(nil),  // 113: tars.admin.v1.RemoveProjectMcpServerRequest
	(*RemoveProjectMcpServerResponse)(nil), // 114: tars.admin.v1.RemoveProjectMcpServerResponse
	(*ProjectSetting)(nil),                 // 115: tars.admin.v1.ProjectSetting
	(*GetProjectSettingsRequest)(nil),      // 116: tars.admin.v1.GetProjectSettingsRequest
	(*GetProjectSettingsResponse)(nil),     // 117: tars.admin.v1.GetProjectSettingsResponse
	(*UpsertProjectSettingRequest)(nil),    // 118: tars.admin.v1.UpsertProjectSettingRequest
	(*UpsertProjectSettingResponse)(nil),   // 119: tars.admin.v1.UpsertProjectSettingResponse
	(*DeleteProjectSettingRequest)(nil),    // 120: tars.admin.v1.DeleteProjectSettingRequest
	(*DeleteProjectSettingResponse)(nil),   // 121: tars.admin.v1.DeleteProjectSettingResponse
	nil,                                    // 122: tars.admin.v1.CreateWorkspaceRequest.LabelsEntry
	nil,                                    // 123: tars.admin.v1.UpdateWorkspaceRequest.LabelsEntry
	nil,                                    // 124: tars.admin.v1.Workspace.LabelsEntry
	nil,                                    // 125: tars.admin.v1.CreateServiceAccountRequest.TelemetryHeadersEntry
	nil,                                    // 126: tars.admin.v1.CreateServiceAccountRequest.TelemetryLocalVarsEntry
	nil,                                    // 127: tars.admin.v1.TelemetryConfig.HeadersEntry
	nil,                                    // 128: tars.admin.v1.ServiceAccountInfo.MetadataEntry
	nil,                                    // 129: tars.admin.v1.ImpersonationMetadata.ContextEntry
	nil,                                    // 130: tars.admin.v1.Customer.LabelsEntry
	nil,                                    // 131: tars.admin.v1.CreateCustomerRequest.LabelsEntry
	nil,                                    // 132: tars.admin.v1.UpdateCustomerRequest.LabelsEntry
	nil,                                    // 133: tars.admin.v1.Project.LabelsEntry
	nil,                                    // 134: tars.admin.v1.CreateProjectRequest.LabelsEntry
	nil,                                    // 135: tars.admin.v1.UpdateProjectRequest.LabelsEntry
	(*timestamppb.Timestamp)(nil),          // 136: google.protobuf.Timestamp
}
var file_tars_admin_v1_admin_proto_depIdxs = []int32{
	136, // 0: tars.admin.v1.PingResponse.timestamp:type_name -> google.protobuf.Timestamp
	122, // 1: tars.admin.v1.CreateWorkspaceRequest.labels:type_name -> tars.admin.v1.CreateWorkspaceRequest.LabelsEntry
	18,  // 2: tars.admin.v1.CreateWorkspaceResponse.workspace:type_name -> tars.admin.v1.Workspace
	18,  // 3: tars.admin.v1.ListWorkspacesResponse.workspaces:type_name -> tars.admin.v1.Workspace
	18,  // 4: tars.admin.v1.GetWorkspaceResponse.workspace:type_name -> tars.admin.v1.Workspace
	123, // 5: tars.admin.v1.UpdateWorkspaceRequest.labels:type_name -> tars.admin.v1.UpdateWorkspaceRequest.LabelsEntry
	18,  // 6: tars.admin.v1.UpdateWorkspaceResponse.workspace:type_name -> tars.admin.v1.Workspace
	18,  // 7: tars.admin.v1.SetWorkspaceProjectResponse.workspace:type_name -> tars.admin.v1.Workspace
	18,  // 8: tars.admin.v1.SetWorkspaceURLResponse.workspace:type_name -> tars.admin.v1.Workspace
	136, // 9: tars.admin.v1.DeleteWorkspaceResponse.deleted_at:type_name -> google.protobuf.Timestamp
	124, // 10: tars.admin.v1.Workspace.labels:type_name -> tars.admin.v1.Workspace.LabelsEntry
	136, // 11: tars.admin.v1.Workspace.created_at:type_name -> google.protobuf.Timestamp
	136, // 12: tars.admin.v1.Workspace.updated_at:type_name -> google.protobuf.Timestamp
	136, // 13: tars.admin.v1.Workspace.deleted_at:type_name -> google.protobuf.Timestamp
	125, // 14: tars.admin.v1.CreateServiceAccountRequest.telemetry_headers:type_name -> tars.admin.v1.CreateServiceAccountRequest.TelemetryHeadersEntry
	126, // 15: tars.admin.v1.CreateServiceAccountRequest.telemetry_local_vars:type_name -> tars.admin.v1.CreateServiceAccountRequest.TelemetryLocalVarsEntry
	21,  // 16: tars.admin.v1.CreateServiceAccountResponse.service_account:type_name -> tars.admin.v1.ServiceAccount
	22,  // 17: tars.admin.v1.ServiceAccount.auth_server:type_name -> tars.admin.v1.AuthServerConfig
	23,  // 18: tars.admin.v1.ServiceAccount.gatekeeper:type_name -> tars.admin.v1.GatekeeperConfig
	26,  // 19: tars.admin.v1.ServiceAccount.data_exports:type_name -> tars.admin.v1.DataExportsConfig
	136, // 20: tars.admin.v1.ServiceAccount.created_at:type_name -> google.protobuf.Timestamp
	136, // 21: tars.admin.v1.ServiceAccount.expires_at:type_name -> google.protobuf.Timestamp
	25,  // 22: tars.admin.v1.AuthServerConfig.public_keys:type_name -> tars.admin.v1.PublicKey
	25,  // 23: tars.admin.v1.GatekeeperConfig.public_keys:type_name -> tars.admin.v1.PublicKey
	24,  // 24: tars.admin.v1.GatekeeperConfig.router:type_name -> tars.admin.v1.RouterConfig
	27,  // 25: tars.admin.v1.DataExportsConfig.telemetry:type_name -> tars.admin.v1.TelemetryConfig
	127, // 26: tars.admin.v1.TelemetryConfig.headers:type_name -> tars.admin.v1.TelemetryConfig.HeadersEntry
	0,   // 27: tars.admin.v1.ListServiceAccountsRequest.status:type_name -> tars.admin.v1.ServiceAccountStatus
	32,  // 28: tars.admin.v1.ListServiceAccountsResponse.service_accounts:type_name -> tars.admin.v1.ServiceAccountInfo
	32,  // 29: tars.admin.v1.GetServiceAccountResponse.service_account:type_name -> tars.admin.v1.ServiceAccountInfo
	0,   // 30: tars.admin.v1.ServiceAccountInfo.status:type_name -> tars.admin.v1.ServiceAccountStatus
	136, // 31: tars.admin.v1.ServiceAccountInfo.created_at:type_name -> google.protobuf.Timestamp
	136, // 32: tars.admin.v1.ServiceAccountInfo.expires_at:type_name -> google.protobuf.Timestamp
	136, // 33: tars.admin.v1.ServiceAccountInfo.last_used_at:type_name -> google.protobuf.Timestamp
	128, // 34: tars.admin.v1.ServiceAccountInfo.metadata:type_name -> tars.admin.v1.ServiceAccountInfo.MetadataEntry
	136, // 35: tars.admin.v1.ServiceAccountInfo.revoked_at:type_name -> google.protobuf.Timestamp
	136, // 36: tars.admin.v1.RevokeServiceAccountResponse.revoked_at:type_name -> google.protobuf.Timestamp
	32,  // 37: tars.admin.v1.RestoreServiceAccountResponse.service_account:type_name -> tars.admin.v1.ServiceAccountInfo
	38,  // 38: tars.admin.v1.CreateUserTokenRequest.impersonation_metadata:type_name -> tars.admin.v1.ImpersonationMetadata
	129, // 39: tars.admin.v1.ImpersonationMetadata.context:type_name -> tars.admin.v1.ImpersonationMetadata.ContextEntry
	136, // 40: tars.admin.v1.CreateUserTokenResponse.expires_at:type_name -> google.protobuf.Timestamp
	1,   // 41: tars.admin.v1.ListUserTokensRequest.status:type_name -> tars.admin.v1.UserTokenStatus
	44,  // 42: tars.admin.v1.ListUserTokensResponse.tokens:type_name -> tars.admin.v1.UserTokenInfo
	44,  // 43: tars.admin.v1.GetUserTokenResponse.token:type_name -> tars.admin.v1.UserTokenInfo
	1,   // 44: tars.admin.v1.UserTokenInfo.status:type_name -> tars.admin.v1.UserTokenStatus
	136, // 45: tars.admin.v1.UserTokenInfo.created_at:type_name -> google.protobuf.Timestamp
	136, // 46: tars.admin.v1.UserTokenInfo.expires_at:type_name -> google.protobuf.Timestamp
	136, // 47: tars.admin.v1.UserTokenInfo.last_used_at:type_name -> google.protobuf.Timestamp
	136, // 48: tars.admin.v1.UserTokenInfo.revoked_at:type_name -> google.protobuf.Timestamp
	136, // 49: tars.admin.v1.RevokeUserTokenResponse.revoked_at:type_name -> google.protobuf.Timestamp
	136, // 50: tars.admin.v1.TelemetryForwardingConfig.last_checked_at:type_name -> google.protobuf.Timestamp
	136, // 51: tars.admin.v1.TelemetryForwardingConfig.created_at:type_name -> google.protobuf.Timestamp
	136, // 52: tars.admin.v1.TelemetryForwardingConfig.updated_at:type_name -> google.protobuf.Timestamp
	47,  // 53: tars.admin.v1.CreateTelemetryConfigResponse.config:type_name -> tars.admin.v1.TelemetryForwardingConfig
	47,  // 54: tars.admin.v1.ListTelemetryConfigsResponse.configs:type_name -> tars.admin.v1.TelemetryForwardingConfig
	47,  // 55: tars.admin.v1.GetTelemetryConfigResponse.config:type_name -> tars.admin.v1.TelemetryForwardingConfig
	47,  // 56: tars.admin.v1.UpdateTelemetryConfigResponse.config:type_name -> tars.admin.v1.TelemetryForwardingConfig
	130, // 57: tars.admin.v1.Customer.labels:type_name -> tars.admin.v1.Customer.LabelsEntry
	136, // 58: tars.admin.v1.Customer.created_at:type_name -> google.protobuf.Timestamp
	136, // 59: tars.admin.v1.Customer.updated_at:type_name -> google.protobuf.Timestamp
	136, // 60: tars.admin.v1.Customer.deleted_at:type_name -> google.protobuf.Timestamp
	131, // 61: tars.admin.v1.CreateCustomerRequest.labels:type_name -> tars.admin.v1.CreateCustomerRequest.LabelsEntry
	58,  // 62: tars.admin.v1.CreateCustomerResponse.customer:type_name -> tars.admin.v1.Customer
	58,  // 63: tars.admin.v1.ListCustomersResponse.customers:type_name -> tars.admin.v1.Customer
	58,  // 64: tars.admin.v1.GetCustomerResponse.customer:type_name -> tars.admin.v1.Customer
	132, // 65: tars.admin.v1.UpdateCustomerRequest.labels:type_name -> tars.admin.v1.UpdateCustomerRequest.LabelsEntry
	58,  // 66: tars.admin.v1.UpdateCustomerResponse.customer:type_name -> tars.admin.v1.Customer
	136, // 67: tars.admin.v1.DeleteCustomerResponse.deleted_at:type_name -> google.protobuf.Timestamp
	133, // 68: tars.admin.v1.Project.labels:type_name -> tars.admin.v1.Project.LabelsEntry
	136, // 69: tars.admin.v1.Project.created_at:type_name -> google.protobuf.Timestamp
	136, // 70: tars.admin.v1.Project.updated_at:type_name -> google.protobuf.Timestamp
	136, // 71: tars.admin.v1.Project.deleted_at:type_name -> google.protobuf.Timestamp
	134, // 72: tars.admin.v1.CreateProjectRequest.labels:type_name -> tars.admin.v1.CreateProjectRequest.LabelsEntry
	69,  // 73: tars.admin.v1.CreateProjectResponse.project:type_name -> tars.admin.v1.Project
	69,  // 74: tars.admin.v1.ListProjectsResponse.projects:type_name -> tars.admin.v1.Project
	69,  // 75: tars.admin.v1.GetProjectResponse.project:type_name -> tars.admin.v1.Project
	135, // 76: tars.admin.v1.UpdateProjectRequest.labels:type_name -> tars.admin.v1.UpdateProjectRequest.LabelsEntry
	69,  // 77: tars.admin.v1.UpdateProjectResponse.project:type_name -> tars.admin.v1.Project
	136, // 78: tars.admin.v1.DeleteProjectResponse.deleted_at:type_name -> google.protobuf.Timestamp
	136, // 79: tars.admin.v1.ProjectMember.created_at:type_name -> google.protobuf.Timestamp
	136, // 80: tars.admin.v1.ProjectMember.updated_at:type_name -> google.protobuf.Timestamp
	80,  // 81: tars.admin.v1.AddProjectMemberResponse.member:type_name -> tars.admin.v1.ProjectMember
	80,  // 82: tars.admin.v1.ListProjectMembersResponse.members:type_name -> tars.admin.v1.ProjectMember
	80,  // 83: tars.admin.v1.UpdateProjectMemberResponse.member:type_name -> tars.admin.v1.ProjectMember
	89,  // 84: tars.admin.v1.ListModelsResponse.models:type_name -> tars.admin.v1.AIModel
	89,  // 85: tars.admin.v1.GetModelResponse.model:type_name -> tars.admin.v1.AIModel
	89,  // 86: tars.admin.v1.ProjectModelEntry.model:type_name -> tars.admin.v1.AIModel
	136, // 87: tars.admin.v1.ProjectModelEntry.created_at:type_name -> google.protobuf.Timestamp
	94,  // 88: tars.admin.v1.AddProjectModelResponse.entry:type_name -> tars.admin.v1.ProjectModelEntry
	94,  // 89: tars.admin.v1.ListProjectModelsResponse.entries:type_name -> tars.admin.v1.ProjectModelEntry
	136, // 90: tars.admin.v1.ProjectProviderEntry.created_at:type_name -> google.protobuf.Timestamp
	101, // 91: tars.admin.v1.AddProjectProviderResponse.entry:type_name -> tars.admin.v1.ProjectProviderEntry
	101, // 92: tars.admin.v1.ListProjectProvidersResponse.entries:type_name -> tars.admin.v1.ProjectProviderEntry
	136, // 93: tars.admin.v1.ProjectMcpServerEntry.created_at:type_name -> google.protobuf.Timestamp
	108, // 94: tars.admin.v1.AddProjectMcpServerResponse.entry:type_name -> tars.admin.v1.ProjectMcpServerEntry
	108, // 95: tars.admin.v1.ListProjectMcpServersResponse.entries:type_name -> tars.admin.v1.ProjectMcpServerEntry
	136, // 96: tars.admin.v1.ProjectSetting.updated_at:type_name -> google.protobuf.Timestamp
	115, // 97: tars.admin.v1.GetProjectSettingsResponse.settings:type_name -> tars.admin.v1.ProjectSetting
	115, // 98: tars.admin.v1.UpsertProjectSettingResponse.setting:type_name -> tars.admin.v1.ProjectSetting
	2,   // 99: tars.admin.v1.AdminService.Ping:input_type -> tars.admin.v1.PingRequest
	4,   // 100: tars.admin.v1.AdminService.CreateWorkspace:input_type -> tars.admin.v1.CreateWorkspaceRequest
	6,   // 101: tars.admin.v1.AdminService.ListWorkspaces:input_type -> tars.admin.v1.ListWorkspacesRequest
	8,   // 102: tars.admin.v1.AdminService.GetWorkspace:input_type -> tars.admin.v1.GetWorkspaceRequest
	10,  // 103: tars.admin.v1.AdminService.UpdateWorkspace:input_type -> tars.admin.v1.UpdateWorkspaceRequest
	14,  // 104: tars.admin.v1.AdminService.SetWorkspaceURL:input_type -> tars.admin.v1.SetWorkspaceURLRequest
	12,  // 105: tars.admin.v1.AdminService.SetWorkspaceProject:input_type -> tars.admin.v1.SetWorkspaceProjectRequest
	16,  // 106: tars.admin.v1.AdminService.DeleteWorkspace:input_type -> tars.admin.v1.DeleteWorkspaceRequest
	19,  // 107: tars.admin.v1.AdminService.CreateServiceAccount:input_type -> tars.admin.v1.CreateServiceAccountRequest
	28,  // 108: tars.admin.v1.AdminService.ListServiceAccounts:input_type -> tars.admin.v1.ListServiceAccountsRequest
	30,  // 109: tars.admin.v1.AdminService.GetServiceAccount:input_type -> tars.admin.v1.GetServiceAccountRequest
	33,  // 110: tars.admin.v1.AdminService.RevokeServiceAccount:input_type -> tars.admin.v1.RevokeServiceAccountRequest
	35,  // 111: tars.admin.v1.AdminService.RestoreServiceAccount:input_type -> tars.admin.v1.RestoreServiceAccountRequest
	37,  // 112: tars.admin.v1.AdminService.CreateUserToken:input_type -> tars.admin.v1.CreateUserTokenRequest
	40,  // 113: tars.admin.v1.AdminService.ListUserTokens:input_type -> tars.admin.v1.ListUserTokensRequest
	42,  // 114: tars.admin.v1.AdminService.GetUserToken:input_type -> tars.admin.v1.GetUserTokenRequest
	45,  // 115: tars.admin.v1.AdminService.RevokeUserToken:input_type -> tars.admin.v1.RevokeUserTokenRequest
	48,  // 116: tars.admin.v1.AdminService.CreateTelemetryConfig:input_type -> tars.admin.v1.CreateTelemetryConfigRequest
	50,  // 117: tars.admin.v1.AdminService.ListTelemetryConfigs:input_type -> tars.admin.v1.ListTelemetryConfigsRequest
	52,  // 118: tars.admin.v1.AdminService.GetTelemetryConfig:input_type -> tars.admin.v1.GetTelemetryConfigRequest
	54,  // 119: tars.admin.v1.AdminService.UpdateTelemetryConfig:input_type -> tars.admin.v1.UpdateTelemetryConfigRequest
	56,  // 120: tars.admin.v1.AdminService.DeleteTelemetryConfig:input_type -> tars.admin.v1.DeleteTelemetryConfigRequest
	59,  // 121: tars.admin.v1.AdminService.CreateCustomer:input_type -> tars.admin.v1.CreateCustomerRequest
	61,  // 122: tars.admin.v1.AdminService.ListCustomers:input_type -> tars.admin.v1.ListCustomersRequest
	63,  // 123: tars.admin.v1.AdminService.GetCustomer:input_type -> tars.admin.v1.GetCustomerRequest
	65,  // 124: tars.admin.v1.AdminService.UpdateCustomer:input_type -> tars.admin.v1.UpdateCustomerRequest
	67,  // 125: tars.admin.v1.AdminService.DeleteCustomer:input_type -> tars.admin.v1.DeleteCustomerRequest
	70,  // 126: tars.admin.v1.AdminService.CreateProject:input_type -> tars.admin.v1.CreateProjectRequest
	72,  // 127: tars.admin.v1.AdminService.ListProjects:input_type -> tars.admin.v1.ListProjectsRequest
	74,  // 128: tars.admin.v1.AdminService.GetProject:input_type -> tars.admin.v1.GetProjectRequest
	76,  // 129: tars.admin.v1.AdminService.UpdateProject:input_type -> tars.admin.v1.UpdateProjectRequest
	78,  // 130: tars.admin.v1.AdminService.DeleteProject:input_type -> tars.admin.v1.DeleteProjectRequest
	81,  // 131: tars.admin.v1.AdminService.AddProjectMember:input_type -> tars.admin.v1.AddProjectMemberRequest
	83,  // 132: tars.admin.v1.AdminService.ListProjectMembers:input_type -> tars.admin.v1.ListProjectMembersRequest
	85,  // 133: tars.admin.v1.AdminService.UpdateProjectMember:input_type -> tars.admin.v1.UpdateProjectMemberRequest
	87,  // 134: tars.admin.v1.AdminService.RemoveProjectMember:input_type -> tars.admin.v1.RemoveProjectMemberRequest
	90,  // 135: tars.admin.v1.AdminService.ListModels:input_type -> tars.admin.v1.ListModelsRequest
	92,  // 136: tars.admin.v1.AdminService.GetModel:input_type -> tars.admin.v1.GetModelRequest
	95,  // 137: tars.admin.v1.AdminService.AddProjectModel:input_type -> tars.admin.v1.AddProjectModelRequest
	97,  // 138: tars.admin.v1.AdminService.ListProjectModels:input_type -> tars.admin.v1.ListProjectModelsRequest
	99,  // 139: tars.admin.v1.AdminService.RemoveProjectModel:input_type -> tars.admin.v1.RemoveProjectModelRequest
	102, // 140: tars.admin.v1.AdminService.AddProjectProvider:input_type -> tars.admin.v1.AddProjectProviderRequest
	104, // 141: tars.admin.v1.AdminService.ListProjectProviders:input_type -> tars.admin.v1.ListProjectProvidersRequest
	106, // 142: tars.admin.v1.AdminService.RemoveProjectProvider:input_type -> tars.admin.v1.RemoveProjectProviderRequest
	109, // 143: tars.admin.v1.AdminService.AddProjectMcpServer:input_type -> tars.admin.v1.AddProjectMcpServerRequest
	111, // 144: tars.admin.v1.AdminService.ListProjectMcpServers:input_type -> tars.admin.v1.ListProjectMcpServersRequest
	113, // 145: tars.admin.v1.AdminService.RemoveProjectMcpServer:input_type -> tars.admin.v1.RemoveProjectMcpServerRequest
	116, // 146: tars.admin.v1.AdminService.GetProjectSettings:input_type -> tars.admin.v1.GetProjectSettingsRequest
	118, // 147: tars.admin.v1.AdminService.UpsertProjectSetting:input_type -> tars.admin.v1.UpsertProjectSettingRequest
	120, // 148: tars.admin.v1.AdminService.DeleteProjectSetting:input_type -> tars.admin.v1.DeleteProjectSettingRequest
	3,   // 149: tars.admin.v1.AdminService.Ping:output_type -> tars.admin.v1.PingResponse
	5,   // 150: tars.admin.v1.AdminService.CreateWorkspace:output_type -> tars.admin.v1.CreateWorkspaceResponse
	7,   // 151: tars.admin.v1.AdminService.ListWorkspaces:output_type -> tars.admin.v1.ListWorkspacesResponse
	9,   // 152: tars.admin.v1.AdminService.GetWorkspace:output_type -> tars.admin.v1.GetWorkspaceResponse
	11,  // 153: tars.admin.v1.AdminService.UpdateWorkspace:output_type -> tars.admin.v1.UpdateWorkspaceResponse
	15,  // 154: tars.admin.v1.AdminService.SetWorkspaceURL:output_type -> tars.admin.v1.SetWorkspaceURLResponse
	13,  // 155: tars.admin.v1.AdminService.SetWorkspaceProject:output_type -> tars.admin.v1.SetWorkspaceProjectResponse
	17,  // 156: tars.admin.v1.AdminService.DeleteWorkspace:output_type -> tars.admin.v1.DeleteWorkspaceResponse
	20,  // 157: tars.admin.v1.AdminService.CreateServiceAccount:output_type -> tars.admin.v1.CreateServiceAccountResponse
	29,  // 158: tars.admin.v1.AdminService.ListServiceAccounts:output_type -> tars.admin.v1.ListServiceAccountsResponse
	31,  // 159: tars.admin.v1.AdminService.GetServiceAccount:output_type -> tars.admin.v1.GetServiceAccountResponse
	34,  // 160: tars.admin.v1.AdminService.RevokeServiceAccount:output_type -> tars.admin.v1.RevokeServiceAccountResponse
	36,  // 161: tars.admin.v1.AdminService.RestoreServiceAccount:output_type -> tars.admin.v1.RestoreServiceAccountResponse
	39,  // 162: tars.admin.v1.AdminService.CreateUserToken:output_type -> tars.admin.v1.CreateUserTokenResponse
	41,  // 163: tars.admin.v1.AdminService.ListUserTokens:output_type -> tars.admin.v1.ListUserTokensResponse
	43,  // 164: tars.admin.v1.AdminService.GetUserToken:output_type -> tars.admin.v1.GetUserTokenResponse
	46,  // 165: tars.admin.v1.AdminService.RevokeUserToken:output_type -> tars.admin.v1.RevokeUserTokenResponse
	49,  // 166: tars.admin.v1.AdminService.CreateTelemetryConfig:output_type -> tars.admin.v1.CreateTelemetryConfigResponse
	51,  // 167: tars.admin.v1.AdminService.ListTelemetryConfigs:output_type -> tars.admin.v1.ListTelemetryConfigsResponse
	53,  // 168: tars.admin.v1.AdminService.GetTelemetryConfig:output_type -> tars.admin.v1.GetTelemetryConfigResponse
	55,  // 169: tars.admin.v1.AdminService.UpdateTelemetryConfig:output_type -> tars.admin.v1.UpdateTelemetryConfigResponse
	57,  // 170: tars.admin.v1.AdminService.DeleteTelemetryConfig:output_type -> tars.admin.v1.DeleteTelemetryConfigResponse
	60,  // 171: tars.admin.v1.AdminService.CreateCustomer:output_type -> tars.admin.v1.CreateCustomerResponse
	62,  // 172: tars.admin.v1.AdminService.ListCustomers:output_type -> tars.admin.v1.ListCustomersResponse
	64,  // 173: tars.admin.v1.AdminService.GetCustomer:output_type -> tars.admin.v1.GetCustomerResponse
	66,  // 174: tars.admin.v1.AdminService.UpdateCustomer:output_type -> tars.admin.v1.UpdateCustomerResponse
	68,  // 175: tars.admin.v1.AdminService.DeleteCustomer:output_type -> tars.admin.v1.DeleteCustomerResponse
	71,  // 176: tars.admin.v1.AdminService.CreateProject:output_type -> tars.admin.v1.CreateProjectResponse
	73,  // 177: tars.admin.v1.AdminService.ListProjects:output_type -> tars.admin.v1.ListProjectsResponse
	75,  // 178: tars.admin.v1.AdminService.GetProject:output_type -> tars.admin.v1.GetProjectResponse
	77,  // 179: tars.admin.v1.AdminService.UpdateProject:output_type -> tars.admin.v1.UpdateProjectResponse
	79,  // 180: tars.admin.v1.AdminService.DeleteProject:output_type -> tars.admin.v1.DeleteProjectResponse
	82,  // 181: tars.admin.v1.AdminService.AddProjectMember:output_type -> tars.admin.v1.AddProjectMemberResponse
	84,  // 182: tars.admin.v1.AdminService.ListProjectMembers:output_type -> tars.admin.v1.ListProjectMembersResponse
	86,  // 183: tars.admin.v1.AdminService.UpdateProjectMember:output_type -> tars.admin.v1.UpdateProjectMemberResponse
	88,  // 184: tars.admin.v1.AdminService.RemoveProjectMember:output_type -> tars.admin.v1.RemoveProjectMemberResponse
	91,  // 185: tars.admin.v1.AdminService.ListModels:output_type -> tars.admin.v1.ListModelsResponse
	93,  // 186: tars.admin.v1.AdminService.GetModel:output_type -> tars.admin.v1.GetModelResponse
	96,  // 187: tars.admin.v1.AdminService.AddProjectModel:output_type -> tars.admin.v1.AddProjectModelResponse
	98,  // 188: tars.admin.v1.AdminService.ListProjectModels:output_type -> tars.admin.v1.ListProjectModelsResponse
	100, // 189: tars.admin.v1.AdminService.RemoveProjectModel:output_type -> tars.admin.v1.RemoveProjectModelResponse
	103, // 190: tars.admin.v1.AdminService.AddProjectProvider:output_type -> tars.admin.v1.AddProjectProviderResponse
	105, // 191: tars.admin.v1.AdminService.ListProjectProviders:output_type -> tars.admin.v1.ListProjectProvidersResponse
	107, // 192: tars.admin.v1.AdminService.RemoveProjectProvider:output_type -> tars.admin.v1.RemoveProjectProviderResponse
	110, // 193: tars.admin.v1.AdminService.AddProjectMcpServer:output_type -> tars.admin.v1.AddProjectMcpServerResponse
	112, // 194: tars.admin.v1.AdminService.ListProjectMcpServers:output_type -> tars.admin.v1.ListProjectMcpServersResponse
	114, // 195: tars.admin.v1.AdminService.RemoveProjectMcpServer:output_type -> tars.admin.v1.RemoveProjectMcpServerResponse
	117, // 196: tars.admin.v1.AdminService.GetProjectSettings:output_type -> tars.admin.v1.GetProjectSettingsResponse
	119, // 197: tars.admin.v1.AdminService.UpsertProjectSetting:output_type -> tars.admin.v1.UpsertProjectSettingResponse
	121, // 198: tars.admin.v1.AdminService.DeleteProjectSetting:output_type -> tars.admin.v1.DeleteProjectSettingResponse
	149, // [149:199] is the sub-list for method output_type
	99,  // [99:149] is the sub-list for method input_type
	99,  // [99:99] is the sub-list for extension type_name
	99,  // [99:99] is the sub-list for extension extendee
	0,   // [0:99] is the sub-list for field type_name
}

func init() { file_tars_admin_v1_admin_proto_init() }
func file_tars_admin_v1_admin_proto_init() {
	if File_tars_admin_v1_admin_proto != nil {
		return
	}
	file_tars_admin_v1_admin_proto_msgTypes[2].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[4].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[8].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[10].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[16].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[17].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[26].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[30].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[31].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[33].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[35].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[36].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[38].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[42].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[43].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[45].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[46].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[48].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[52].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[56].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[57].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[59].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[63].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[67].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[68].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[70].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[74].OneofWrappers = []any{}
	file_tars_admin_v1_admin_proto_msgTypes[87].OneofWrappers = []any{}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_tars_admin_v1_admin_proto_rawDesc), len(file_tars_admin_v1_admin_proto_rawDesc)),
			NumEnums:      2,
			NumMessages:   134,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_tars_admin_v1_admin_proto_goTypes,
		DependencyIndexes: file_tars_admin_v1_admin_proto_depIdxs,
		EnumInfos:         file_tars_admin_v1_admin_proto_enumTypes,
		MessageInfos:      file_tars_admin_v1_admin_proto_msgTypes,
	}.Build()
	File_tars_admin_v1_admin_proto = out.File
	file_tars_admin_v1_admin_proto_goTypes = nil
	file_tars_admin_v1_admin_proto_depIdxs = nil
}
