// ClientsService -- project-scoped public CRUD surface for managed
// API-key clients. Every request carries (customer_id, project_id) so
// the handler can filter by ownership; reads ignore rows belonging to
// other (customer, project) pairs and writes refuse to materialise rows
// with an unset project_id.
//
// Both customer_id and project_id are optional on the request body: when
// empty the handler substitutes the caller's session-default customer +
// project (today, the well-known "default"/"default" bootstrapped for
// every tenant). REST callers still receive them in the URL path; only
// direct connect-RPC + CLI callers benefit from the optionality.
//
// google.api.http annotations route Vanguard's REST surface under
// `/v1/customers/{customer_id}/projects/{project_id}/clients[/...]`.
// tars.cli.v1.command annotations surface the same RPCs as
// `ia clients ...` and `ia clients keys ...` subcommands.

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

package clientsv1

import (
	_ "github.com/tetrateio/agentrouter-go/genapi/api/tars/auth/v1"
	_ "github.com/tetrateio/agentrouter-go/genapi/api/tars/cli/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 KeyVersionState int32

const (
	// Default/unknown state.
	KeyVersionState_KEY_VERSION_STATE_UNSPECIFIED KeyVersionState = 0
	// Key is active and accepted for authentication.
	KeyVersionState_KEY_VERSION_STATE_ENABLED KeyVersionState = 1
	// Key is disabled (reversible) and rejected for authentication.
	KeyVersionState_KEY_VERSION_STATE_DISABLED KeyVersionState = 2
	// Key is permanently destroyed and can never be re-enabled.
	KeyVersionState_KEY_VERSION_STATE_DESTROYED KeyVersionState = 3
)

// Enum value maps for KeyVersionState.
var (
	KeyVersionState_name = map[int32]string{
		0: "KEY_VERSION_STATE_UNSPECIFIED",
		1: "KEY_VERSION_STATE_ENABLED",
		2: "KEY_VERSION_STATE_DISABLED",
		3: "KEY_VERSION_STATE_DESTROYED",
	}
	KeyVersionState_value = map[string]int32{
		"KEY_VERSION_STATE_UNSPECIFIED": 0,
		"KEY_VERSION_STATE_ENABLED":     1,
		"KEY_VERSION_STATE_DISABLED":    2,
		"KEY_VERSION_STATE_DESTROYED":   3,
	}
)

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

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

func (KeyVersionState) Descriptor() protoreflect.EnumDescriptor {
	return file_tars_clients_v1_clients_proto_enumTypes[0].Descriptor()
}

func (KeyVersionState) Type() protoreflect.EnumType {
	return &file_tars_clients_v1_clients_proto_enumTypes[0]
}

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

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

// EnterpriseContext is preserved as an optional, OPAQUE substructure on
// the create / rotate / revoke paths because the existing AdminServer
// path requires it. The project-scoping authoritatively lives in the
// top-level customer_id / project_id fields on every request.
type EnterpriseContext struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Customer/tenant slug; seeds the admin user-token request when set.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Workspace slug within the customer; defaults to "default" when empty.
	WorkspaceId string `protobuf:"bytes,2,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"`
	// Organization unit the key belongs to; defaults to "default" when empty.
	OrganizationUnit string `protobuf:"bytes,3,opt,name=organization_unit,json=organizationUnit,proto3" json:"organization_unit,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

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

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

func (*EnterpriseContext) ProtoMessage() {}

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

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

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

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

type ClientKey struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Key version id (UUID), the api_keys row primary key.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Human-friendly key name.
	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	// Public, non-secret key prefix shown in listings.
	Prefix string `protobuf:"bytes,3,opt,name=prefix,proto3" json:"prefix,omitempty"`
	// Hash of the secret key material; the raw key is never stored.
	KeyHash string `protobuf:"bytes,4,opt,name=key_hash,json=keyHash,proto3" json:"key_hash,omitempty"`
	// System-generated lookup handle used to locate the key at auth time.
	KeyAddress string `protobuf:"bytes,5,opt,name=key_address,json=keyAddress,proto3" json:"key_address,omitempty"`
	// Last 4 characters of the issued key, for display/disambiguation.
	KeySuffix string `protobuf:"bytes,6,opt,name=key_suffix,json=keySuffix,proto3" json:"key_suffix,omitempty"`
	// Whether the key is currently enabled (not disabled/destroyed).
	IsActive bool `protobuf:"varint,7,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"`
	// Whether the key has been soft-deleted.
	IsDeleted bool `protobuf:"varint,8,opt,name=is_deleted,json=isDeleted,proto3" json:"is_deleted,omitempty"`
	// Lifecycle state: enabled, disabled, or destroyed.
	State KeyVersionState `protobuf:"varint,9,opt,name=state,proto3,enum=tars.clients.v1.KeyVersionState" json:"state,omitempty"`
	// Scheduled time at which a rotated key will be auto-disabled; unset if none.
	RotationDisableAt *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=rotation_disable_at,json=rotationDisableAt,proto3,oneof" json:"rotation_disable_at,omitempty"`
	// Scheduled time at which a rotated key will be auto-destroyed; unset if none.
	RotationDestroyAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=rotation_destroy_at,json=rotationDestroyAt,proto3,oneof" json:"rotation_destroy_at,omitempty"`
	// Time the key was permanently destroyed; unset while still alive.
	DestroyedAt   *timestamppb.Timestamp `protobuf:"bytes,12,opt,name=destroyed_at,json=destroyedAt,proto3,oneof" json:"destroyed_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ClientKey) ProtoMessage() {}

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

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

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

func (x *ClientKey) GetPrefix() string {
	if x != nil {
		return x.Prefix
	}
	return ""
}

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

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

func (x *ClientKey) GetKeySuffix() string {
	if x != nil {
		return x.KeySuffix
	}
	return ""
}

func (x *ClientKey) GetIsActive() bool {
	if x != nil {
		return x.IsActive
	}
	return false
}

func (x *ClientKey) GetIsDeleted() bool {
	if x != nil {
		return x.IsDeleted
	}
	return false
}

func (x *ClientKey) GetState() KeyVersionState {
	if x != nil {
		return x.State
	}
	return KeyVersionState_KEY_VERSION_STATE_UNSPECIFIED
}

func (x *ClientKey) GetRotationDisableAt() *timestamppb.Timestamp {
	if x != nil {
		return x.RotationDisableAt
	}
	return nil
}

func (x *ClientKey) GetRotationDestroyAt() *timestamppb.Timestamp {
	if x != nil {
		return x.RotationDestroyAt
	}
	return nil
}

func (x *ClientKey) GetDestroyedAt() *timestamppb.Timestamp {
	if x != nil {
		return x.DestroyedAt
	}
	return nil
}

type Client struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Client id (UUID); equals the bootstrap key's id at creation time.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Owning user id (authn user PK) the client is scoped to.
	UserId string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	// Human-friendly client title; lazily derived from a key name when unset.
	Title string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"`
	// Owning customer slug the client is scoped to.
	CustomerId string `protobuf:"bytes,5,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Owning project slug the client is scoped to.
	ProjectId string `protobuf:"bytes,6,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// API key versions attached to this client.
	Keys          []*ClientKey `protobuf:"bytes,3,rep,name=keys,proto3" json:"keys,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Client) ProtoMessage() {}

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

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

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

func (x *Client) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

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

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

func (x *Client) GetKeys() []*ClientKey {
	if x != nil {
		return x.Keys
	}
	return nil
}

type CreateClientWithKeyRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug. 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"`
	// Owning project slug. 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"`
	// Human-friendly title for the client.
	Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
	// Backing key name; defaults to title when empty.
	KeyName string `protobuf:"bytes,4,opt,name=key_name,json=keyName,proto3" json:"key_name,omitempty"`
	// Optional enterprise tenancy context (legacy AdminServer path).
	EnterpriseContext *EnterpriseContext `protobuf:"bytes,6,opt,name=enterprise_context,json=enterpriseContext,proto3" json:"enterprise_context,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

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

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

func (*CreateClientWithKeyRequest) ProtoMessage() {}

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

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

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

func (x *CreateClientWithKeyRequest) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *CreateClientWithKeyRequest) GetKeyName() string {
	if x != nil {
		return x.KeyName
	}
	return ""
}

func (x *CreateClientWithKeyRequest) GetEnterpriseContext() *EnterpriseContext {
	if x != nil {
		return x.EnterpriseContext
	}
	return nil
}

type CreateClientWithKeyResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Bootstrap behavior: the first key establishes the client identity,
	// so initially client_id == key_id.
	ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// Id (UUID) of the newly minted key version.
	KeyId string `protobuf:"bytes,2,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"`
	// The raw secret key, returned exactly once at creation; never stored.
	ApiKeyOnce string `protobuf:"bytes,3,opt,name=api_key_once,json=apiKeyOnce,proto3" json:"api_key_once,omitempty"`
	// Public, non-secret key prefix.
	Prefix string `protobuf:"bytes,4,opt,name=prefix,proto3" json:"prefix,omitempty"`
	// Hash of the secret key material.
	KeyHash string `protobuf:"bytes,5,opt,name=key_hash,json=keyHash,proto3" json:"key_hash,omitempty"`
	// System-generated lookup handle used to locate the key at auth time.
	KeyAddress string `protobuf:"bytes,6,opt,name=key_address,json=keyAddress,proto3" json:"key_address,omitempty"`
	// Last 4 characters of the issued key, for display.
	KeySuffix     string `protobuf:"bytes,7,opt,name=key_suffix,json=keySuffix,proto3" json:"key_suffix,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CreateClientWithKeyResponse) ProtoMessage() {}

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

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

func (x *CreateClientWithKeyResponse) GetKeyId() string {
	if x != nil {
		return x.KeyId
	}
	return ""
}

func (x *CreateClientWithKeyResponse) GetApiKeyOnce() string {
	if x != nil {
		return x.ApiKeyOnce
	}
	return ""
}

func (x *CreateClientWithKeyResponse) GetPrefix() string {
	if x != nil {
		return x.Prefix
	}
	return ""
}

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

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

func (x *CreateClientWithKeyResponse) GetKeySuffix() string {
	if x != nil {
		return x.KeySuffix
	}
	return ""
}

type AddKeyToClientRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug. 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"`
	// Owning project slug. 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"`
	// Client id (UUID) to attach the key to.
	ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// Id (UUID) of the existing key to attach.
	KeyId         string `protobuf:"bytes,4,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AddKeyToClientRequest) ProtoMessage() {}

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

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

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

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

func (x *AddKeyToClientRequest) GetKeyId() string {
	if x != nil {
		return x.KeyId
	}
	return ""
}

type AddKeyToClientResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// True when the key was attached successfully.
	Success       bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AddKeyToClientResponse) ProtoMessage() {}

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

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

type RotateKeyInClientRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug. 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"`
	// Owning project slug. 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"`
	// Client id (UUID) whose key is being rotated.
	ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// Deprecated/ignored: key address is system-generated, not user-chosen.
	UserKeyAddress string `protobuf:"bytes,4,opt,name=user_key_address,json=userKeyAddress,proto3" json:"user_key_address,omitempty"`
	// Name for the new key version. Required.
	KeyName string `protobuf:"bytes,5,opt,name=key_name,json=keyName,proto3" json:"key_name,omitempty"`
	// Optional enterprise tenancy context (legacy AdminServer path).
	EnterpriseContext *EnterpriseContext `protobuf:"bytes,6,opt,name=enterprise_context,json=enterpriseContext,proto3" json:"enterprise_context,omitempty"`
	// Id (UUID) of the prior key to schedule disable/destroy for; empty skips scheduling.
	OldKeyId string `protobuf:"bytes,7,opt,name=old_key_id,json=oldKeyId,proto3" json:"old_key_id,omitempty"`
	// Absolute time to auto-disable the old key; overridden by disable_after when set.
	OldKeyDisableAt *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=old_key_disable_at,json=oldKeyDisableAt,proto3" json:"old_key_disable_at,omitempty"`
	// Absolute time to auto-destroy the old key; overridden by destroy_after when set.
	OldKeyDestroyAt *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=old_key_destroy_at,json=oldKeyDestroyAt,proto3" json:"old_key_destroy_at,omitempty"`
	// Convenience flags for the CLI: durations relative to now. When set
	// they override old_key_disable_at / old_key_destroy_at.
	DisableAfter  string `protobuf:"bytes,10,opt,name=disable_after,json=disableAfter,proto3" json:"disable_after,omitempty"`
	DestroyAfter  string `protobuf:"bytes,11,opt,name=destroy_after,json=destroyAfter,proto3" json:"destroy_after,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RotateKeyInClientRequest) ProtoMessage() {}

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

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

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

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

func (x *RotateKeyInClientRequest) GetUserKeyAddress() string {
	if x != nil {
		return x.UserKeyAddress
	}
	return ""
}

func (x *RotateKeyInClientRequest) GetKeyName() string {
	if x != nil {
		return x.KeyName
	}
	return ""
}

func (x *RotateKeyInClientRequest) GetEnterpriseContext() *EnterpriseContext {
	if x != nil {
		return x.EnterpriseContext
	}
	return nil
}

func (x *RotateKeyInClientRequest) GetOldKeyId() string {
	if x != nil {
		return x.OldKeyId
	}
	return ""
}

func (x *RotateKeyInClientRequest) GetOldKeyDisableAt() *timestamppb.Timestamp {
	if x != nil {
		return x.OldKeyDisableAt
	}
	return nil
}

func (x *RotateKeyInClientRequest) GetOldKeyDestroyAt() *timestamppb.Timestamp {
	if x != nil {
		return x.OldKeyDestroyAt
	}
	return nil
}

func (x *RotateKeyInClientRequest) GetDisableAfter() string {
	if x != nil {
		return x.DisableAfter
	}
	return ""
}

func (x *RotateKeyInClientRequest) GetDestroyAfter() string {
	if x != nil {
		return x.DestroyAfter
	}
	return ""
}

type RotateKeyInClientResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Client id (UUID) the new key is attached to (unchanged by rotation).
	ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// Id (UUID) of the newly minted key version.
	KeyId string `protobuf:"bytes,2,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"`
	// The raw secret key, returned exactly once; never stored.
	ApiKeyOnce string `protobuf:"bytes,3,opt,name=api_key_once,json=apiKeyOnce,proto3" json:"api_key_once,omitempty"`
	// Public, non-secret key prefix.
	Prefix string `protobuf:"bytes,4,opt,name=prefix,proto3" json:"prefix,omitempty"`
	// Hash of the secret key material.
	KeyHash string `protobuf:"bytes,5,opt,name=key_hash,json=keyHash,proto3" json:"key_hash,omitempty"`
	// System-generated lookup handle used to locate the key at auth time.
	KeyAddress string `protobuf:"bytes,6,opt,name=key_address,json=keyAddress,proto3" json:"key_address,omitempty"`
	// Last 4 characters of the issued key, for display.
	KeySuffix string `protobuf:"bytes,7,opt,name=key_suffix,json=keySuffix,proto3" json:"key_suffix,omitempty"`
	// True when a disable/destroy schedule was applied to the prior key.
	OldKeyLifecycleScheduled bool `protobuf:"varint,8,opt,name=old_key_lifecycle_scheduled,json=oldKeyLifecycleScheduled,proto3" json:"old_key_lifecycle_scheduled,omitempty"`
	unknownFields            protoimpl.UnknownFields
	sizeCache                protoimpl.SizeCache
}

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

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

func (*RotateKeyInClientResponse) ProtoMessage() {}

func (x *RotateKeyInClientResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_clients_v1_clients_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 RotateKeyInClientResponse.ProtoReflect.Descriptor instead.
func (*RotateKeyInClientResponse) Descriptor() ([]byte, []int) {
	return file_tars_clients_v1_clients_proto_rawDescGZIP(), []int{8}
}

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

func (x *RotateKeyInClientResponse) GetKeyId() string {
	if x != nil {
		return x.KeyId
	}
	return ""
}

func (x *RotateKeyInClientResponse) GetApiKeyOnce() string {
	if x != nil {
		return x.ApiKeyOnce
	}
	return ""
}

func (x *RotateKeyInClientResponse) GetPrefix() string {
	if x != nil {
		return x.Prefix
	}
	return ""
}

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

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

func (x *RotateKeyInClientResponse) GetKeySuffix() string {
	if x != nil {
		return x.KeySuffix
	}
	return ""
}

func (x *RotateKeyInClientResponse) GetOldKeyLifecycleScheduled() bool {
	if x != nil {
		return x.OldKeyLifecycleScheduled
	}
	return false
}

type DisableKeyVersionInClientRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug. 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"`
	// Owning project slug. 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"`
	// Client id (UUID) that owns the key version.
	ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// Key version id (UUID). Named key_version to match IA's vocabulary;
	// fraser stores one row per version in api_keys.
	KeyVersion    string `protobuf:"bytes,4,opt,name=key_version,json=keyVersion,proto3" json:"key_version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*DisableKeyVersionInClientRequest) ProtoMessage() {}

func (x *DisableKeyVersionInClientRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_clients_v1_clients_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 DisableKeyVersionInClientRequest.ProtoReflect.Descriptor instead.
func (*DisableKeyVersionInClientRequest) Descriptor() ([]byte, []int) {
	return file_tars_clients_v1_clients_proto_rawDescGZIP(), []int{9}
}

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

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

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

func (x *DisableKeyVersionInClientRequest) GetKeyVersion() string {
	if x != nil {
		return x.KeyVersion
	}
	return ""
}

type DisableKeyVersionInClientResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// True when the key version was disabled.
	Success       bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*DisableKeyVersionInClientResponse) ProtoMessage() {}

func (x *DisableKeyVersionInClientResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_clients_v1_clients_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 DisableKeyVersionInClientResponse.ProtoReflect.Descriptor instead.
func (*DisableKeyVersionInClientResponse) Descriptor() ([]byte, []int) {
	return file_tars_clients_v1_clients_proto_rawDescGZIP(), []int{10}
}

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

type EnableKeyVersionInClientRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug. 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"`
	// Owning project slug. 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"`
	// Client id (UUID) that owns the key version.
	ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// Key version id (UUID) to re-enable.
	KeyVersion    string `protobuf:"bytes,4,opt,name=key_version,json=keyVersion,proto3" json:"key_version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*EnableKeyVersionInClientRequest) ProtoMessage() {}

func (x *EnableKeyVersionInClientRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_clients_v1_clients_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 EnableKeyVersionInClientRequest.ProtoReflect.Descriptor instead.
func (*EnableKeyVersionInClientRequest) Descriptor() ([]byte, []int) {
	return file_tars_clients_v1_clients_proto_rawDescGZIP(), []int{11}
}

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

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

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

func (x *EnableKeyVersionInClientRequest) GetKeyVersion() string {
	if x != nil {
		return x.KeyVersion
	}
	return ""
}

type EnableKeyVersionInClientResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// True when the key version was re-enabled.
	Success       bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*EnableKeyVersionInClientResponse) ProtoMessage() {}

func (x *EnableKeyVersionInClientResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_clients_v1_clients_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 EnableKeyVersionInClientResponse.ProtoReflect.Descriptor instead.
func (*EnableKeyVersionInClientResponse) Descriptor() ([]byte, []int) {
	return file_tars_clients_v1_clients_proto_rawDescGZIP(), []int{12}
}

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

type DestroyKeyVersionInClientRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug. 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"`
	// Owning project slug. 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"`
	// Client id (UUID) that owns the key version.
	ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// Key version id (UUID) to permanently destroy.
	KeyVersion    string `protobuf:"bytes,4,opt,name=key_version,json=keyVersion,proto3" json:"key_version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*DestroyKeyVersionInClientRequest) ProtoMessage() {}

func (x *DestroyKeyVersionInClientRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_clients_v1_clients_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 DestroyKeyVersionInClientRequest.ProtoReflect.Descriptor instead.
func (*DestroyKeyVersionInClientRequest) Descriptor() ([]byte, []int) {
	return file_tars_clients_v1_clients_proto_rawDescGZIP(), []int{13}
}

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

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

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

func (x *DestroyKeyVersionInClientRequest) GetKeyVersion() string {
	if x != nil {
		return x.KeyVersion
	}
	return ""
}

type DestroyKeyVersionInClientResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// True when the key version was destroyed.
	Success       bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*DestroyKeyVersionInClientResponse) ProtoMessage() {}

func (x *DestroyKeyVersionInClientResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_clients_v1_clients_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 DestroyKeyVersionInClientResponse.ProtoReflect.Descriptor instead.
func (*DestroyKeyVersionInClientResponse) Descriptor() ([]byte, []int) {
	return file_tars_clients_v1_clients_proto_rawDescGZIP(), []int{14}
}

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

type EmergencyRevokeKeyVersionRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug. 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"`
	// Owning project slug. 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"`
	// Client id (UUID) that owns the key version being revoked.
	ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// Key version id (UUID) to revoke (disable immediately).
	KeyVersion string `protobuf:"bytes,4,opt,name=key_version,json=keyVersion,proto3" json:"key_version,omitempty"`
	// When true, also rotate in a replacement key after revoking.
	GenerateReplacement bool `protobuf:"varint,5,opt,name=generate_replacement,json=generateReplacement,proto3" json:"generate_replacement,omitempty"`
	// Name for the replacement key; required when generate_replacement is true.
	ReplacementKeyName string `protobuf:"bytes,6,opt,name=replacement_key_name,json=replacementKeyName,proto3" json:"replacement_key_name,omitempty"`
	// Deprecated/ignored: replacement key address is system-generated.
	ReplacementUserKeyAddress string `protobuf:"bytes,7,opt,name=replacement_user_key_address,json=replacementUserKeyAddress,proto3" json:"replacement_user_key_address,omitempty"`
	// Optional enterprise tenancy context for the replacement key.
	ReplacementEnterpriseContext *EnterpriseContext `protobuf:"bytes,8,opt,name=replacement_enterprise_context,json=replacementEnterpriseContext,proto3" json:"replacement_enterprise_context,omitempty"`
	unknownFields                protoimpl.UnknownFields
	sizeCache                    protoimpl.SizeCache
}

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

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

func (*EmergencyRevokeKeyVersionRequest) ProtoMessage() {}

func (x *EmergencyRevokeKeyVersionRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_clients_v1_clients_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 EmergencyRevokeKeyVersionRequest.ProtoReflect.Descriptor instead.
func (*EmergencyRevokeKeyVersionRequest) Descriptor() ([]byte, []int) {
	return file_tars_clients_v1_clients_proto_rawDescGZIP(), []int{15}
}

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

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

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

func (x *EmergencyRevokeKeyVersionRequest) GetKeyVersion() string {
	if x != nil {
		return x.KeyVersion
	}
	return ""
}

func (x *EmergencyRevokeKeyVersionRequest) GetGenerateReplacement() bool {
	if x != nil {
		return x.GenerateReplacement
	}
	return false
}

func (x *EmergencyRevokeKeyVersionRequest) GetReplacementKeyName() string {
	if x != nil {
		return x.ReplacementKeyName
	}
	return ""
}

func (x *EmergencyRevokeKeyVersionRequest) GetReplacementUserKeyAddress() string {
	if x != nil {
		return x.ReplacementUserKeyAddress
	}
	return ""
}

func (x *EmergencyRevokeKeyVersionRequest) GetReplacementEnterpriseContext() *EnterpriseContext {
	if x != nil {
		return x.ReplacementEnterpriseContext
	}
	return nil
}

type EmergencyRevokeKeyVersionResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// True when the key version was revoked.
	Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	// The freshly rotated replacement key; set only when one was requested.
	Replacement   *RotateKeyInClientResponse `protobuf:"bytes,2,opt,name=replacement,proto3,oneof" json:"replacement,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*EmergencyRevokeKeyVersionResponse) ProtoMessage() {}

func (x *EmergencyRevokeKeyVersionResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_clients_v1_clients_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 EmergencyRevokeKeyVersionResponse.ProtoReflect.Descriptor instead.
func (*EmergencyRevokeKeyVersionResponse) Descriptor() ([]byte, []int) {
	return file_tars_clients_v1_clients_proto_rawDescGZIP(), []int{16}
}

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

func (x *EmergencyRevokeKeyVersionResponse) GetReplacement() *RotateKeyInClientResponse {
	if x != nil {
		return x.Replacement
	}
	return nil
}

type GetClientRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug. 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"`
	// Owning project slug. 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"`
	// Client id (UUID) to fetch.
	ClientId      string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetClientRequest) ProtoMessage() {}

func (x *GetClientRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_clients_v1_clients_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 GetClientRequest.ProtoReflect.Descriptor instead.
func (*GetClientRequest) Descriptor() ([]byte, []int) {
	return file_tars_clients_v1_clients_proto_rawDescGZIP(), []int{17}
}

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

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

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

type GetClientResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The requested client with its attached keys.
	Client        *Client `protobuf:"bytes,1,opt,name=client,proto3" json:"client,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetClientResponse) ProtoMessage() {}

func (x *GetClientResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_clients_v1_clients_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 GetClientResponse.ProtoReflect.Descriptor instead.
func (*GetClientResponse) Descriptor() ([]byte, []int) {
	return file_tars_clients_v1_clients_proto_rawDescGZIP(), []int{18}
}

func (x *GetClientResponse) GetClient() *Client {
	if x != nil {
		return x.Client
	}
	return nil
}

type ListClientsRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug. 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"`
	// Owning project slug. 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"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListClientsRequest) ProtoMessage() {}

func (x *ListClientsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_clients_v1_clients_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 ListClientsRequest.ProtoReflect.Descriptor instead.
func (*ListClientsRequest) Descriptor() ([]byte, []int) {
	return file_tars_clients_v1_clients_proto_rawDescGZIP(), []int{19}
}

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

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

type ListClientsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// All clients owned by the caller within the (customer, project) scope.
	Clients       []*Client `protobuf:"bytes,1,rep,name=clients,proto3" json:"clients,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListClientsResponse) ProtoMessage() {}

func (x *ListClientsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_clients_v1_clients_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 ListClientsResponse.ProtoReflect.Descriptor instead.
func (*ListClientsResponse) Descriptor() ([]byte, []int) {
	return file_tars_clients_v1_clients_proto_rawDescGZIP(), []int{20}
}

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

type UpdateClientTitleRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug. 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"`
	// Owning project slug. 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"`
	// Client id (UUID) whose title is being updated.
	ClientId string `protobuf:"bytes,3,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"`
	// New human-friendly title for the client.
	Title         string `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*UpdateClientTitleRequest) ProtoMessage() {}

func (x *UpdateClientTitleRequest) ProtoReflect() protoreflect.Message {
	mi := &file_tars_clients_v1_clients_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 UpdateClientTitleRequest.ProtoReflect.Descriptor instead.
func (*UpdateClientTitleRequest) Descriptor() ([]byte, []int) {
	return file_tars_clients_v1_clients_proto_rawDescGZIP(), []int{21}
}

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

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

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

func (x *UpdateClientTitleRequest) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

type UpdateClientTitleResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The client after the title update.
	Client        *Client `protobuf:"bytes,1,opt,name=client,proto3" json:"client,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*UpdateClientTitleResponse) ProtoMessage() {}

func (x *UpdateClientTitleResponse) ProtoReflect() protoreflect.Message {
	mi := &file_tars_clients_v1_clients_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 UpdateClientTitleResponse.ProtoReflect.Descriptor instead.
func (*UpdateClientTitleResponse) Descriptor() ([]byte, []int) {
	return file_tars_clients_v1_clients_proto_rawDescGZIP(), []int{22}
}

func (x *UpdateClientTitleResponse) GetClient() *Client {
	if x != nil {
		return x.Client
	}
	return nil
}

var File_tars_clients_v1_clients_proto protoreflect.FileDescriptor

const file_tars_clients_v1_clients_proto_rawDesc = "" +
	"\n" +
	"\x1dtars/clients/v1/clients.proto\x12\x0ftars.clients.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1ftars/auth/v1/auth_options.proto\x1a\x15tars/cli/v1/cli.proto\x1a\x17tars/docs/v1/docs.proto\"\x84\x01\n" +
	"\x11EnterpriseContext\x12\x1f\n" +
	"\vcustomer_id\x18\x01 \x01(\tR\n" +
	"customerId\x12!\n" +
	"\fworkspace_id\x18\x02 \x01(\tR\vworkspaceId\x12+\n" +
	"\x11organization_unit\x18\x03 \x01(\tR\x10organizationUnit\"\xbd\x04\n" +
	"\tClientKey\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x16\n" +
	"\x06prefix\x18\x03 \x01(\tR\x06prefix\x12\x19\n" +
	"\bkey_hash\x18\x04 \x01(\tR\akeyHash\x12\x1f\n" +
	"\vkey_address\x18\x05 \x01(\tR\n" +
	"keyAddress\x12\x1d\n" +
	"\n" +
	"key_suffix\x18\x06 \x01(\tR\tkeySuffix\x12\x1b\n" +
	"\tis_active\x18\a \x01(\bR\bisActive\x12\x1d\n" +
	"\n" +
	"is_deleted\x18\b \x01(\bR\tisDeleted\x126\n" +
	"\x05state\x18\t \x01(\x0e2 .tars.clients.v1.KeyVersionStateR\x05state\x12O\n" +
	"\x13rotation_disable_at\x18\n" +
	" \x01(\v2\x1a.google.protobuf.TimestampH\x00R\x11rotationDisableAt\x88\x01\x01\x12O\n" +
	"\x13rotation_destroy_at\x18\v \x01(\v2\x1a.google.protobuf.TimestampH\x01R\x11rotationDestroyAt\x88\x01\x01\x12B\n" +
	"\fdestroyed_at\x18\f \x01(\v2\x1a.google.protobuf.TimestampH\x02R\vdestroyedAt\x88\x01\x01B\x16\n" +
	"\x14_rotation_disable_atB\x16\n" +
	"\x14_rotation_destroy_atB\x0f\n" +
	"\r_destroyed_at\"\xb7\x01\n" +
	"\x06Client\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x17\n" +
	"\auser_id\x18\x02 \x01(\tR\x06userId\x12\x14\n" +
	"\x05title\x18\x04 \x01(\tR\x05title\x12\x1f\n" +
	"\vcustomer_id\x18\x05 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x06 \x01(\tR\tprojectId\x12.\n" +
	"\x04keys\x18\x03 \x03(\v2\x1a.tars.clients.v1.ClientKeyR\x04keys\"\xf8\x01\n" +
	"\x1aCreateClientWithKeyRequest\x12\x1f\n" +
	"\vcustomer_id\x18\x01 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12\x14\n" +
	"\x05title\x18\x03 \x01(\tR\x05title\x12\x19\n" +
	"\bkey_name\x18\x04 \x01(\tR\akeyName\x12Q\n" +
	"\x12enterprise_context\x18\x06 \x01(\v2\".tars.clients.v1.EnterpriseContextR\x11enterpriseContextJ\x04\b\x05\x10\x06R\x10user_key_address\"\xe6\x01\n" +
	"\x1bCreateClientWithKeyResponse\x12\x1b\n" +
	"\tclient_id\x18\x01 \x01(\tR\bclientId\x12\x15\n" +
	"\x06key_id\x18\x02 \x01(\tR\x05keyId\x12 \n" +
	"\fapi_key_once\x18\x03 \x01(\tR\n" +
	"apiKeyOnce\x12\x16\n" +
	"\x06prefix\x18\x04 \x01(\tR\x06prefix\x12\x19\n" +
	"\bkey_hash\x18\x05 \x01(\tR\akeyHash\x12\x1f\n" +
	"\vkey_address\x18\x06 \x01(\tR\n" +
	"keyAddress\x12\x1d\n" +
	"\n" +
	"key_suffix\x18\a \x01(\tR\tkeySuffix\"\x95\x01\n" +
	"\x15AddKeyToClientRequest\x12\x1f\n" +
	"\vcustomer_id\x18\x01 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12 \n" +
	"\tclient_id\x18\x03 \x01(\tB\x03\xe0A\x02R\bclientId\x12\x1a\n" +
	"\x06key_id\x18\x04 \x01(\tB\x03\xe0A\x02R\x05keyId\"2\n" +
	"\x16AddKeyToClientResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\"\x8e\x04\n" +
	"\x18RotateKeyInClientRequest\x12\x1f\n" +
	"\vcustomer_id\x18\x01 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12 \n" +
	"\tclient_id\x18\x03 \x01(\tB\x03\xe0A\x02R\bclientId\x12(\n" +
	"\x10user_key_address\x18\x04 \x01(\tR\x0euserKeyAddress\x12\x19\n" +
	"\bkey_name\x18\x05 \x01(\tR\akeyName\x12Q\n" +
	"\x12enterprise_context\x18\x06 \x01(\v2\".tars.clients.v1.EnterpriseContextR\x11enterpriseContext\x12\x1c\n" +
	"\n" +
	"old_key_id\x18\a \x01(\tR\boldKeyId\x12G\n" +
	"\x12old_key_disable_at\x18\b \x01(\v2\x1a.google.protobuf.TimestampR\x0foldKeyDisableAt\x12G\n" +
	"\x12old_key_destroy_at\x18\t \x01(\v2\x1a.google.protobuf.TimestampR\x0foldKeyDestroyAt\x12#\n" +
	"\rdisable_after\x18\n" +
	" \x01(\tR\fdisableAfter\x12#\n" +
	"\rdestroy_after\x18\v \x01(\tR\fdestroyAfter\"\xa3\x02\n" +
	"\x19RotateKeyInClientResponse\x12\x1b\n" +
	"\tclient_id\x18\x01 \x01(\tR\bclientId\x12\x15\n" +
	"\x06key_id\x18\x02 \x01(\tR\x05keyId\x12 \n" +
	"\fapi_key_once\x18\x03 \x01(\tR\n" +
	"apiKeyOnce\x12\x16\n" +
	"\x06prefix\x18\x04 \x01(\tR\x06prefix\x12\x19\n" +
	"\bkey_hash\x18\x05 \x01(\tR\akeyHash\x12\x1f\n" +
	"\vkey_address\x18\x06 \x01(\tR\n" +
	"keyAddress\x12\x1d\n" +
	"\n" +
	"key_suffix\x18\a \x01(\tR\tkeySuffix\x12=\n" +
	"\x1bold_key_lifecycle_scheduled\x18\b \x01(\bR\x18oldKeyLifecycleScheduled\"\xaa\x01\n" +
	" DisableKeyVersionInClientRequest\x12\x1f\n" +
	"\vcustomer_id\x18\x01 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12 \n" +
	"\tclient_id\x18\x03 \x01(\tB\x03\xe0A\x02R\bclientId\x12$\n" +
	"\vkey_version\x18\x04 \x01(\tB\x03\xe0A\x02R\n" +
	"keyVersion\"=\n" +
	"!DisableKeyVersionInClientResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\"\xa9\x01\n" +
	"\x1fEnableKeyVersionInClientRequest\x12\x1f\n" +
	"\vcustomer_id\x18\x01 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12 \n" +
	"\tclient_id\x18\x03 \x01(\tB\x03\xe0A\x02R\bclientId\x12$\n" +
	"\vkey_version\x18\x04 \x01(\tB\x03\xe0A\x02R\n" +
	"keyVersion\"<\n" +
	" EnableKeyVersionInClientResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\"\xaa\x01\n" +
	" DestroyKeyVersionInClientRequest\x12\x1f\n" +
	"\vcustomer_id\x18\x01 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12 \n" +
	"\tclient_id\x18\x03 \x01(\tB\x03\xe0A\x02R\bclientId\x12$\n" +
	"\vkey_version\x18\x04 \x01(\tB\x03\xe0A\x02R\n" +
	"keyVersion\"=\n" +
	"!DestroyKeyVersionInClientResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\"\xba\x03\n" +
	" EmergencyRevokeKeyVersionRequest\x12\x1f\n" +
	"\vcustomer_id\x18\x01 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12 \n" +
	"\tclient_id\x18\x03 \x01(\tB\x03\xe0A\x02R\bclientId\x12$\n" +
	"\vkey_version\x18\x04 \x01(\tB\x03\xe0A\x02R\n" +
	"keyVersion\x121\n" +
	"\x14generate_replacement\x18\x05 \x01(\bR\x13generateReplacement\x120\n" +
	"\x14replacement_key_name\x18\x06 \x01(\tR\x12replacementKeyName\x12?\n" +
	"\x1creplacement_user_key_address\x18\a \x01(\tR\x19replacementUserKeyAddress\x12h\n" +
	"\x1ereplacement_enterprise_context\x18\b \x01(\v2\".tars.clients.v1.EnterpriseContextR\x1creplacementEnterpriseContext\"\xa0\x01\n" +
	"!EmergencyRevokeKeyVersionResponse\x12\x18\n" +
	"\asuccess\x18\x01 \x01(\bR\asuccess\x12Q\n" +
	"\vreplacement\x18\x02 \x01(\v2*.tars.clients.v1.RotateKeyInClientResponseH\x00R\vreplacement\x88\x01\x01B\x0e\n" +
	"\f_replacement\"t\n" +
	"\x10GetClientRequest\x12\x1f\n" +
	"\vcustomer_id\x18\x01 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12 \n" +
	"\tclient_id\x18\x03 \x01(\tB\x03\xe0A\x02R\bclientId\"D\n" +
	"\x11GetClientResponse\x12/\n" +
	"\x06client\x18\x01 \x01(\v2\x17.tars.clients.v1.ClientR\x06client\"T\n" +
	"\x12ListClientsRequest\x12\x1f\n" +
	"\vcustomer_id\x18\x01 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\"H\n" +
	"\x13ListClientsResponse\x121\n" +
	"\aclients\x18\x01 \x03(\v2\x17.tars.clients.v1.ClientR\aclients\"\x97\x01\n" +
	"\x18UpdateClientTitleRequest\x12\x1f\n" +
	"\vcustomer_id\x18\x01 \x01(\tR\n" +
	"customerId\x12\x1d\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tR\tprojectId\x12 \n" +
	"\tclient_id\x18\x03 \x01(\tB\x03\xe0A\x02R\bclientId\x12\x19\n" +
	"\x05title\x18\x04 \x01(\tB\x03\xe0A\x02R\x05title\"L\n" +
	"\x19UpdateClientTitleResponse\x12/\n" +
	"\x06client\x18\x01 \x01(\v2\x17.tars.clients.v1.ClientR\x06client*\x94\x01\n" +
	"\x0fKeyVersionState\x12!\n" +
	"\x1dKEY_VERSION_STATE_UNSPECIFIED\x10\x00\x12\x1d\n" +
	"\x19KEY_VERSION_STATE_ENABLED\x10\x01\x12\x1e\n" +
	"\x1aKEY_VERSION_STATE_DISABLED\x10\x02\x12\x1f\n" +
	"\x1bKEY_VERSION_STATE_DESTROYED\x10\x032\xce\x15\n" +
	"\x0eClientsService\x12\xf1\x01\n" +
	"\x13CreateClientWithKey\x12+.tars.clients.v1.CreateClientWithKeyRequest\x1a,.tars.clients.v1.CreateClientWithKeyResponse\"\x7f\x8a\xb5\x18\x04\n" +
	"\x02\x03\x01\x92\xb5\x18\x11:\aclients:\x06create\xa2\xb5\x18\x0fCreate a client\xaa\xb5\x18\aClients\x82\xd3\xe4\x93\x02>:\x01*\"9/v1/customers/{customer_id}/projects/{project_id}/clients\x12\xd4\x01\n" +
	"\vListClients\x12#.tars.clients.v1.ListClientsRequest\x1a$.tars.clients.v1.ListClientsResponse\"z\x8a\xb5\x18\x04\n" +
	"\x02\x03\x01\x92\xb5\x18\x0f:\aclients:\x04list\xa2\xb5\x18\fList clients\xaa\xb5\x18\aClients\x82\xd3\xe4\x93\x02;\x129/v1/customers/{customer_id}/projects/{project_id}/clients\x90\x02\x01\x12\xda\x01\n" +
	"\tGetClient\x12!.tars.clients.v1.GetClientRequest\x1a\".tars.clients.v1.GetClientResponse\"\x85\x01\x8a\xb5\x18\x04\n" +
	"\x02\x03\x01\x92\xb5\x18\x0e:\aclients:\x03get\xa2\xb5\x18\fGet a client\xaa\xb5\x18\aClients\x82\xd3\xe4\x93\x02G\x12E/v1/customers/{customer_id}/projects/{project_id}/clients/{client_id}\x90\x02\x01\x12\xf8\x01\n" +
	"\x11UpdateClientTitle\x12).tars.clients.v1.UpdateClientTitleRequest\x1a*.tars.clients.v1.UpdateClientTitleResponse\"\x8b\x01\x8a\xb5\x18\x04\n" +
	"\x02\x03\x01\x92\xb5\x18\x11:\aclients:\x06update\xa2\xb5\x18\x0fUpdate a client\xaa\xb5\x18\aClients\x82\xd3\xe4\x93\x02J:\x01*2E/v1/customers/{customer_id}/projects/{project_id}/clients/{client_id}\x12\xfd\x01\n" +
	"\x0eAddKeyToClient\x12&.tars.clients.v1.AddKeyToClientRequest\x1a'.tars.clients.v1.AddKeyToClientResponse\"\x99\x01\x8a\xb5\x18\x04\n" +
	"\x02\x03\x01\x92\xb5\x18\x14:\aclients:\x04keys:\x03add\xa2\xb5\x18\x18Attach a key to a client\xaa\xb5\x18\x04Keys\x82\xd3\xe4\x93\x02O:\x01*\"J/v1/customers/{customer_id}/projects/{project_id}/clients/{client_id}/keys\x12\x8b\x02\n" +
	"\x11RotateKeyInClient\x12).tars.clients.v1.RotateKeyInClientRequest\x1a*.tars.clients.v1.RotateKeyInClientResponse\"\x9e\x01\x8a\xb5\x18\x04\n" +
	"\x02\x03\x01\x92\xb5\x18\x17:\aclients:\x04keys:\x06rotate\xa2\xb5\x18\x13Rotate a client key\xaa\xb5\x18\x04Keys\x82\xd3\xe4\x93\x02V:\x01*\"Q/v1/customers/{customer_id}/projects/{project_id}/clients/{client_id}/keys/rotate\x12\xbc\x02\n" +
	"\x19DisableKeyVersionInClient\x121.tars.clients.v1.DisableKeyVersionInClientRequest\x1a2.tars.clients.v1.DisableKeyVersionInClientResponse\"\xb7\x01\x8a\xb5\x18\x04\n" +
	"\x02\x03\x01\x92\xb5\x18\x18:\aclients:\x04keys:\adisable\xa2\xb5\x18\x1cDisable a client key version\xaa\xb5\x18\x04Keys\x82\xd3\xe4\x93\x02e:\x01*\"`/v1/customers/{customer_id}/projects/{project_id}/clients/{client_id}/keys/{key_version}/disable\x12\xb6\x02\n" +
	"\x18EnableKeyVersionInClient\x120.tars.clients.v1.EnableKeyVersionInClientRequest\x1a1.tars.clients.v1.EnableKeyVersionInClientResponse\"\xb4\x01\x8a\xb5\x18\x04\n" +
	"\x02\x03\x01\x92\xb5\x18\x17:\aclients:\x04keys:\x06enable\xa2\xb5\x18\x1bEnable a client key version\xaa\xb5\x18\x04Keys\x82\xd3\xe4\x93\x02d:\x01*\"_/v1/customers/{customer_id}/projects/{project_id}/clients/{client_id}/keys/{key_version}/enable\x12\xb1\x02\n" +
	"\x19DestroyKeyVersionInClient\x121.tars.clients.v1.DestroyKeyVersionInClientRequest\x1a2.tars.clients.v1.DestroyKeyVersionInClientResponse\"\xac\x01\x8a\xb5\x18\x04\n" +
	"\x02\x03\x01\x92\xb5\x18\x18:\aclients:\x04keys:\adestroy\xa2\xb5\x18\x1cDestroy a client key version\xaa\xb5\x18\x04Keys\x82\xd3\xe4\x93\x02Z*X/v1/customers/{customer_id}/projects/{project_id}/clients/{client_id}/keys/{key_version}\x12\xde\x02\n" +
	"\x19EmergencyRevokeKeyVersion\x121.tars.clients.v1.EmergencyRevokeKeyVersionRequest\x1a2.tars.clients.v1.EmergencyRevokeKeyVersionResponse\"\xd9\x01\x8a\xb5\x18\v\n" +
	"\x02\x03\x01\x12\x05admin\x92\xb5\x18!:\aclients:\x04keys:\x10emergency-revoke\xa2\xb5\x18%Emergency-revoke a client key version\xaa\xb5\x18\x04Keys\x82\xd3\xe4\x93\x02n:\x01*\"i/v1/customers/{customer_id}/projects/{project_id}/clients/{client_id}/keys/{key_version}/emergency-revokeB\xbc\x01\n" +
	"\x13com.tars.clients.v1B\fClientsProtoP\x01Z9github.com/tetrateio/fraser/api/tars/clients/v1;clientsv1\xa2\x02\x03TCX\xaa\x02\x0fTars.Clients.V1\xca\x02\x0fTars\\Clients\\V1\xe2\x02\x1bTars\\Clients\\V1\\GPBMetadata\xea\x02\x11Tars::Clients::V1b\x06proto3"

var (
	file_tars_clients_v1_clients_proto_rawDescOnce sync.Once
	file_tars_clients_v1_clients_proto_rawDescData []byte
)

func file_tars_clients_v1_clients_proto_rawDescGZIP() []byte {
	file_tars_clients_v1_clients_proto_rawDescOnce.Do(func() {
		file_tars_clients_v1_clients_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_tars_clients_v1_clients_proto_rawDesc), len(file_tars_clients_v1_clients_proto_rawDesc)))
	})
	return file_tars_clients_v1_clients_proto_rawDescData
}

var file_tars_clients_v1_clients_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_tars_clients_v1_clients_proto_msgTypes = make([]protoimpl.MessageInfo, 23)
var file_tars_clients_v1_clients_proto_goTypes = []any{
	(KeyVersionState)(0),                      // 0: tars.clients.v1.KeyVersionState
	(*EnterpriseContext)(nil),                 // 1: tars.clients.v1.EnterpriseContext
	(*ClientKey)(nil),                         // 2: tars.clients.v1.ClientKey
	(*Client)(nil),                            // 3: tars.clients.v1.Client
	(*CreateClientWithKeyRequest)(nil),        // 4: tars.clients.v1.CreateClientWithKeyRequest
	(*CreateClientWithKeyResponse)(nil),       // 5: tars.clients.v1.CreateClientWithKeyResponse
	(*AddKeyToClientRequest)(nil),             // 6: tars.clients.v1.AddKeyToClientRequest
	(*AddKeyToClientResponse)(nil),            // 7: tars.clients.v1.AddKeyToClientResponse
	(*RotateKeyInClientRequest)(nil),          // 8: tars.clients.v1.RotateKeyInClientRequest
	(*RotateKeyInClientResponse)(nil),         // 9: tars.clients.v1.RotateKeyInClientResponse
	(*DisableKeyVersionInClientRequest)(nil),  // 10: tars.clients.v1.DisableKeyVersionInClientRequest
	(*DisableKeyVersionInClientResponse)(nil), // 11: tars.clients.v1.DisableKeyVersionInClientResponse
	(*EnableKeyVersionInClientRequest)(nil),   // 12: tars.clients.v1.EnableKeyVersionInClientRequest
	(*EnableKeyVersionInClientResponse)(nil),  // 13: tars.clients.v1.EnableKeyVersionInClientResponse
	(*DestroyKeyVersionInClientRequest)(nil),  // 14: tars.clients.v1.DestroyKeyVersionInClientRequest
	(*DestroyKeyVersionInClientResponse)(nil), // 15: tars.clients.v1.DestroyKeyVersionInClientResponse
	(*EmergencyRevokeKeyVersionRequest)(nil),  // 16: tars.clients.v1.EmergencyRevokeKeyVersionRequest
	(*EmergencyRevokeKeyVersionResponse)(nil), // 17: tars.clients.v1.EmergencyRevokeKeyVersionResponse
	(*GetClientRequest)(nil),                  // 18: tars.clients.v1.GetClientRequest
	(*GetClientResponse)(nil),                 // 19: tars.clients.v1.GetClientResponse
	(*ListClientsRequest)(nil),                // 20: tars.clients.v1.ListClientsRequest
	(*ListClientsResponse)(nil),               // 21: tars.clients.v1.ListClientsResponse
	(*UpdateClientTitleRequest)(nil),          // 22: tars.clients.v1.UpdateClientTitleRequest
	(*UpdateClientTitleResponse)(nil),         // 23: tars.clients.v1.UpdateClientTitleResponse
	(*timestamppb.Timestamp)(nil),             // 24: google.protobuf.Timestamp
}
var file_tars_clients_v1_clients_proto_depIdxs = []int32{
	0,  // 0: tars.clients.v1.ClientKey.state:type_name -> tars.clients.v1.KeyVersionState
	24, // 1: tars.clients.v1.ClientKey.rotation_disable_at:type_name -> google.protobuf.Timestamp
	24, // 2: tars.clients.v1.ClientKey.rotation_destroy_at:type_name -> google.protobuf.Timestamp
	24, // 3: tars.clients.v1.ClientKey.destroyed_at:type_name -> google.protobuf.Timestamp
	2,  // 4: tars.clients.v1.Client.keys:type_name -> tars.clients.v1.ClientKey
	1,  // 5: tars.clients.v1.CreateClientWithKeyRequest.enterprise_context:type_name -> tars.clients.v1.EnterpriseContext
	1,  // 6: tars.clients.v1.RotateKeyInClientRequest.enterprise_context:type_name -> tars.clients.v1.EnterpriseContext
	24, // 7: tars.clients.v1.RotateKeyInClientRequest.old_key_disable_at:type_name -> google.protobuf.Timestamp
	24, // 8: tars.clients.v1.RotateKeyInClientRequest.old_key_destroy_at:type_name -> google.protobuf.Timestamp
	1,  // 9: tars.clients.v1.EmergencyRevokeKeyVersionRequest.replacement_enterprise_context:type_name -> tars.clients.v1.EnterpriseContext
	9,  // 10: tars.clients.v1.EmergencyRevokeKeyVersionResponse.replacement:type_name -> tars.clients.v1.RotateKeyInClientResponse
	3,  // 11: tars.clients.v1.GetClientResponse.client:type_name -> tars.clients.v1.Client
	3,  // 12: tars.clients.v1.ListClientsResponse.clients:type_name -> tars.clients.v1.Client
	3,  // 13: tars.clients.v1.UpdateClientTitleResponse.client:type_name -> tars.clients.v1.Client
	4,  // 14: tars.clients.v1.ClientsService.CreateClientWithKey:input_type -> tars.clients.v1.CreateClientWithKeyRequest
	20, // 15: tars.clients.v1.ClientsService.ListClients:input_type -> tars.clients.v1.ListClientsRequest
	18, // 16: tars.clients.v1.ClientsService.GetClient:input_type -> tars.clients.v1.GetClientRequest
	22, // 17: tars.clients.v1.ClientsService.UpdateClientTitle:input_type -> tars.clients.v1.UpdateClientTitleRequest
	6,  // 18: tars.clients.v1.ClientsService.AddKeyToClient:input_type -> tars.clients.v1.AddKeyToClientRequest
	8,  // 19: tars.clients.v1.ClientsService.RotateKeyInClient:input_type -> tars.clients.v1.RotateKeyInClientRequest
	10, // 20: tars.clients.v1.ClientsService.DisableKeyVersionInClient:input_type -> tars.clients.v1.DisableKeyVersionInClientRequest
	12, // 21: tars.clients.v1.ClientsService.EnableKeyVersionInClient:input_type -> tars.clients.v1.EnableKeyVersionInClientRequest
	14, // 22: tars.clients.v1.ClientsService.DestroyKeyVersionInClient:input_type -> tars.clients.v1.DestroyKeyVersionInClientRequest
	16, // 23: tars.clients.v1.ClientsService.EmergencyRevokeKeyVersion:input_type -> tars.clients.v1.EmergencyRevokeKeyVersionRequest
	5,  // 24: tars.clients.v1.ClientsService.CreateClientWithKey:output_type -> tars.clients.v1.CreateClientWithKeyResponse
	21, // 25: tars.clients.v1.ClientsService.ListClients:output_type -> tars.clients.v1.ListClientsResponse
	19, // 26: tars.clients.v1.ClientsService.GetClient:output_type -> tars.clients.v1.GetClientResponse
	23, // 27: tars.clients.v1.ClientsService.UpdateClientTitle:output_type -> tars.clients.v1.UpdateClientTitleResponse
	7,  // 28: tars.clients.v1.ClientsService.AddKeyToClient:output_type -> tars.clients.v1.AddKeyToClientResponse
	9,  // 29: tars.clients.v1.ClientsService.RotateKeyInClient:output_type -> tars.clients.v1.RotateKeyInClientResponse
	11, // 30: tars.clients.v1.ClientsService.DisableKeyVersionInClient:output_type -> tars.clients.v1.DisableKeyVersionInClientResponse
	13, // 31: tars.clients.v1.ClientsService.EnableKeyVersionInClient:output_type -> tars.clients.v1.EnableKeyVersionInClientResponse
	15, // 32: tars.clients.v1.ClientsService.DestroyKeyVersionInClient:output_type -> tars.clients.v1.DestroyKeyVersionInClientResponse
	17, // 33: tars.clients.v1.ClientsService.EmergencyRevokeKeyVersion:output_type -> tars.clients.v1.EmergencyRevokeKeyVersionResponse
	24, // [24:34] is the sub-list for method output_type
	14, // [14:24] is the sub-list for method input_type
	14, // [14:14] is the sub-list for extension type_name
	14, // [14:14] is the sub-list for extension extendee
	0,  // [0:14] is the sub-list for field type_name
}

func init() { file_tars_clients_v1_clients_proto_init() }
func file_tars_clients_v1_clients_proto_init() {
	if File_tars_clients_v1_clients_proto != nil {
		return
	}
	file_tars_clients_v1_clients_proto_msgTypes[1].OneofWrappers = []any{}
	file_tars_clients_v1_clients_proto_msgTypes[16].OneofWrappers = []any{}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_tars_clients_v1_clients_proto_rawDesc), len(file_tars_clients_v1_clients_proto_rawDesc)),
			NumEnums:      1,
			NumMessages:   23,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_tars_clients_v1_clients_proto_goTypes,
		DependencyIndexes: file_tars_clients_v1_clients_proto_depIdxs,
		EnumInfos:         file_tars_clients_v1_clients_proto_enumTypes,
		MessageInfos:      file_tars_clients_v1_clients_proto_msgTypes,
	}.Build()
	File_tars_clients_v1_clients_proto = out.File
	file_tars_clients_v1_clients_proto_goTypes = nil
	file_tars_clients_v1_clients_proto_depIdxs = nil
}
