// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.6
// 	protoc        v6.30.2
// source: api/tenant.proto

package api

import (
	_ "google.golang.org/genproto/googleapis/api/annotations"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

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

type Tenant struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Tenant ID (UUID).
	// Note: this value will be automatically generated on create.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Tenant name,
	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	// Tenant description.
	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	// Can the tenant create and "own" Gateways?
	CanHaveGateways bool `protobuf:"varint,4,opt,name=can_have_gateways,json=canHaveGateways,proto3" json:"can_have_gateways,omitempty"`
	// Max. gateway count for tenant.
	// When set to 0, the tenant can have unlimited gateways.
	MaxGatewayCount uint32 `protobuf:"varint,5,opt,name=max_gateway_count,json=maxGatewayCount,proto3" json:"max_gateway_count,omitempty"`
	// Max. device count for tenant.
	// When set to 0, the tenant can have unlimited devices.
	MaxDeviceCount uint32 `protobuf:"varint,6,opt,name=max_device_count,json=maxDeviceCount,proto3" json:"max_device_count,omitempty"`
	// Private gateways (uplink).
	// If enabled, then uplink messages will not be shared with other tenants.
	PrivateGatewaysUp bool `protobuf:"varint,7,opt,name=private_gateways_up,json=privateGatewaysUp,proto3" json:"private_gateways_up,omitempty"`
	// Private gateways (downlink).
	// If enabled, then other tenants will not be able to schedule downlink
	// messages through the gateways of this tenant. For example, in case you
	// do want to share uplinks with other tenants (private_gateways_up=false),
	// but you want to prevent other tenants from using gateway airtime.
	PrivateGatewaysDown bool `protobuf:"varint,8,opt,name=private_gateways_down,json=privateGatewaysDown,proto3" json:"private_gateways_down,omitempty"`
	// Tags (user defined).
	// These tags can be used to add additional information to the tenant. These
	// tags are NOT exposed in the integration events.
	Tags          map[string]string `protobuf:"bytes,9,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*Tenant) ProtoMessage() {}

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

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

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

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

func (x *Tenant) GetCanHaveGateways() bool {
	if x != nil {
		return x.CanHaveGateways
	}
	return false
}

func (x *Tenant) GetMaxGatewayCount() uint32 {
	if x != nil {
		return x.MaxGatewayCount
	}
	return 0
}

func (x *Tenant) GetMaxDeviceCount() uint32 {
	if x != nil {
		return x.MaxDeviceCount
	}
	return 0
}

func (x *Tenant) GetPrivateGatewaysUp() bool {
	if x != nil {
		return x.PrivateGatewaysUp
	}
	return false
}

func (x *Tenant) GetPrivateGatewaysDown() bool {
	if x != nil {
		return x.PrivateGatewaysDown
	}
	return false
}

func (x *Tenant) GetTags() map[string]string {
	if x != nil {
		return x.Tags
	}
	return nil
}

type TenantListItem struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Tenant ID (UUID).
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Created at timestamp.
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Last update timestamp.
	UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	// Tenant name.
	Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
	// Can the tenant create and "own" Gateways?
	CanHaveGateways bool `protobuf:"varint,5,opt,name=can_have_gateways,json=canHaveGateways,proto3" json:"can_have_gateways,omitempty"`
	// Private gateways (uplink).
	PrivateGatewaysUp bool `protobuf:"varint,6,opt,name=private_gateways_up,json=privateGatewaysUp,proto3" json:"private_gateways_up,omitempty"`
	// Private gateways (downlink).
	PrivateGatewaysDown bool `protobuf:"varint,9,opt,name=private_gateways_down,json=privateGatewaysDown,proto3" json:"private_gateways_down,omitempty"`
	// Max gateway count.
	// 0 = unlimited.
	MaxGatewayCount uint32 `protobuf:"varint,7,opt,name=max_gateway_count,json=maxGatewayCount,proto3" json:"max_gateway_count,omitempty"`
	// Max device count.
	// 0 = unlimited.
	MaxDeviceCount uint32 `protobuf:"varint,8,opt,name=max_device_count,json=maxDeviceCount,proto3" json:"max_device_count,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*TenantListItem) ProtoMessage() {}

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

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

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

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

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

func (x *TenantListItem) GetCanHaveGateways() bool {
	if x != nil {
		return x.CanHaveGateways
	}
	return false
}

func (x *TenantListItem) GetPrivateGatewaysUp() bool {
	if x != nil {
		return x.PrivateGatewaysUp
	}
	return false
}

func (x *TenantListItem) GetPrivateGatewaysDown() bool {
	if x != nil {
		return x.PrivateGatewaysDown
	}
	return false
}

func (x *TenantListItem) GetMaxGatewayCount() uint32 {
	if x != nil {
		return x.MaxGatewayCount
	}
	return 0
}

func (x *TenantListItem) GetMaxDeviceCount() uint32 {
	if x != nil {
		return x.MaxDeviceCount
	}
	return 0
}

type CreateTenantRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Tenant object to create.
	Tenant        *Tenant `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CreateTenantRequest) ProtoMessage() {}

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

func (x *CreateTenantRequest) GetTenant() *Tenant {
	if x != nil {
		return x.Tenant
	}
	return nil
}

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

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

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

func (*CreateTenantResponse) ProtoMessage() {}

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

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

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

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

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

func (*GetTenantRequest) ProtoMessage() {}

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

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

type GetTenantResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Tenant object.
	Tenant *Tenant `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"`
	// Created at timestamp.
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Last update timestamp.
	UpdatedAt     *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetTenantResponse) ProtoMessage() {}

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

func (x *GetTenantResponse) GetTenant() *Tenant {
	if x != nil {
		return x.Tenant
	}
	return nil
}

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

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

type UpdateTenantRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Tenant object.
	Tenant        *Tenant `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*UpdateTenantRequest) ProtoMessage() {}

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

func (x *UpdateTenantRequest) GetTenant() *Tenant {
	if x != nil {
		return x.Tenant
	}
	return nil
}

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

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

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

func (*DeleteTenantRequest) ProtoMessage() {}

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

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

type ListTenantsRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Max number of tenants to return in the result-set.
	// If not set, it will be treated as 0, and the response will only return the total_count.
	Limit uint32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"`
	// Offset in the result-set (for pagination).
	Offset uint32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"`
	// If set, the given string will be used to search on name.
	Search string `protobuf:"bytes,3,opt,name=search,proto3" json:"search,omitempty"`
	// If set, filters the result set to the tenants of the user.
	// Only global API keys are able to filter by this field.
	UserId        string `protobuf:"bytes,4,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListTenantsRequest) ProtoMessage() {}

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

func (x *ListTenantsRequest) GetLimit() uint32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *ListTenantsRequest) GetOffset() uint32 {
	if x != nil {
		return x.Offset
	}
	return 0
}

func (x *ListTenantsRequest) GetSearch() string {
	if x != nil {
		return x.Search
	}
	return ""
}

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

type ListTenantsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Total number of tenants.
	TotalCount uint32 `protobuf:"varint,1,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"`
	// Result-set.
	Result        []*TenantListItem `protobuf:"bytes,2,rep,name=result,proto3" json:"result,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListTenantsResponse) ProtoMessage() {}

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

func (x *ListTenantsResponse) GetTotalCount() uint32 {
	if x != nil {
		return x.TotalCount
	}
	return 0
}

func (x *ListTenantsResponse) GetResult() []*TenantListItem {
	if x != nil {
		return x.Result
	}
	return nil
}

type TenantUser struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Tenant ID (UUID).
	TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"`
	// User ID (UUID).
	UserId string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	// User is admin within the context of the tenant.
	// There is no need to set the is_device_admin and is_gateway_admin flags.
	IsAdmin bool `protobuf:"varint,3,opt,name=is_admin,json=isAdmin,proto3" json:"is_admin,omitempty"`
	// User is able to modify device related resources (applications,
	// device-profiles, devices, multicast-groups).
	IsDeviceAdmin bool `protobuf:"varint,4,opt,name=is_device_admin,json=isDeviceAdmin,proto3" json:"is_device_admin,omitempty"`
	// User is able to modify gateways.
	IsGatewayAdmin bool `protobuf:"varint,5,opt,name=is_gateway_admin,json=isGatewayAdmin,proto3" json:"is_gateway_admin,omitempty"`
	// Email (only used on get and when adding a user to a tenant).
	Email         string `protobuf:"bytes,6,opt,name=email,proto3" json:"email,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*TenantUser) ProtoMessage() {}

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

func (x *TenantUser) GetTenantId() string {
	if x != nil {
		return x.TenantId
	}
	return ""
}

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

func (x *TenantUser) GetIsAdmin() bool {
	if x != nil {
		return x.IsAdmin
	}
	return false
}

func (x *TenantUser) GetIsDeviceAdmin() bool {
	if x != nil {
		return x.IsDeviceAdmin
	}
	return false
}

func (x *TenantUser) GetIsGatewayAdmin() bool {
	if x != nil {
		return x.IsGatewayAdmin
	}
	return false
}

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

type TenantUserListItem struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Tenant ID (UUID).
	TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"`
	// User ID (UUID).
	UserId string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	// Created at timestamp.
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Last update timestamp.
	UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	// Email.
	Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"`
	// User is admin within the context of the tenant.
	// There is no need to set the is_device_admin and is_gateway_admin flags.
	IsAdmin bool `protobuf:"varint,6,opt,name=is_admin,json=isAdmin,proto3" json:"is_admin,omitempty"`
	// User is able to modify device related resources (applications,
	// device-profiles, devices, multicast-groups).
	IsDeviceAdmin bool `protobuf:"varint,7,opt,name=is_device_admin,json=isDeviceAdmin,proto3" json:"is_device_admin,omitempty"`
	// User is able to modify gateways.
	IsGatewayAdmin bool `protobuf:"varint,8,opt,name=is_gateway_admin,json=isGatewayAdmin,proto3" json:"is_gateway_admin,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*TenantUserListItem) ProtoMessage() {}

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

func (x *TenantUserListItem) GetTenantId() string {
	if x != nil {
		return x.TenantId
	}
	return ""
}

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

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

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

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

func (x *TenantUserListItem) GetIsAdmin() bool {
	if x != nil {
		return x.IsAdmin
	}
	return false
}

func (x *TenantUserListItem) GetIsDeviceAdmin() bool {
	if x != nil {
		return x.IsDeviceAdmin
	}
	return false
}

func (x *TenantUserListItem) GetIsGatewayAdmin() bool {
	if x != nil {
		return x.IsGatewayAdmin
	}
	return false
}

type AddTenantUserRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Tenant user object.
	TenantUser    *TenantUser `protobuf:"bytes,1,opt,name=tenant_user,json=tenantUser,proto3" json:"tenant_user,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*AddTenantUserRequest) ProtoMessage() {}

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

func (x *AddTenantUserRequest) GetTenantUser() *TenantUser {
	if x != nil {
		return x.TenantUser
	}
	return nil
}

type GetTenantUserRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Tenant ID (UUID).
	TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"`
	// User ID (UUID).
	UserId        string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetTenantUserRequest) ProtoMessage() {}

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

func (x *GetTenantUserRequest) GetTenantId() string {
	if x != nil {
		return x.TenantId
	}
	return ""
}

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

type GetTenantUserResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Tenant user object.
	TenantUser *TenantUser `protobuf:"bytes,1,opt,name=tenant_user,json=tenantUser,proto3" json:"tenant_user,omitempty"`
	// Created at timestamp.
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Last update timestamp.
	UpdatedAt     *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetTenantUserResponse) ProtoMessage() {}

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

func (x *GetTenantUserResponse) GetTenantUser() *TenantUser {
	if x != nil {
		return x.TenantUser
	}
	return nil
}

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

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

type UpdateTenantUserRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Tenant user object.
	TenantUser    *TenantUser `protobuf:"bytes,1,opt,name=tenant_user,json=tenantUser,proto3" json:"tenant_user,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*UpdateTenantUserRequest) ProtoMessage() {}

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

func (x *UpdateTenantUserRequest) GetTenantUser() *TenantUser {
	if x != nil {
		return x.TenantUser
	}
	return nil
}

type DeleteTenantUserRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Tenant ID (UUID).
	TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"`
	// User ID (UUID).
	UserId        string `protobuf:"bytes,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*DeleteTenantUserRequest) ProtoMessage() {}

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

func (x *DeleteTenantUserRequest) GetTenantId() string {
	if x != nil {
		return x.TenantId
	}
	return ""
}

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

type ListTenantUsersRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Tenant ID (UUID).
	TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"`
	// Max number of tenants to return in the result-set.
	// If not set, it will be treated as 0, and the response will only return the total_count.
	Limit uint32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"`
	// Offset in the result-set (for pagination).
	Offset        uint32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListTenantUsersRequest) ProtoMessage() {}

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

func (x *ListTenantUsersRequest) GetTenantId() string {
	if x != nil {
		return x.TenantId
	}
	return ""
}

func (x *ListTenantUsersRequest) GetLimit() uint32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *ListTenantUsersRequest) GetOffset() uint32 {
	if x != nil {
		return x.Offset
	}
	return 0
}

type ListTenantUsersResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Total number of tenants.
	TotalCount uint32 `protobuf:"varint,1,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"`
	// Result-set.
	Result        []*TenantUserListItem `protobuf:"bytes,2,rep,name=result,proto3" json:"result,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListTenantUsersResponse) ProtoMessage() {}

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

func (x *ListTenantUsersResponse) GetTotalCount() uint32 {
	if x != nil {
		return x.TotalCount
	}
	return 0
}

func (x *ListTenantUsersResponse) GetResult() []*TenantUserListItem {
	if x != nil {
		return x.Result
	}
	return nil
}

var File_api_tenant_proto protoreflect.FileDescriptor

const file_api_tenant_proto_rawDesc = "" +
	"\n" +
	"\x10api/tenant.proto\x12\x03api\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"\x98\x03\n" +
	"\x06Tenant\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12 \n" +
	"\vdescription\x18\x03 \x01(\tR\vdescription\x12*\n" +
	"\x11can_have_gateways\x18\x04 \x01(\bR\x0fcanHaveGateways\x12*\n" +
	"\x11max_gateway_count\x18\x05 \x01(\rR\x0fmaxGatewayCount\x12(\n" +
	"\x10max_device_count\x18\x06 \x01(\rR\x0emaxDeviceCount\x12.\n" +
	"\x13private_gateways_up\x18\a \x01(\bR\x11privateGatewaysUp\x122\n" +
	"\x15private_gateways_down\x18\b \x01(\bR\x13privateGatewaysDown\x12)\n" +
	"\x04tags\x18\t \x03(\v2\x15.api.Tenant.TagsEntryR\x04tags\x1a7\n" +
	"\tTagsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x90\x03\n" +
	"\x0eTenantListItem\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x129\n" +
	"\n" +
	"created_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
	"\n" +
	"updated_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x12\n" +
	"\x04name\x18\x04 \x01(\tR\x04name\x12*\n" +
	"\x11can_have_gateways\x18\x05 \x01(\bR\x0fcanHaveGateways\x12.\n" +
	"\x13private_gateways_up\x18\x06 \x01(\bR\x11privateGatewaysUp\x122\n" +
	"\x15private_gateways_down\x18\t \x01(\bR\x13privateGatewaysDown\x12*\n" +
	"\x11max_gateway_count\x18\a \x01(\rR\x0fmaxGatewayCount\x12(\n" +
	"\x10max_device_count\x18\b \x01(\rR\x0emaxDeviceCount\":\n" +
	"\x13CreateTenantRequest\x12#\n" +
	"\x06tenant\x18\x01 \x01(\v2\v.api.TenantR\x06tenant\"&\n" +
	"\x14CreateTenantResponse\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\"\"\n" +
	"\x10GetTenantRequest\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\"\xae\x01\n" +
	"\x11GetTenantResponse\x12#\n" +
	"\x06tenant\x18\x01 \x01(\v2\v.api.TenantR\x06tenant\x129\n" +
	"\n" +
	"created_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
	"\n" +
	"updated_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\":\n" +
	"\x13UpdateTenantRequest\x12#\n" +
	"\x06tenant\x18\x01 \x01(\v2\v.api.TenantR\x06tenant\"%\n" +
	"\x13DeleteTenantRequest\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\"s\n" +
	"\x12ListTenantsRequest\x12\x14\n" +
	"\x05limit\x18\x01 \x01(\rR\x05limit\x12\x16\n" +
	"\x06offset\x18\x02 \x01(\rR\x06offset\x12\x16\n" +
	"\x06search\x18\x03 \x01(\tR\x06search\x12\x17\n" +
	"\auser_id\x18\x04 \x01(\tR\x06userId\"c\n" +
	"\x13ListTenantsResponse\x12\x1f\n" +
	"\vtotal_count\x18\x01 \x01(\rR\n" +
	"totalCount\x12+\n" +
	"\x06result\x18\x02 \x03(\v2\x13.api.TenantListItemR\x06result\"\xc5\x01\n" +
	"\n" +
	"TenantUser\x12\x1b\n" +
	"\ttenant_id\x18\x01 \x01(\tR\btenantId\x12\x17\n" +
	"\auser_id\x18\x02 \x01(\tR\x06userId\x12\x19\n" +
	"\bis_admin\x18\x03 \x01(\bR\aisAdmin\x12&\n" +
	"\x0fis_device_admin\x18\x04 \x01(\bR\risDeviceAdmin\x12(\n" +
	"\x10is_gateway_admin\x18\x05 \x01(\bR\x0eisGatewayAdmin\x12\x14\n" +
	"\x05email\x18\x06 \x01(\tR\x05email\"\xc3\x02\n" +
	"\x12TenantUserListItem\x12\x1b\n" +
	"\ttenant_id\x18\x01 \x01(\tR\btenantId\x12\x17\n" +
	"\auser_id\x18\x02 \x01(\tR\x06userId\x129\n" +
	"\n" +
	"created_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
	"\n" +
	"updated_at\x18\x04 \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x14\n" +
	"\x05email\x18\x05 \x01(\tR\x05email\x12\x19\n" +
	"\bis_admin\x18\x06 \x01(\bR\aisAdmin\x12&\n" +
	"\x0fis_device_admin\x18\a \x01(\bR\risDeviceAdmin\x12(\n" +
	"\x10is_gateway_admin\x18\b \x01(\bR\x0eisGatewayAdmin\"H\n" +
	"\x14AddTenantUserRequest\x120\n" +
	"\vtenant_user\x18\x01 \x01(\v2\x0f.api.TenantUserR\n" +
	"tenantUser\"L\n" +
	"\x14GetTenantUserRequest\x12\x1b\n" +
	"\ttenant_id\x18\x01 \x01(\tR\btenantId\x12\x17\n" +
	"\auser_id\x18\x02 \x01(\tR\x06userId\"\xbf\x01\n" +
	"\x15GetTenantUserResponse\x120\n" +
	"\vtenant_user\x18\x01 \x01(\v2\x0f.api.TenantUserR\n" +
	"tenantUser\x129\n" +
	"\n" +
	"created_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
	"\n" +
	"updated_at\x18\x03 \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\"K\n" +
	"\x17UpdateTenantUserRequest\x120\n" +
	"\vtenant_user\x18\x01 \x01(\v2\x0f.api.TenantUserR\n" +
	"tenantUser\"O\n" +
	"\x17DeleteTenantUserRequest\x12\x1b\n" +
	"\ttenant_id\x18\x01 \x01(\tR\btenantId\x12\x17\n" +
	"\auser_id\x18\x02 \x01(\tR\x06userId\"c\n" +
	"\x16ListTenantUsersRequest\x12\x1b\n" +
	"\ttenant_id\x18\x01 \x01(\tR\btenantId\x12\x14\n" +
	"\x05limit\x18\x02 \x01(\rR\x05limit\x12\x16\n" +
	"\x06offset\x18\x03 \x01(\rR\x06offset\"k\n" +
	"\x17ListTenantUsersResponse\x12\x1f\n" +
	"\vtotal_count\x18\x01 \x01(\rR\n" +
	"totalCount\x12/\n" +
	"\x06result\x18\x02 \x03(\v2\x17.api.TenantUserListItemR\x06result2\xa2\b\n" +
	"\rTenantService\x12V\n" +
	"\x06Create\x12\x18.api.CreateTenantRequest\x1a\x19.api.CreateTenantResponse\"\x17\x82\xd3\xe4\x93\x02\x11:\x01*\"\f/api/tenants\x12O\n" +
	"\x03Get\x12\x15.api.GetTenantRequest\x1a\x16.api.GetTenantResponse\"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/api/tenants/{id}\x12_\n" +
	"\x06Update\x12\x18.api.UpdateTenantRequest\x1a\x16.google.protobuf.Empty\"#\x82\xd3\xe4\x93\x02\x1d:\x01*\x1a\x18/api/tenants/{tenant.id}\x12U\n" +
	"\x06Delete\x12\x18.api.DeleteTenantRequest\x1a\x16.google.protobuf.Empty\"\x19\x82\xd3\xe4\x93\x02\x13*\x11/api/tenants/{id}\x12O\n" +
	"\x04List\x12\x17.api.ListTenantsRequest\x1a\x18.api.ListTenantsResponse\"\x14\x82\xd3\xe4\x93\x02\x0e\x12\f/api/tenants\x12s\n" +
	"\aAddUser\x12\x19.api.AddTenantUserRequest\x1a\x16.google.protobuf.Empty\"5\x82\xd3\xe4\x93\x02/:\x01*\"*/api/tenants/{tenant_user.tenant_id}/users\x12r\n" +
	"\aGetUser\x12\x19.api.GetTenantUserRequest\x1a\x1a.api.GetTenantUserResponse\"0\x82\xd3\xe4\x93\x02*\x12(/api/tenants/{tenant_id}/users/{user_id}\x12\x8f\x01\n" +
	"\n" +
	"UpdateUser\x12\x1c.api.UpdateTenantUserRequest\x1a\x16.google.protobuf.Empty\"K\x82\xd3\xe4\x93\x02E:\x01*\x1a@/api/tenants/{tenant_user.tenant_id}/users/{tenant_user.user_id}\x12t\n" +
	"\n" +
	"DeleteUser\x12\x1c.api.DeleteTenantUserRequest\x1a\x16.google.protobuf.Empty\"0\x82\xd3\xe4\x93\x02**(/api/tenants/{tenant_id}/users/{user_id}\x12n\n" +
	"\tListUsers\x12\x1b.api.ListTenantUsersRequest\x1a\x1c.api.ListTenantUsersResponse\"&\x82\xd3\xe4\x93\x02 \x12\x1e/api/tenants/{tenant_id}/usersB\x91\x01\n" +
	"\x11io.chirpstack.apiB\vTenantProtoP\x01Z.github.com/chirpstack/chirpstack/api/go/v4/api\xaa\x02\x0eChirpstack.Api\xca\x02\x0eChirpstack\\Api\xe2\x02\x1aGPBMetadata\\Chirpstack\\Apib\x06proto3"

var (
	file_api_tenant_proto_rawDescOnce sync.Once
	file_api_tenant_proto_rawDescData []byte
)

func file_api_tenant_proto_rawDescGZIP() []byte {
	file_api_tenant_proto_rawDescOnce.Do(func() {
		file_api_tenant_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_tenant_proto_rawDesc), len(file_api_tenant_proto_rawDesc)))
	})
	return file_api_tenant_proto_rawDescData
}

var file_api_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
var file_api_tenant_proto_goTypes = []any{
	(*Tenant)(nil),                  // 0: api.Tenant
	(*TenantListItem)(nil),          // 1: api.TenantListItem
	(*CreateTenantRequest)(nil),     // 2: api.CreateTenantRequest
	(*CreateTenantResponse)(nil),    // 3: api.CreateTenantResponse
	(*GetTenantRequest)(nil),        // 4: api.GetTenantRequest
	(*GetTenantResponse)(nil),       // 5: api.GetTenantResponse
	(*UpdateTenantRequest)(nil),     // 6: api.UpdateTenantRequest
	(*DeleteTenantRequest)(nil),     // 7: api.DeleteTenantRequest
	(*ListTenantsRequest)(nil),      // 8: api.ListTenantsRequest
	(*ListTenantsResponse)(nil),     // 9: api.ListTenantsResponse
	(*TenantUser)(nil),              // 10: api.TenantUser
	(*TenantUserListItem)(nil),      // 11: api.TenantUserListItem
	(*AddTenantUserRequest)(nil),    // 12: api.AddTenantUserRequest
	(*GetTenantUserRequest)(nil),    // 13: api.GetTenantUserRequest
	(*GetTenantUserResponse)(nil),   // 14: api.GetTenantUserResponse
	(*UpdateTenantUserRequest)(nil), // 15: api.UpdateTenantUserRequest
	(*DeleteTenantUserRequest)(nil), // 16: api.DeleteTenantUserRequest
	(*ListTenantUsersRequest)(nil),  // 17: api.ListTenantUsersRequest
	(*ListTenantUsersResponse)(nil), // 18: api.ListTenantUsersResponse
	nil,                             // 19: api.Tenant.TagsEntry
	(*timestamppb.Timestamp)(nil),   // 20: google.protobuf.Timestamp
	(*emptypb.Empty)(nil),           // 21: google.protobuf.Empty
}
var file_api_tenant_proto_depIdxs = []int32{
	19, // 0: api.Tenant.tags:type_name -> api.Tenant.TagsEntry
	20, // 1: api.TenantListItem.created_at:type_name -> google.protobuf.Timestamp
	20, // 2: api.TenantListItem.updated_at:type_name -> google.protobuf.Timestamp
	0,  // 3: api.CreateTenantRequest.tenant:type_name -> api.Tenant
	0,  // 4: api.GetTenantResponse.tenant:type_name -> api.Tenant
	20, // 5: api.GetTenantResponse.created_at:type_name -> google.protobuf.Timestamp
	20, // 6: api.GetTenantResponse.updated_at:type_name -> google.protobuf.Timestamp
	0,  // 7: api.UpdateTenantRequest.tenant:type_name -> api.Tenant
	1,  // 8: api.ListTenantsResponse.result:type_name -> api.TenantListItem
	20, // 9: api.TenantUserListItem.created_at:type_name -> google.protobuf.Timestamp
	20, // 10: api.TenantUserListItem.updated_at:type_name -> google.protobuf.Timestamp
	10, // 11: api.AddTenantUserRequest.tenant_user:type_name -> api.TenantUser
	10, // 12: api.GetTenantUserResponse.tenant_user:type_name -> api.TenantUser
	20, // 13: api.GetTenantUserResponse.created_at:type_name -> google.protobuf.Timestamp
	20, // 14: api.GetTenantUserResponse.updated_at:type_name -> google.protobuf.Timestamp
	10, // 15: api.UpdateTenantUserRequest.tenant_user:type_name -> api.TenantUser
	11, // 16: api.ListTenantUsersResponse.result:type_name -> api.TenantUserListItem
	2,  // 17: api.TenantService.Create:input_type -> api.CreateTenantRequest
	4,  // 18: api.TenantService.Get:input_type -> api.GetTenantRequest
	6,  // 19: api.TenantService.Update:input_type -> api.UpdateTenantRequest
	7,  // 20: api.TenantService.Delete:input_type -> api.DeleteTenantRequest
	8,  // 21: api.TenantService.List:input_type -> api.ListTenantsRequest
	12, // 22: api.TenantService.AddUser:input_type -> api.AddTenantUserRequest
	13, // 23: api.TenantService.GetUser:input_type -> api.GetTenantUserRequest
	15, // 24: api.TenantService.UpdateUser:input_type -> api.UpdateTenantUserRequest
	16, // 25: api.TenantService.DeleteUser:input_type -> api.DeleteTenantUserRequest
	17, // 26: api.TenantService.ListUsers:input_type -> api.ListTenantUsersRequest
	3,  // 27: api.TenantService.Create:output_type -> api.CreateTenantResponse
	5,  // 28: api.TenantService.Get:output_type -> api.GetTenantResponse
	21, // 29: api.TenantService.Update:output_type -> google.protobuf.Empty
	21, // 30: api.TenantService.Delete:output_type -> google.protobuf.Empty
	9,  // 31: api.TenantService.List:output_type -> api.ListTenantsResponse
	21, // 32: api.TenantService.AddUser:output_type -> google.protobuf.Empty
	14, // 33: api.TenantService.GetUser:output_type -> api.GetTenantUserResponse
	21, // 34: api.TenantService.UpdateUser:output_type -> google.protobuf.Empty
	21, // 35: api.TenantService.DeleteUser:output_type -> google.protobuf.Empty
	18, // 36: api.TenantService.ListUsers:output_type -> api.ListTenantUsersResponse
	27, // [27:37] is the sub-list for method output_type
	17, // [17:27] is the sub-list for method input_type
	17, // [17:17] is the sub-list for extension type_name
	17, // [17:17] is the sub-list for extension extendee
	0,  // [0:17] is the sub-list for field type_name
}

func init() { file_api_tenant_proto_init() }
func file_api_tenant_proto_init() {
	if File_api_tenant_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_tenant_proto_rawDesc), len(file_api_tenant_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   20,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_api_tenant_proto_goTypes,
		DependencyIndexes: file_api_tenant_proto_depIdxs,
		MessageInfos:      file_api_tenant_proto_msgTypes,
	}.Build()
	File_api_tenant_proto = out.File
	file_api_tenant_proto_goTypes = nil
	file_api_tenant_proto_depIdxs = nil
}
