// McpOAuthClientsService -- project-scoped CRUD for the OAuth clients that
// front MCP servers.
//
// An OAuth client holds the credentials TARS uses to drive an OAuth
// authorization-code flow against an upstream identity provider on behalf
// of an MCP server: the client_id, the client_secret, the authorization /
// token endpoints, the requested scopes, and the redirect URIs. The
// client_secret is WRITE-ONLY: it is wrapped by the fraser secret service
// on the way in (an "sm://<name>" reference is persisted in
// client_secret_ref) and is NEVER returned on any response, exactly like
// the BYOK provider key in tars.aikeys.v1.
//
// Tenancy: every record is scoped to (customer_id, project_id). Writes
// (Create/Update/Delete) require the "project_owner" scope (project rw);
// reads (Get/List) carry no scope and are gated by the handler's project
// membership check (account tier), mirroring MCPProfilesService reads.
//
// Data model adapts the dashboard's mcp_server_oauth_clients table
// (src/db/schemas/mcpOauthClients.ts) into fraser's tenancy model.

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

package mcpv1

import (
	_ "github.com/tetrateio/agentrouter-go/genapi/api/tars/auth/v1"
	_ "github.com/tetrateio/agentrouter-go/genapi/api/tars/cli/v1"
	v1 "github.com/tetrateio/agentrouter-go/genapi/api/tars/common/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"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
	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)
)

// McpOAuthClient is the metadata projection of an mcp_server_oauth_clients
// row. The client_secret is never present on this message -- only the
// write requests carry it, and only as input.
type McpOAuthClient struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Server-assigned uuid row id. Output-only.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Owning customer scope. Defaults to the caller's session customer when
	// empty on the request; immutable once set.
	CustomerId string `protobuf:"bytes,2,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Owning project scope. Defaults to the caller's session project when
	// empty on the request; immutable once set.
	ProjectId string `protobuf:"bytes,3,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Stable provider key, e.g. "github", "google". Unique per
	// (customer, project). Required on create.
	Provider string `protobuf:"bytes,4,opt,name=provider,proto3" json:"provider,omitempty"`
	// Human-friendly display name for the provider, e.g. "GitHub".
	ProviderName string `protobuf:"bytes,5,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"`
	// OAuth client id issued by the upstream provider.
	ClientId string `protobuf:"bytes,6,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// OAuth authorization endpoint URL.
	AuthorizationUrl string `protobuf:"bytes,7,opt,name=authorization_url,json=authorizationUrl,proto3" json:"authorization_url,omitempty"`
	// OAuth token endpoint URL.
	TokenUrl string `protobuf:"bytes,8,opt,name=token_url,json=tokenUrl,proto3" json:"token_url,omitempty"`
	// OAuth scopes requested during the authorization flow.
	Scopes []string `protobuf:"bytes,9,rep,name=scopes,proto3" json:"scopes,omitempty"`
	// Allowed redirect URIs for the authorization-code flow.
	RedirectUris []string `protobuf:"bytes,10,rep,name=redirect_uris,json=redirectUris,proto3" json:"redirect_uris,omitempty"`
	// Free-form provider configuration (discovery_url, token_auth_method,
	// ...). Mirrors the dashboard's jsonb metadata column.
	Metadata map[string]string `protobuf:"bytes,11,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// MCP server ids this client serves. Empty means "all servers in the
	// project".
	ServerIds []string `protobuf:"bytes,12,rep,name=server_ids,json=serverIds,proto3" json:"server_ids,omitempty"`
	// Lifecycle status: "active" | "inactive" | "revoked".
	Status string `protobuf:"bytes,13,opt,name=status,proto3" json:"status,omitempty"`
	// Row creation time. Output-only.
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,50,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Last mutation time. Output-only.
	UpdatedAt     *timestamppb.Timestamp `protobuf:"bytes,51,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*McpOAuthClient) ProtoMessage() {}

func (x *McpOAuthClient) ProtoReflect() protoreflect.Message {
	mi := &file_tars_mcp_v1_mcp_oauth_clients_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 McpOAuthClient.ProtoReflect.Descriptor instead.
func (*McpOAuthClient) Descriptor() ([]byte, []int) {
	return file_tars_mcp_v1_mcp_oauth_clients_proto_rawDescGZIP(), []int{0}
}

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

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

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

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

func (x *McpOAuthClient) GetProviderName() string {
	if x != nil {
		return x.ProviderName
	}
	return ""
}

func (x *McpOAuthClient) GetClientId() string {
	if x != nil {
		return x.ClientId
	}
	return ""
}

func (x *McpOAuthClient) GetAuthorizationUrl() string {
	if x != nil {
		return x.AuthorizationUrl
	}
	return ""
}

func (x *McpOAuthClient) GetTokenUrl() string {
	if x != nil {
		return x.TokenUrl
	}
	return ""
}

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

func (x *McpOAuthClient) GetRedirectUris() []string {
	if x != nil {
		return x.RedirectUris
	}
	return nil
}

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

func (x *McpOAuthClient) GetServerIds() []string {
	if x != nil {
		return x.ServerIds
	}
	return nil
}

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

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

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

type CreateMcpOAuthClientRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Defaults to the caller's session customer when empty.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Defaults to the caller's session project when empty.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Required: stable provider key, e.g. "github".
	Provider string `protobuf:"bytes,3,opt,name=provider,proto3" json:"provider,omitempty"`
	// Required: human-friendly provider display name.
	ProviderName string `protobuf:"bytes,4,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"`
	// Required: OAuth client id from the provider.
	ClientId string `protobuf:"bytes,5,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// Required: OAuth client secret. WRITE-ONLY -- wrapped by the secret
	// service and never returned on any response.
	ClientSecret string `protobuf:"bytes,6,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"`
	// Required: OAuth authorization endpoint URL.
	AuthorizationUrl string `protobuf:"bytes,7,opt,name=authorization_url,json=authorizationUrl,proto3" json:"authorization_url,omitempty"`
	// Required: OAuth token endpoint URL.
	TokenUrl string `protobuf:"bytes,8,opt,name=token_url,json=tokenUrl,proto3" json:"token_url,omitempty"`
	// Optional: requested OAuth scopes.
	Scopes []string `protobuf:"bytes,9,rep,name=scopes,proto3" json:"scopes,omitempty"`
	// Optional: allowed redirect URIs.
	RedirectUris []string `protobuf:"bytes,10,rep,name=redirect_uris,json=redirectUris,proto3" json:"redirect_uris,omitempty"`
	// Optional: free-form provider configuration.
	Metadata map[string]string `protobuf:"bytes,11,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	// Optional: MCP server ids this client serves.
	ServerIds []string `protobuf:"bytes,12,rep,name=server_ids,json=serverIds,proto3" json:"server_ids,omitempty"`
	// Optional: initial status ("active" | "inactive"). Defaults to
	// "active" when empty.
	Status        string `protobuf:"bytes,13,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CreateMcpOAuthClientRequest) ProtoMessage() {}

func (x *CreateMcpOAuthClientRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_mcp_v1_mcp_oauth_clients_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 CreateMcpOAuthClientRequest.ProtoReflect.Descriptor instead.
func (*CreateMcpOAuthClientRequest) Descriptor() ([]byte, []int) {
	return file_tars_mcp_v1_mcp_oauth_clients_proto_rawDescGZIP(), []int{1}
}

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

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

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

func (x *CreateMcpOAuthClientRequest) GetProviderName() string {
	if x != nil {
		return x.ProviderName
	}
	return ""
}

func (x *CreateMcpOAuthClientRequest) GetClientId() string {
	if x != nil {
		return x.ClientId
	}
	return ""
}

func (x *CreateMcpOAuthClientRequest) GetClientSecret() string {
	if x != nil {
		return x.ClientSecret
	}
	return ""
}

func (x *CreateMcpOAuthClientRequest) GetAuthorizationUrl() string {
	if x != nil {
		return x.AuthorizationUrl
	}
	return ""
}

func (x *CreateMcpOAuthClientRequest) GetTokenUrl() string {
	if x != nil {
		return x.TokenUrl
	}
	return ""
}

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

func (x *CreateMcpOAuthClientRequest) GetRedirectUris() []string {
	if x != nil {
		return x.RedirectUris
	}
	return nil
}

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

func (x *CreateMcpOAuthClientRequest) GetServerIds() []string {
	if x != nil {
		return x.ServerIds
	}
	return nil
}

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

type GetMcpOAuthClientRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Defaults to the caller's session customer when empty.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Defaults to the caller's session project when empty.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Required: uuid of the client to fetch (McpOAuthClient.id).
	Id            string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetMcpOAuthClientRequest) ProtoMessage() {}

func (x *GetMcpOAuthClientRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_mcp_v1_mcp_oauth_clients_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 GetMcpOAuthClientRequest.ProtoReflect.Descriptor instead.
func (*GetMcpOAuthClientRequest) Descriptor() ([]byte, []int) {
	return file_tars_mcp_v1_mcp_oauth_clients_proto_rawDescGZIP(), []int{2}
}

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

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

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

type ListMcpOAuthClientsRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Defaults to the caller's session customer when empty.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Defaults to the caller's session project when empty.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Cursor-pagination inputs (page size + continuation token).
	Page          *v1.PageRequest `protobuf:"bytes,3,opt,name=page,proto3" json:"page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListMcpOAuthClientsRequest) ProtoMessage() {}

func (x *ListMcpOAuthClientsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_mcp_v1_mcp_oauth_clients_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 ListMcpOAuthClientsRequest.ProtoReflect.Descriptor instead.
func (*ListMcpOAuthClientsRequest) Descriptor() ([]byte, []int) {
	return file_tars_mcp_v1_mcp_oauth_clients_proto_rawDescGZIP(), []int{3}
}

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

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

func (x *ListMcpOAuthClientsRequest) GetPage() *v1.PageRequest {
	if x != nil {
		return x.Page
	}
	return nil
}

type ListMcpOAuthClientsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// OAuth clients in the requested scope (metadata only, no secrets).
	Clients []*McpOAuthClient `protobuf:"bytes,1,rep,name=clients,proto3" json:"clients,omitempty"`
	// Cursor-pagination outputs (next-page token).
	Page          *v1.PageResponse `protobuf:"bytes,2,opt,name=page,proto3" json:"page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListMcpOAuthClientsResponse) ProtoMessage() {}

func (x *ListMcpOAuthClientsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_mcp_v1_mcp_oauth_clients_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 ListMcpOAuthClientsResponse.ProtoReflect.Descriptor instead.
func (*ListMcpOAuthClientsResponse) Descriptor() ([]byte, []int) {
	return file_tars_mcp_v1_mcp_oauth_clients_proto_rawDescGZIP(), []int{4}
}

func (x *ListMcpOAuthClientsResponse) GetClients() []*McpOAuthClient {
	if x != nil {
		return x.Clients
	}
	return nil
}

func (x *ListMcpOAuthClientsResponse) GetPage() *v1.PageResponse {
	if x != nil {
		return x.Page
	}
	return nil
}

type UpdateMcpOAuthClientRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Defaults to the caller's session customer when empty.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Defaults to the caller's session project when empty.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Required: uuid of the client to update (McpOAuthClient.id).
	Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"`
	// Mutable scalar fields. Empty string leaves the existing value
	// untouched.
	ProviderName string `protobuf:"bytes,4,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"`
	ClientId     string `protobuf:"bytes,5,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// Optional: a non-empty value rotates the wrapped client secret in
	// place. Empty leaves the stored secret untouched. WRITE-ONLY.
	ClientSecret     string `protobuf:"bytes,6,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"`
	AuthorizationUrl string `protobuf:"bytes,7,opt,name=authorization_url,json=authorizationUrl,proto3" json:"authorization_url,omitempty"`
	TokenUrl         string `protobuf:"bytes,8,opt,name=token_url,json=tokenUrl,proto3" json:"token_url,omitempty"`
	Status           string `protobuf:"bytes,9,opt,name=status,proto3" json:"status,omitempty"`
	// Repeated / map fields: a non-nil value REPLACES the stored value;
	// a nil/omitted value leaves it untouched (see the replace_* flags).
	Scopes       []string          `protobuf:"bytes,10,rep,name=scopes,proto3" json:"scopes,omitempty"`
	RedirectUris []string          `protobuf:"bytes,11,rep,name=redirect_uris,json=redirectUris,proto3" json:"redirect_uris,omitempty"`
	Metadata     map[string]string `protobuf:"bytes,12,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	ServerIds    []string          `protobuf:"bytes,13,rep,name=server_ids,json=serverIds,proto3" json:"server_ids,omitempty"`
	// Because proto3 cannot distinguish an omitted repeated/map field from
	// an explicit "set to empty", these booleans opt in to clearing the
	// matching collection. When false, an empty scopes/redirect_uris/
	// metadata/server_ids is treated as "leave untouched".
	ReplaceScopes       bool `protobuf:"varint,20,opt,name=replace_scopes,json=replaceScopes,proto3" json:"replace_scopes,omitempty"`
	ReplaceRedirectUris bool `protobuf:"varint,21,opt,name=replace_redirect_uris,json=replaceRedirectUris,proto3" json:"replace_redirect_uris,omitempty"`
	ReplaceMetadata     bool `protobuf:"varint,22,opt,name=replace_metadata,json=replaceMetadata,proto3" json:"replace_metadata,omitempty"`
	ReplaceServerIds    bool `protobuf:"varint,23,opt,name=replace_server_ids,json=replaceServerIds,proto3" json:"replace_server_ids,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

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

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

func (*UpdateMcpOAuthClientRequest) ProtoMessage() {}

func (x *UpdateMcpOAuthClientRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_mcp_v1_mcp_oauth_clients_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 UpdateMcpOAuthClientRequest.ProtoReflect.Descriptor instead.
func (*UpdateMcpOAuthClientRequest) Descriptor() ([]byte, []int) {
	return file_tars_mcp_v1_mcp_oauth_clients_proto_rawDescGZIP(), []int{5}
}

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

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

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

func (x *UpdateMcpOAuthClientRequest) GetProviderName() string {
	if x != nil {
		return x.ProviderName
	}
	return ""
}

func (x *UpdateMcpOAuthClientRequest) GetClientId() string {
	if x != nil {
		return x.ClientId
	}
	return ""
}

func (x *UpdateMcpOAuthClientRequest) GetClientSecret() string {
	if x != nil {
		return x.ClientSecret
	}
	return ""
}

func (x *UpdateMcpOAuthClientRequest) GetAuthorizationUrl() string {
	if x != nil {
		return x.AuthorizationUrl
	}
	return ""
}

func (x *UpdateMcpOAuthClientRequest) GetTokenUrl() string {
	if x != nil {
		return x.TokenUrl
	}
	return ""
}

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

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

func (x *UpdateMcpOAuthClientRequest) GetRedirectUris() []string {
	if x != nil {
		return x.RedirectUris
	}
	return nil
}

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

func (x *UpdateMcpOAuthClientRequest) GetServerIds() []string {
	if x != nil {
		return x.ServerIds
	}
	return nil
}

func (x *UpdateMcpOAuthClientRequest) GetReplaceScopes() bool {
	if x != nil {
		return x.ReplaceScopes
	}
	return false
}

func (x *UpdateMcpOAuthClientRequest) GetReplaceRedirectUris() bool {
	if x != nil {
		return x.ReplaceRedirectUris
	}
	return false
}

func (x *UpdateMcpOAuthClientRequest) GetReplaceMetadata() bool {
	if x != nil {
		return x.ReplaceMetadata
	}
	return false
}

func (x *UpdateMcpOAuthClientRequest) GetReplaceServerIds() bool {
	if x != nil {
		return x.ReplaceServerIds
	}
	return false
}

type DeleteMcpOAuthClientRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Defaults to the caller's session customer when empty.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Defaults to the caller's session project when empty.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Required: uuid of the client to soft-delete (McpOAuthClient.id).
	Id            string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*DeleteMcpOAuthClientRequest) ProtoMessage() {}

func (x *DeleteMcpOAuthClientRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_mcp_v1_mcp_oauth_clients_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 DeleteMcpOAuthClientRequest.ProtoReflect.Descriptor instead.
func (*DeleteMcpOAuthClientRequest) Descriptor() ([]byte, []int) {
	return file_tars_mcp_v1_mcp_oauth_clients_proto_rawDescGZIP(), []int{6}
}

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

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

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

var File_tars_mcp_v1_mcp_oauth_clients_proto protoreflect.FileDescriptor

const file_tars_mcp_v1_mcp_oauth_clients_proto_rawDesc = "" +
	"\n" +
	"#tars/mcp/v1/mcp_oauth_clients.proto\x12\vtars.mcp.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1ftars/auth/v1/auth_options.proto\x1a\x15tars/cli/v1/cli.proto\x1a\x1atars/common/v1/types.proto\x1a\x17tars/docs/v1/docs.proto\"\xa8\x05\n" +
	"\x0eMcpOAuthClient\x12\x13\n" +
	"\x02id\x18\x01 \x01(\tB\x03\xe0A\x03R\x02id\x12$\n" +
	"\vcustomer_id\x18\x02 \x01(\tB\x03\xe0A\x03R\n" +
	"customerId\x12\"\n" +
	"\n" +
	"project_id\x18\x03 \x01(\tB\x03\xe0A\x03R\tprojectId\x12\x1f\n" +
	"\bprovider\x18\x04 \x01(\tB\x03\xe0A\x02R\bprovider\x12(\n" +
	"\rprovider_name\x18\x05 \x01(\tB\x03\xe0A\x02R\fproviderName\x12 \n" +
	"\tclient_id\x18\x06 \x01(\tB\x03\xe0A\x02R\bclientId\x120\n" +
	"\x11authorization_url\x18\a \x01(\tB\x03\xe0A\x02R\x10authorizationUrl\x12 \n" +
	"\ttoken_url\x18\b \x01(\tB\x03\xe0A\x02R\btokenUrl\x12\x16\n" +
	"\x06scopes\x18\t \x03(\tR\x06scopes\x12#\n" +
	"\rredirect_uris\x18\n" +
	" \x03(\tR\fredirectUris\x12E\n" +
	"\bmetadata\x18\v \x03(\v2).tars.mcp.v1.McpOAuthClient.MetadataEntryR\bmetadata\x12\x1d\n" +
	"\n" +
	"server_ids\x18\f \x03(\tR\tserverIds\x12\x16\n" +
	"\x06status\x18\r \x01(\tR\x06status\x12>\n" +
	"\n" +
	"created_at\x182 \x01(\v2\x1a.google.protobuf.TimestampB\x03\xe0A\x03R\tcreatedAt\x12>\n" +
	"\n" +
	"updated_at\x183 \x01(\v2\x1a.google.protobuf.TimestampB\x03\xe0A\x03R\tupdatedAt\x1a;\n" +
	"\rMetadataEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xe0\x04\n" +
	"\x1bCreateMcpOAuthClientRequest\x12\x1f\n" +
	"\vcustomer_id\x18\x01 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12\x1f\n" +
	"\bprovider\x18\x03 \x01(\tB\x03\xe0A\x02R\bprovider\x12(\n" +
	"\rprovider_name\x18\x04 \x01(\tB\x03\xe0A\x02R\fproviderName\x12 \n" +
	"\tclient_id\x18\x05 \x01(\tB\x03\xe0A\x02R\bclientId\x12;\n" +
	"\rclient_secret\x18\x06 \x01(\tB\x16\xe0A\x02\x9a\xb5\x18\x0f\n" +
	"\rclient-secretR\fclientSecret\x120\n" +
	"\x11authorization_url\x18\a \x01(\tB\x03\xe0A\x02R\x10authorizationUrl\x12 \n" +
	"\ttoken_url\x18\b \x01(\tB\x03\xe0A\x02R\btokenUrl\x12\x16\n" +
	"\x06scopes\x18\t \x03(\tR\x06scopes\x12#\n" +
	"\rredirect_uris\x18\n" +
	" \x03(\tR\fredirectUris\x12R\n" +
	"\bmetadata\x18\v \x03(\v26.tars.mcp.v1.CreateMcpOAuthClientRequest.MetadataEntryR\bmetadata\x12\x1d\n" +
	"\n" +
	"server_ids\x18\f \x03(\tR\tserverIds\x12\x16\n" +
	"\x06status\x18\r \x01(\tR\x06status\x1a;\n" +
	"\rMetadataEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"o\n" +
	"\x18GetMcpOAuthClientRequest\x12\x1f\n" +
	"\vcustomer_id\x18\x01 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12\x13\n" +
	"\x02id\x18\x03 \x01(\tB\x03\xe0A\x02R\x02id\"\x8d\x01\n" +
	"\x1aListMcpOAuthClientsRequest\x12\x1f\n" +
	"\vcustomer_id\x18\x01 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12/\n" +
	"\x04page\x18\x03 \x01(\v2\x1b.tars.common.v1.PageRequestR\x04page\"\x86\x01\n" +
	"\x1bListMcpOAuthClientsResponse\x125\n" +
	"\aclients\x18\x01 \x03(\v2\x1b.tars.mcp.v1.McpOAuthClientR\aclients\x120\n" +
	"\x04page\x18\x02 \x01(\v2\x1c.tars.common.v1.PageResponseR\x04page\"\xf1\x05\n" +
	"\x1bUpdateMcpOAuthClientRequest\x12\x1f\n" +
	"\vcustomer_id\x18\x01 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12\x13\n" +
	"\x02id\x18\x03 \x01(\tB\x03\xe0A\x02R\x02id\x12#\n" +
	"\rprovider_name\x18\x04 \x01(\tR\fproviderName\x12\x1b\n" +
	"\tclient_id\x18\x05 \x01(\tR\bclientId\x128\n" +
	"\rclient_secret\x18\x06 \x01(\tB\x13\x9a\xb5\x18\x0f\n" +
	"\rclient-secretR\fclientSecret\x12+\n" +
	"\x11authorization_url\x18\a \x01(\tR\x10authorizationUrl\x12\x1b\n" +
	"\ttoken_url\x18\b \x01(\tR\btokenUrl\x12\x16\n" +
	"\x06status\x18\t \x01(\tR\x06status\x12\x16\n" +
	"\x06scopes\x18\n" +
	" \x03(\tR\x06scopes\x12#\n" +
	"\rredirect_uris\x18\v \x03(\tR\fredirectUris\x12R\n" +
	"\bmetadata\x18\f \x03(\v26.tars.mcp.v1.UpdateMcpOAuthClientRequest.MetadataEntryR\bmetadata\x12\x1d\n" +
	"\n" +
	"server_ids\x18\r \x03(\tR\tserverIds\x12%\n" +
	"\x0ereplace_scopes\x18\x14 \x01(\bR\rreplaceScopes\x122\n" +
	"\x15replace_redirect_uris\x18\x15 \x01(\bR\x13replaceRedirectUris\x12)\n" +
	"\x10replace_metadata\x18\x16 \x01(\bR\x0freplaceMetadata\x12,\n" +
	"\x12replace_server_ids\x18\x17 \x01(\bR\x10replaceServerIds\x1a;\n" +
	"\rMetadataEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"r\n" +
	"\x1bDeleteMcpOAuthClientRequest\x12\x1f\n" +
	"\vcustomer_id\x18\x01 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12\x13\n" +
	"\x02id\x18\x03 \x01(\tB\x03\xe0A\x02R\x02id2\xf5\n" +
	"\n" +
	"\x16McpOAuthClientsService\x12\x94\x02\n" +
	"\x14CreateMcpOAuthClient\x12(.tars.mcp.v1.CreateMcpOAuthClientRequest\x1a\x1b.tars.mcp.v1.McpOAuthClient\"\xb4\x01\x8a\xb5\x18\x13\n" +
	"\x02\x03\x01\x12\rproject_owner\x92\xb5\x18\x1c:\x03mcp:\roauth-clients:\x06create\xa2\xb5\x18\x1aCreate an MCP OAuth client\xaa\xb5\x18\rOAuth Clients\x82\xd3\xe4\x93\x02H:\x01*\"C/v1/customers/{customer_id}/projects/{project_id}/mcp-oauth-clients\x12\x82\x02\n" +
	"\x11GetMcpOAuthClient\x12%.tars.mcp.v1.GetMcpOAuthClientRequest\x1a\x1b.tars.mcp.v1.McpOAuthClient\"\xa8\x01\x8a\xb5\x18\x04\n" +
	"\x02\x03\x01\x92\xb5\x18\x1d\x1a\x02id:\x03mcp:\roauth-clients:\x03get\xa2\xb5\x18\x17Get an MCP OAuth client\xaa\xb5\x18\rOAuth Clients\x82\xd3\xe4\x93\x02J\x12H/v1/customers/{customer_id}/projects/{project_id}/mcp-oauth-clients/{id}\x90\x02\x01\x12\x8a\x02\n" +
	"\x13ListMcpOAuthClients\x12'.tars.mcp.v1.ListMcpOAuthClientsRequest\x1a(.tars.mcp.v1.ListMcpOAuthClientsResponse\"\x9f\x01\x8a\xb5\x18\x04\n" +
	"\x02\x03\x01\x92\xb5\x18\x1a:\x03mcp:\roauth-clients:\x04list\xa2\xb5\x18\x16List MCP OAuth clients\xaa\xb5\x18\rOAuth Clients\x82\xd3\xe4\x93\x02E\x12C/v1/customers/{customer_id}/projects/{project_id}/mcp-oauth-clients\x90\x02\x01\x12\x99\x02\n" +
	"\x14UpdateMcpOAuthClient\x12(.tars.mcp.v1.UpdateMcpOAuthClientRequest\x1a\x1b.tars.mcp.v1.McpOAuthClient\"\xb9\x01\x8a\xb5\x18\x13\n" +
	"\x02\x03\x01\x12\rproject_owner\x92\xb5\x18\x1c:\x03mcp:\roauth-clients:\x06update\xa2\xb5\x18\x1aUpdate an MCP OAuth client\xaa\xb5\x18\rOAuth Clients\x82\xd3\xe4\x93\x02M:\x01*2H/v1/customers/{customer_id}/projects/{project_id}/mcp-oauth-clients/{id}\x12\x95\x02\n" +
	"\x14DeleteMcpOAuthClient\x12(.tars.mcp.v1.DeleteMcpOAuthClientRequest\x1a\x16.google.protobuf.Empty\"\xba\x01\x8a\xb5\x18\x13\n" +
	"\x02\x03\x01\x12\rproject_owner\x92\xb5\x18 \x1a\x02id:\x03mcp:\roauth-clients:\x06delete\xa2\xb5\x18\x1aDelete an MCP OAuth client\xaa\xb5\x18\rOAuth Clients\x82\xd3\xe4\x93\x02J*H/v1/customers/{customer_id}/projects/{project_id}/mcp-oauth-clients/{id}B\xa8\x01\n" +
	"\x0fcom.tars.mcp.v1B\x14McpOauthClientsProtoP\x01Z1github.com/tetrateio/fraser/api/tars/mcp/v1;mcpv1\xa2\x02\x03TMX\xaa\x02\vTars.Mcp.V1\xca\x02\vTars\\Mcp\\V1\xe2\x02\x17Tars\\Mcp\\V1\\GPBMetadata\xea\x02\rTars::Mcp::V1b\x06proto3"

var (
	file_tars_mcp_v1_mcp_oauth_clients_proto_rawDescOnce sync.Once
	file_tars_mcp_v1_mcp_oauth_clients_proto_rawDescData []byte
)

func file_tars_mcp_v1_mcp_oauth_clients_proto_rawDescGZIP() []byte {
	file_tars_mcp_v1_mcp_oauth_clients_proto_rawDescOnce.Do(func() {
		file_tars_mcp_v1_mcp_oauth_clients_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_tars_mcp_v1_mcp_oauth_clients_proto_rawDesc), len(file_tars_mcp_v1_mcp_oauth_clients_proto_rawDesc)))
	})
	return file_tars_mcp_v1_mcp_oauth_clients_proto_rawDescData
}

var file_tars_mcp_v1_mcp_oauth_clients_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
var file_tars_mcp_v1_mcp_oauth_clients_proto_goTypes = []any{
	(*McpOAuthClient)(nil),              // 0: tars.mcp.v1.McpOAuthClient
	(*CreateMcpOAuthClientRequest)(nil), // 1: tars.mcp.v1.CreateMcpOAuthClientRequest
	(*GetMcpOAuthClientRequest)(nil),    // 2: tars.mcp.v1.GetMcpOAuthClientRequest
	(*ListMcpOAuthClientsRequest)(nil),  // 3: tars.mcp.v1.ListMcpOAuthClientsRequest
	(*ListMcpOAuthClientsResponse)(nil), // 4: tars.mcp.v1.ListMcpOAuthClientsResponse
	(*UpdateMcpOAuthClientRequest)(nil), // 5: tars.mcp.v1.UpdateMcpOAuthClientRequest
	(*DeleteMcpOAuthClientRequest)(nil), // 6: tars.mcp.v1.DeleteMcpOAuthClientRequest
	nil,                                 // 7: tars.mcp.v1.McpOAuthClient.MetadataEntry
	nil,                                 // 8: tars.mcp.v1.CreateMcpOAuthClientRequest.MetadataEntry
	nil,                                 // 9: tars.mcp.v1.UpdateMcpOAuthClientRequest.MetadataEntry
	(*timestamppb.Timestamp)(nil),       // 10: google.protobuf.Timestamp
	(*v1.PageRequest)(nil),              // 11: tars.common.v1.PageRequest
	(*v1.PageResponse)(nil),             // 12: tars.common.v1.PageResponse
	(*emptypb.Empty)(nil),               // 13: google.protobuf.Empty
}
var file_tars_mcp_v1_mcp_oauth_clients_proto_depIdxs = []int32{
	7,  // 0: tars.mcp.v1.McpOAuthClient.metadata:type_name -> tars.mcp.v1.McpOAuthClient.MetadataEntry
	10, // 1: tars.mcp.v1.McpOAuthClient.created_at:type_name -> google.protobuf.Timestamp
	10, // 2: tars.mcp.v1.McpOAuthClient.updated_at:type_name -> google.protobuf.Timestamp
	8,  // 3: tars.mcp.v1.CreateMcpOAuthClientRequest.metadata:type_name -> tars.mcp.v1.CreateMcpOAuthClientRequest.MetadataEntry
	11, // 4: tars.mcp.v1.ListMcpOAuthClientsRequest.page:type_name -> tars.common.v1.PageRequest
	0,  // 5: tars.mcp.v1.ListMcpOAuthClientsResponse.clients:type_name -> tars.mcp.v1.McpOAuthClient
	12, // 6: tars.mcp.v1.ListMcpOAuthClientsResponse.page:type_name -> tars.common.v1.PageResponse
	9,  // 7: tars.mcp.v1.UpdateMcpOAuthClientRequest.metadata:type_name -> tars.mcp.v1.UpdateMcpOAuthClientRequest.MetadataEntry
	1,  // 8: tars.mcp.v1.McpOAuthClientsService.CreateMcpOAuthClient:input_type -> tars.mcp.v1.CreateMcpOAuthClientRequest
	2,  // 9: tars.mcp.v1.McpOAuthClientsService.GetMcpOAuthClient:input_type -> tars.mcp.v1.GetMcpOAuthClientRequest
	3,  // 10: tars.mcp.v1.McpOAuthClientsService.ListMcpOAuthClients:input_type -> tars.mcp.v1.ListMcpOAuthClientsRequest
	5,  // 11: tars.mcp.v1.McpOAuthClientsService.UpdateMcpOAuthClient:input_type -> tars.mcp.v1.UpdateMcpOAuthClientRequest
	6,  // 12: tars.mcp.v1.McpOAuthClientsService.DeleteMcpOAuthClient:input_type -> tars.mcp.v1.DeleteMcpOAuthClientRequest
	0,  // 13: tars.mcp.v1.McpOAuthClientsService.CreateMcpOAuthClient:output_type -> tars.mcp.v1.McpOAuthClient
	0,  // 14: tars.mcp.v1.McpOAuthClientsService.GetMcpOAuthClient:output_type -> tars.mcp.v1.McpOAuthClient
	4,  // 15: tars.mcp.v1.McpOAuthClientsService.ListMcpOAuthClients:output_type -> tars.mcp.v1.ListMcpOAuthClientsResponse
	0,  // 16: tars.mcp.v1.McpOAuthClientsService.UpdateMcpOAuthClient:output_type -> tars.mcp.v1.McpOAuthClient
	13, // 17: tars.mcp.v1.McpOAuthClientsService.DeleteMcpOAuthClient:output_type -> google.protobuf.Empty
	13, // [13:18] is the sub-list for method output_type
	8,  // [8:13] is the sub-list for method input_type
	8,  // [8:8] is the sub-list for extension type_name
	8,  // [8:8] is the sub-list for extension extendee
	0,  // [0:8] is the sub-list for field type_name
}

func init() { file_tars_mcp_v1_mcp_oauth_clients_proto_init() }
func file_tars_mcp_v1_mcp_oauth_clients_proto_init() {
	if File_tars_mcp_v1_mcp_oauth_clients_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_tars_mcp_v1_mcp_oauth_clients_proto_rawDesc), len(file_tars_mcp_v1_mcp_oauth_clients_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   10,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_tars_mcp_v1_mcp_oauth_clients_proto_goTypes,
		DependencyIndexes: file_tars_mcp_v1_mcp_oauth_clients_proto_depIdxs,
		MessageInfos:      file_tars_mcp_v1_mcp_oauth_clients_proto_msgTypes,
	}.Build()
	File_tars_mcp_v1_mcp_oauth_clients_proto = out.File
	file_tars_mcp_v1_mcp_oauth_clients_proto_goTypes = nil
	file_tars_mcp_v1_mcp_oauth_clients_proto_depIdxs = nil
}
