// TenancyService and ProjectsService -- public IA-parity surface over
// fraser's existing customers / projects / project_members tables.
//
// Two services to mirror IA's split:
//   - TenancyService handles customers (the top-level tenant).
//   - ProjectsService handles per-customer projects + their members.
//
// Underlying data lives in the same rows fraser's admin.v1 service
// already manages (svc/internal/staff/valet/fraser/repository/customer*
// + project* + project_member*). Handlers here are a thin REST/CLI
// facade over those repositories -- no parallel SQL.
//
// CLI commands are surfaced under `ia customers ...` and `ia projects
// ...` so the muscle memory matches IA's reference CLI.

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

package tenancyv1

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"
	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 CreateCustomerRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required: operator-scoped slug, e.g. "acme".
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Optional: human-friendly display name.
	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// Optional: freeform description.
	Description   string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CreateCustomerRequest) ProtoMessage() {}

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

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

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

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

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

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

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

func (*GetCustomerRequest) ProtoMessage() {}

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

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

type ListCustomersRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Cursor-pagination inputs (page size, page token, filter, order_by).
	Page          *v1.PageRequest `protobuf:"bytes,1,opt,name=page,proto3" json:"page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListCustomersRequest) ProtoMessage() {}

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

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

type ListCustomersResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Page of customers visible to the caller.
	Customers []*Customer `protobuf:"bytes,1,rep,name=customers,proto3" json:"customers,omitempty"`
	// Pagination outputs; carries next_page_token for the following page.
	Page          *v1.PageResponse `protobuf:"bytes,2,opt,name=page,proto3" json:"page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListCustomersResponse) ProtoMessage() {}

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

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

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

type UpdateCustomerRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required: the customer to update.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Optional: new display name.
	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// Optional: new description.
	Description   string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*UpdateCustomerRequest) ProtoMessage() {}

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

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

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

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

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

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

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

func (*ArchiveCustomerRequest) ProtoMessage() {}

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

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

type CreateProjectRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Required: customer-scoped project slug.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Optional: human-friendly display name.
	DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// Optional: freeform description.
	Description   string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CreateProjectRequest) ProtoMessage() {}

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

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

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

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

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

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

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

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

func (*GetProjectRequest) ProtoMessage() {}

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

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

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

type ListProjectsRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required: customer scope whose projects to list.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Cursor-pagination inputs (page size, page token, filter, order_by).
	Page          *v1.PageRequest `protobuf:"bytes,2,opt,name=page,proto3" json:"page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListProjectsRequest) ProtoMessage() {}

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

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

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

type ListProjectsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Page of projects within the requested customer scope.
	Projects []*Project `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"`
	// Pagination outputs; carries next_page_token for the following page.
	Page          *v1.PageResponse `protobuf:"bytes,2,opt,name=page,proto3" json:"page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListProjectsResponse) ProtoMessage() {}

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

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

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

type UpdateProjectRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required: owning customer slug. Immutable.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Required: the project to update. Immutable.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Optional: new display name.
	DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
	// Optional: new description.
	Description   string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*UpdateProjectRequest) ProtoMessage() {}

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

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

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

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

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

type ArchiveProjectRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required: owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Required: the project to soft-delete (the default project cannot be archived).
	ProjectId     string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ArchiveProjectRequest) ProtoMessage() {}

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

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

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

type AddProjectMemberRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required: owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Required: project the identity is being granted access to.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Identity row id (authn.user.id). Required.
	IdentityId string `protobuf:"bytes,3,opt,name=identity_id,json=identityId,proto3" json:"identity_id,omitempty"`
	// Role bundle: "admin" or "member".
	Role          string `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AddProjectMemberRequest) ProtoMessage() {}

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

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

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

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

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

type ListProjectMembersRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required: owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Required: project whose members to list.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Cursor-pagination inputs (page size, page token, filter, order_by).
	Page          *v1.PageRequest `protobuf:"bytes,3,opt,name=page,proto3" json:"page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListProjectMembersRequest) ProtoMessage() {}

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

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

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

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

type ListProjectMembersResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Page of members assigned to the requested project, with their roles.
	Members []*ProjectMember `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty"`
	// Pagination outputs; carries next_page_token for the following page.
	Page          *v1.PageResponse `protobuf:"bytes,2,opt,name=page,proto3" json:"page,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListProjectMembersResponse) ProtoMessage() {}

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

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

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

type UpdateProjectMemberRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required: owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Required: project the membership belongs to.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Required: identity row id (authn.user.id) whose role is being changed.
	IdentityId string `protobuf:"bytes,3,opt,name=identity_id,json=identityId,proto3" json:"identity_id,omitempty"`
	// Required: new role bundle: "admin" or "member".
	Role          string `protobuf:"bytes,4,opt,name=role,proto3" json:"role,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*UpdateProjectMemberRequest) ProtoMessage() {}

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

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

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

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

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

type RemoveProjectMemberRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Required: owning customer slug.
	CustomerId string `protobuf:"bytes,1,opt,name=customer_id,json=customerId,proto3" json:"customer_id,omitempty"`
	// Required: project the membership belongs to.
	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
	// Required: identity row id (authn.user.id) whose membership is revoked.
	IdentityId    string `protobuf:"bytes,3,opt,name=identity_id,json=identityId,proto3" json:"identity_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RemoveProjectMemberRequest) ProtoMessage() {}

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

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

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

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

var File_tars_tenancy_v1_tenancy_service_proto protoreflect.FileDescriptor

const file_tars_tenancy_v1_tenancy_service_proto_rawDesc = "" +
	"\n" +
	"%tars/tenancy/v1/tenancy_service.proto\x12\x0ftars.tenancy.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/protobuf/empty.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\x1a\x1etars/tenancy/v1/customer.proto\x1a\x1dtars/tenancy/v1/project.proto\"\x82\x01\n" +
	"\x15CreateCustomerRequest\x12$\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\x03\xe0A\x02R\n" +
	"customerId\x12!\n" +
	"\fdisplay_name\x18\x02 \x01(\tR\vdisplayName\x12 \n" +
	"\vdescription\x18\x03 \x01(\tR\vdescription\":\n" +
	"\x12GetCustomerRequest\x12$\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\x03\xe0A\x02R\n" +
	"customerId\"G\n" +
	"\x14ListCustomersRequest\x12/\n" +
	"\x04page\x18\x01 \x01(\v2\x1b.tars.common.v1.PageRequestR\x04page\"\x82\x01\n" +
	"\x15ListCustomersResponse\x127\n" +
	"\tcustomers\x18\x01 \x03(\v2\x19.tars.tenancy.v1.CustomerR\tcustomers\x120\n" +
	"\x04page\x18\x02 \x01(\v2\x1c.tars.common.v1.PageResponseR\x04page\"\x82\x01\n" +
	"\x15UpdateCustomerRequest\x12$\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\x03\xe0A\x02R\n" +
	"customerId\x12!\n" +
	"\fdisplay_name\x18\x02 \x01(\tR\vdisplayName\x12 \n" +
	"\vdescription\x18\x03 \x01(\tR\vdescription\">\n" +
	"\x16ArchiveCustomerRequest\x12$\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\x03\xe0A\x02R\n" +
	"customerId\"\xa5\x01\n" +
	"\x14CreateProjectRequest\x12$\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\x03\xe0A\x02R\n" +
	"customerId\x12\"\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\x03\xe0A\x02R\tprojectId\x12!\n" +
	"\fdisplay_name\x18\x03 \x01(\tR\vdisplayName\x12 \n" +
	"\vdescription\x18\x04 \x01(\tR\vdescription\"]\n" +
	"\x11GetProjectRequest\x12$\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\x03\xe0A\x02R\n" +
	"customerId\x12\"\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\x03\xe0A\x02R\tprojectId\"l\n" +
	"\x13ListProjectsRequest\x12$\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\x03\xe0A\x02R\n" +
	"customerId\x12/\n" +
	"\x04page\x18\x02 \x01(\v2\x1b.tars.common.v1.PageRequestR\x04page\"~\n" +
	"\x14ListProjectsResponse\x124\n" +
	"\bprojects\x18\x01 \x03(\v2\x18.tars.tenancy.v1.ProjectR\bprojects\x120\n" +
	"\x04page\x18\x02 \x01(\v2\x1c.tars.common.v1.PageResponseR\x04page\"\xa5\x01\n" +
	"\x14UpdateProjectRequest\x12$\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\x03\xe0A\x02R\n" +
	"customerId\x12\"\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\x03\xe0A\x02R\tprojectId\x12!\n" +
	"\fdisplay_name\x18\x03 \x01(\tR\vdisplayName\x12 \n" +
	"\vdescription\x18\x04 \x01(\tR\vdescription\"a\n" +
	"\x15ArchiveProjectRequest\x12$\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\x03\xe0A\x02R\n" +
	"customerId\x12\"\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\x03\xe0A\x02R\tprojectId\"\xa2\x01\n" +
	"\x17AddProjectMemberRequest\x12$\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\x03\xe0A\x02R\n" +
	"customerId\x12\"\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\x03\xe0A\x02R\tprojectId\x12$\n" +
	"\videntity_id\x18\x03 \x01(\tB\x03\xe0A\x02R\n" +
	"identityId\x12\x17\n" +
	"\x04role\x18\x04 \x01(\tB\x03\xe0A\x02R\x04role\"\x96\x01\n" +
	"\x19ListProjectMembersRequest\x12$\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\x03\xe0A\x02R\n" +
	"customerId\x12\"\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\x03\xe0A\x02R\tprojectId\x12/\n" +
	"\x04page\x18\x03 \x01(\v2\x1b.tars.common.v1.PageRequestR\x04page\"\x88\x01\n" +
	"\x1aListProjectMembersResponse\x128\n" +
	"\amembers\x18\x01 \x03(\v2\x1e.tars.tenancy.v1.ProjectMemberR\amembers\x120\n" +
	"\x04page\x18\x02 \x01(\v2\x1c.tars.common.v1.PageResponseR\x04page\"\xa5\x01\n" +
	"\x1aUpdateProjectMemberRequest\x12$\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\x03\xe0A\x02R\n" +
	"customerId\x12\"\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\x03\xe0A\x02R\tprojectId\x12$\n" +
	"\videntity_id\x18\x03 \x01(\tB\x03\xe0A\x02R\n" +
	"identityId\x12\x17\n" +
	"\x04role\x18\x04 \x01(\tB\x03\xe0A\x02R\x04role\"\x8c\x01\n" +
	"\x1aRemoveProjectMemberRequest\x12$\n" +
	"\vcustomer_id\x18\x01 \x01(\tB\x03\xe0A\x02R\n" +
	"customerId\x12\"\n" +
	"\n" +
	"project_id\x18\x02 \x01(\tB\x03\xe0A\x02R\tprojectId\x12$\n" +
	"\videntity_id\x18\x03 \x01(\tB\x03\xe0A\x02R\n" +
	"identityId2\xca\a\n" +
	"\x0eTenancyService\x12\xb5\x01\n" +
	"\x0eCreateCustomer\x12&.tars.tenancy.v1.CreateCustomerRequest\x1a\x19.tars.tenancy.v1.Customer\"`\x8a\xb5\x18\v\n" +
	"\x02\x03\x01\x12\x05admin\x92\xb5\x18\x13:\tcustomers:\x06create\xa2\xb5\x18\x11Create a customer\xaa\xb5\x18\tCustomers\x82\xd3\xe4\x93\x02\x12:\x01*\"\r/v1/customers\x12\xb7\x01\n" +
	"\vGetCustomer\x12#.tars.tenancy.v1.GetCustomerRequest\x1a\x19.tars.tenancy.v1.Customer\"h\x8a\xb5\x18\v\n" +
	"\x02\x03\x01\x12\x05admin\x92\xb5\x18\x10:\tcustomers:\x03get\xa2\xb5\x18\x0eGet a customer\xaa\xb5\x18\tCustomers\x82\xd3\xe4\x93\x02\x1d\x12\x1b/v1/customers/{customer_id}\x90\x02\x01\x12\xbb\x01\n" +
	"\rListCustomers\x12%.tars.tenancy.v1.ListCustomersRequest\x1a&.tars.tenancy.v1.ListCustomersResponse\"[\x8a\xb5\x18\v\n" +
	"\x02\x03\x01\x12\x05admin\x92\xb5\x18\x11:\tcustomers:\x04list\xa2\xb5\x18\x0eList customers\xaa\xb5\x18\tCustomers\x82\xd3\xe4\x93\x02\x0f\x12\r/v1/customers\x90\x02\x01\x12\xc3\x01\n" +
	"\x0eUpdateCustomer\x12&.tars.tenancy.v1.UpdateCustomerRequest\x1a\x19.tars.tenancy.v1.Customer\"n\x8a\xb5\x18\v\n" +
	"\x02\x03\x01\x12\x05admin\x92\xb5\x18\x13:\tcustomers:\x06update\xa2\xb5\x18\x11Update a customer\xaa\xb5\x18\tCustomers\x82\xd3\xe4\x93\x02 :\x01*2\x1b/v1/customers/{customer_id}\x12\xc1\x01\n" +
	"\x0fArchiveCustomer\x12'.tars.tenancy.v1.ArchiveCustomerRequest\x1a\x16.google.protobuf.Empty\"m\x8a\xb5\x18\v\n" +
	"\x02\x03\x01\x12\x05admin\x92\xb5\x18\x14:\tcustomers:\aarchive\xa2\xb5\x18\x12Archive a customer\xaa\xb5\x18\tCustomers\x82\xd3\xe4\x93\x02\x1d*\x1b/v1/customers/{customer_id}2\x84\x11\n" +
	"\x0fProjectsService\x12\xc6\x01\n" +
	"\rCreateProject\x12%.tars.tenancy.v1.CreateProjectRequest\x1a\x18.tars.tenancy.v1.Project\"t\x8a\xb5\x18\v\n" +
	"\x02\x03\x01\x12\x05admin\x92\xb5\x18\x12:\bprojects:\x06create\xa2\xb5\x18\x10Create a project\xaa\xb5\x18\bProjects\x82\xd3\xe4\x93\x02):\x01*\"$/v1/customers/{customer_id}/projects\x12\xd0\x01\n" +
	"\n" +
	"GetProject\x12\".tars.tenancy.v1.GetProjectRequest\x1a\x18.tars.tenancy.v1.Project\"\x83\x01\x8a\xb5\x18\x13\n" +
	"\x02\x03\x01\x12\rproject_owner\x92\xb5\x18\x0f:\bprojects:\x03get\xa2\xb5\x18\rGet a project\xaa\xb5\x18\bProjects\x82\xd3\xe4\x93\x023\x121/v1/customers/{customer_id}/projects/{project_id}\x90\x02\x01\x12\xcc\x01\n" +
	"\fListProjects\x12$.tars.tenancy.v1.ListProjectsRequest\x1a%.tars.tenancy.v1.ListProjectsResponse\"o\x8a\xb5\x18\v\n" +
	"\x02\x03\x01\x12\x05admin\x92\xb5\x18\x10:\bprojects:\x04list\xa2\xb5\x18\rList projects\xaa\xb5\x18\bProjects\x82\xd3\xe4\x93\x02&\x12$/v1/customers/{customer_id}/projects\x90\x02\x01\x12\xdc\x01\n" +
	"\rUpdateProject\x12%.tars.tenancy.v1.UpdateProjectRequest\x1a\x18.tars.tenancy.v1.Project\"\x89\x01\x8a\xb5\x18\x13\n" +
	"\x02\x03\x01\x12\rproject_owner\x92\xb5\x18\x12:\bprojects:\x06update\xa2\xb5\x18\x10Update a project\xaa\xb5\x18\bProjects\x82\xd3\xe4\x93\x026:\x01*21/v1/customers/{customer_id}/projects/{project_id}\x12\xdb\x01\n" +
	"\x0eArchiveProject\x12&.tars.tenancy.v1.ArchiveProjectRequest\x1a\x16.google.protobuf.Empty\"\x88\x01\x8a\xb5\x18\x13\n" +
	"\x02\x03\x01\x12\rproject_owner\x92\xb5\x18\x13:\bprojects:\aarchive\xa2\xb5\x18\x11Archive a project\xaa\xb5\x18\bProjects\x82\xd3\xe4\x93\x023*1/v1/customers/{customer_id}/projects/{project_id}\x12\x81\x02\n" +
	"\x10AddProjectMember\x12(.tars.tenancy.v1.AddProjectMemberRequest\x1a\x1e.tars.tenancy.v1.ProjectMember\"\xa2\x01\x8a\xb5\x18\x13\n" +
	"\x02\x03\x01\x12\rproject_owner\x92\xb5\x18\x18:\bprojects:\amembers:\x03add\xa2\xb5\x18\x14Add a project member\xaa\xb5\x18\x0fProject Members\x82\xd3\xe4\x93\x02>:\x01*\"9/v1/customers/{customer_id}/projects/{project_id}/members\x12\x93\x02\n" +
	"\x12ListProjectMembers\x12*.tars.tenancy.v1.ListProjectMembersRequest\x1a+.tars.tenancy.v1.ListProjectMembersResponse\"\xa3\x01\x8a\xb5\x18\x13\n" +
	"\x02\x03\x01\x12\rproject_owner\x92\xb5\x18\x19:\bprojects:\amembers:\x04list\xa2\xb5\x18\x14List project members\xaa\xb5\x18\x0fProject Members\x82\xd3\xe4\x93\x02;\x129/v1/customers/{customer_id}/projects/{project_id}/members\x90\x02\x01\x12\x9b\x02\n" +
	"\x13UpdateProjectMember\x12+.tars.tenancy.v1.UpdateProjectMemberRequest\x1a\x1e.tars.tenancy.v1.ProjectMember\"\xb6\x01\x8a\xb5\x18\x13\n" +
	"\x02\x03\x01\x12\rproject_owner\x92\xb5\x18\x1b:\bprojects:\amembers:\x06update\xa2\xb5\x18\x17Update a project member\xaa\xb5\x18\x0fProject Members\x82\xd3\xe4\x93\x02L:\x01*2G/v1/customers/{customer_id}/projects/{project_id}/members/{identity_id}\x12\x90\x02\n" +
	"\x13RemoveProjectMember\x12+.tars.tenancy.v1.RemoveProjectMemberRequest\x1a\x16.google.protobuf.Empty\"\xb3\x01\x8a\xb5\x18\x13\n" +
	"\x02\x03\x01\x12\rproject_owner\x92\xb5\x18\x1b:\bprojects:\amembers:\x06remove\xa2\xb5\x18\x17Remove a project member\xaa\xb5\x18\x0fProject Members\x82\xd3\xe4\x93\x02I*G/v1/customers/{customer_id}/projects/{project_id}/members/{identity_id}B\xc3\x01\n" +
	"\x13com.tars.tenancy.v1B\x13TenancyServiceProtoP\x01Z9github.com/tetrateio/fraser/api/tars/tenancy/v1;tenancyv1\xa2\x02\x03TTX\xaa\x02\x0fTars.Tenancy.V1\xca\x02\x0fTars\\Tenancy\\V1\xe2\x02\x1bTars\\Tenancy\\V1\\GPBMetadata\xea\x02\x11Tars::Tenancy::V1b\x06proto3"

var (
	file_tars_tenancy_v1_tenancy_service_proto_rawDescOnce sync.Once
	file_tars_tenancy_v1_tenancy_service_proto_rawDescData []byte
)

func file_tars_tenancy_v1_tenancy_service_proto_rawDescGZIP() []byte {
	file_tars_tenancy_v1_tenancy_service_proto_rawDescOnce.Do(func() {
		file_tars_tenancy_v1_tenancy_service_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_tars_tenancy_v1_tenancy_service_proto_rawDesc), len(file_tars_tenancy_v1_tenancy_service_proto_rawDesc)))
	})
	return file_tars_tenancy_v1_tenancy_service_proto_rawDescData
}

var file_tars_tenancy_v1_tenancy_service_proto_msgTypes = make([]protoimpl.MessageInfo, 17)
var file_tars_tenancy_v1_tenancy_service_proto_goTypes = []any{
	(*CreateCustomerRequest)(nil),      // 0: tars.tenancy.v1.CreateCustomerRequest
	(*GetCustomerRequest)(nil),         // 1: tars.tenancy.v1.GetCustomerRequest
	(*ListCustomersRequest)(nil),       // 2: tars.tenancy.v1.ListCustomersRequest
	(*ListCustomersResponse)(nil),      // 3: tars.tenancy.v1.ListCustomersResponse
	(*UpdateCustomerRequest)(nil),      // 4: tars.tenancy.v1.UpdateCustomerRequest
	(*ArchiveCustomerRequest)(nil),     // 5: tars.tenancy.v1.ArchiveCustomerRequest
	(*CreateProjectRequest)(nil),       // 6: tars.tenancy.v1.CreateProjectRequest
	(*GetProjectRequest)(nil),          // 7: tars.tenancy.v1.GetProjectRequest
	(*ListProjectsRequest)(nil),        // 8: tars.tenancy.v1.ListProjectsRequest
	(*ListProjectsResponse)(nil),       // 9: tars.tenancy.v1.ListProjectsResponse
	(*UpdateProjectRequest)(nil),       // 10: tars.tenancy.v1.UpdateProjectRequest
	(*ArchiveProjectRequest)(nil),      // 11: tars.tenancy.v1.ArchiveProjectRequest
	(*AddProjectMemberRequest)(nil),    // 12: tars.tenancy.v1.AddProjectMemberRequest
	(*ListProjectMembersRequest)(nil),  // 13: tars.tenancy.v1.ListProjectMembersRequest
	(*ListProjectMembersResponse)(nil), // 14: tars.tenancy.v1.ListProjectMembersResponse
	(*UpdateProjectMemberRequest)(nil), // 15: tars.tenancy.v1.UpdateProjectMemberRequest
	(*RemoveProjectMemberRequest)(nil), // 16: tars.tenancy.v1.RemoveProjectMemberRequest
	(*v1.PageRequest)(nil),             // 17: tars.common.v1.PageRequest
	(*Customer)(nil),                   // 18: tars.tenancy.v1.Customer
	(*v1.PageResponse)(nil),            // 19: tars.common.v1.PageResponse
	(*Project)(nil),                    // 20: tars.tenancy.v1.Project
	(*ProjectMember)(nil),              // 21: tars.tenancy.v1.ProjectMember
	(*emptypb.Empty)(nil),              // 22: google.protobuf.Empty
}
var file_tars_tenancy_v1_tenancy_service_proto_depIdxs = []int32{
	17, // 0: tars.tenancy.v1.ListCustomersRequest.page:type_name -> tars.common.v1.PageRequest
	18, // 1: tars.tenancy.v1.ListCustomersResponse.customers:type_name -> tars.tenancy.v1.Customer
	19, // 2: tars.tenancy.v1.ListCustomersResponse.page:type_name -> tars.common.v1.PageResponse
	17, // 3: tars.tenancy.v1.ListProjectsRequest.page:type_name -> tars.common.v1.PageRequest
	20, // 4: tars.tenancy.v1.ListProjectsResponse.projects:type_name -> tars.tenancy.v1.Project
	19, // 5: tars.tenancy.v1.ListProjectsResponse.page:type_name -> tars.common.v1.PageResponse
	17, // 6: tars.tenancy.v1.ListProjectMembersRequest.page:type_name -> tars.common.v1.PageRequest
	21, // 7: tars.tenancy.v1.ListProjectMembersResponse.members:type_name -> tars.tenancy.v1.ProjectMember
	19, // 8: tars.tenancy.v1.ListProjectMembersResponse.page:type_name -> tars.common.v1.PageResponse
	0,  // 9: tars.tenancy.v1.TenancyService.CreateCustomer:input_type -> tars.tenancy.v1.CreateCustomerRequest
	1,  // 10: tars.tenancy.v1.TenancyService.GetCustomer:input_type -> tars.tenancy.v1.GetCustomerRequest
	2,  // 11: tars.tenancy.v1.TenancyService.ListCustomers:input_type -> tars.tenancy.v1.ListCustomersRequest
	4,  // 12: tars.tenancy.v1.TenancyService.UpdateCustomer:input_type -> tars.tenancy.v1.UpdateCustomerRequest
	5,  // 13: tars.tenancy.v1.TenancyService.ArchiveCustomer:input_type -> tars.tenancy.v1.ArchiveCustomerRequest
	6,  // 14: tars.tenancy.v1.ProjectsService.CreateProject:input_type -> tars.tenancy.v1.CreateProjectRequest
	7,  // 15: tars.tenancy.v1.ProjectsService.GetProject:input_type -> tars.tenancy.v1.GetProjectRequest
	8,  // 16: tars.tenancy.v1.ProjectsService.ListProjects:input_type -> tars.tenancy.v1.ListProjectsRequest
	10, // 17: tars.tenancy.v1.ProjectsService.UpdateProject:input_type -> tars.tenancy.v1.UpdateProjectRequest
	11, // 18: tars.tenancy.v1.ProjectsService.ArchiveProject:input_type -> tars.tenancy.v1.ArchiveProjectRequest
	12, // 19: tars.tenancy.v1.ProjectsService.AddProjectMember:input_type -> tars.tenancy.v1.AddProjectMemberRequest
	13, // 20: tars.tenancy.v1.ProjectsService.ListProjectMembers:input_type -> tars.tenancy.v1.ListProjectMembersRequest
	15, // 21: tars.tenancy.v1.ProjectsService.UpdateProjectMember:input_type -> tars.tenancy.v1.UpdateProjectMemberRequest
	16, // 22: tars.tenancy.v1.ProjectsService.RemoveProjectMember:input_type -> tars.tenancy.v1.RemoveProjectMemberRequest
	18, // 23: tars.tenancy.v1.TenancyService.CreateCustomer:output_type -> tars.tenancy.v1.Customer
	18, // 24: tars.tenancy.v1.TenancyService.GetCustomer:output_type -> tars.tenancy.v1.Customer
	3,  // 25: tars.tenancy.v1.TenancyService.ListCustomers:output_type -> tars.tenancy.v1.ListCustomersResponse
	18, // 26: tars.tenancy.v1.TenancyService.UpdateCustomer:output_type -> tars.tenancy.v1.Customer
	22, // 27: tars.tenancy.v1.TenancyService.ArchiveCustomer:output_type -> google.protobuf.Empty
	20, // 28: tars.tenancy.v1.ProjectsService.CreateProject:output_type -> tars.tenancy.v1.Project
	20, // 29: tars.tenancy.v1.ProjectsService.GetProject:output_type -> tars.tenancy.v1.Project
	9,  // 30: tars.tenancy.v1.ProjectsService.ListProjects:output_type -> tars.tenancy.v1.ListProjectsResponse
	20, // 31: tars.tenancy.v1.ProjectsService.UpdateProject:output_type -> tars.tenancy.v1.Project
	22, // 32: tars.tenancy.v1.ProjectsService.ArchiveProject:output_type -> google.protobuf.Empty
	21, // 33: tars.tenancy.v1.ProjectsService.AddProjectMember:output_type -> tars.tenancy.v1.ProjectMember
	14, // 34: tars.tenancy.v1.ProjectsService.ListProjectMembers:output_type -> tars.tenancy.v1.ListProjectMembersResponse
	21, // 35: tars.tenancy.v1.ProjectsService.UpdateProjectMember:output_type -> tars.tenancy.v1.ProjectMember
	22, // 36: tars.tenancy.v1.ProjectsService.RemoveProjectMember:output_type -> google.protobuf.Empty
	23, // [23:37] is the sub-list for method output_type
	9,  // [9:23] is the sub-list for method input_type
	9,  // [9:9] is the sub-list for extension type_name
	9,  // [9:9] is the sub-list for extension extendee
	0,  // [0:9] is the sub-list for field type_name
}

func init() { file_tars_tenancy_v1_tenancy_service_proto_init() }
func file_tars_tenancy_v1_tenancy_service_proto_init() {
	if File_tars_tenancy_v1_tenancy_service_proto != nil {
		return
	}
	file_tars_tenancy_v1_customer_proto_init()
	file_tars_tenancy_v1_project_proto_init()
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_tars_tenancy_v1_tenancy_service_proto_rawDesc), len(file_tars_tenancy_v1_tenancy_service_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   17,
			NumExtensions: 0,
			NumServices:   2,
		},
		GoTypes:           file_tars_tenancy_v1_tenancy_service_proto_goTypes,
		DependencyIndexes: file_tars_tenancy_v1_tenancy_service_proto_depIdxs,
		MessageInfos:      file_tars_tenancy_v1_tenancy_service_proto_msgTypes,
	}.Build()
	File_tars_tenancy_v1_tenancy_service_proto = out.File
	file_tars_tenancy_v1_tenancy_service_proto_goTypes = nil
	file_tars_tenancy_v1_tenancy_service_proto_depIdxs = nil
}
