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

package api

import (
	common "github.com/chirpstack/chirpstack/api/go/v4/common"
	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 ApiKey struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// API key ID.
	// This value will be automatically generated on create.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Name.
	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	// Is global admin key.
	IsAdmin bool `protobuf:"varint,3,opt,name=is_admin,json=isAdmin,proto3" json:"is_admin,omitempty"`
	// Tenant ID.
	// In case the API key is intended to manage resources under a single tenant.
	TenantId      string `protobuf:"bytes,4,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ApiKey) ProtoMessage() {}

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

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

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

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

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

type CreateApiKeyRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The API key to create.
	ApiKey        *ApiKey `protobuf:"bytes,1,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CreateApiKeyRequest) ProtoMessage() {}

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

func (x *CreateApiKeyRequest) GetApiKey() *ApiKey {
	if x != nil {
		return x.ApiKey
	}
	return nil
}

type CreateApiKeyResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// API key ID.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// API token for authentication API requests.
	Token         string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*CreateApiKeyResponse) ProtoMessage() {}

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

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

func (x *CreateApiKeyResponse) GetToken() string {
	if x != nil {
		return x.Token
	}
	return ""
}

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

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

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

func (*DeleteApiKeyRequest) ProtoMessage() {}

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

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

type ListApiKeysRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Max number of items to return.
	// 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"`
	// Return only admin keys.
	IsAdmin bool `protobuf:"varint,3,opt,name=is_admin,json=isAdmin,proto3" json:"is_admin,omitempty"`
	// Filter on tenant ID.
	TenantId      string `protobuf:"bytes,4,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListApiKeysRequest) ProtoMessage() {}

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

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

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

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

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

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

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

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

func (*ListApiKeysResponse) ProtoMessage() {}

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

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

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

// Defines a tenant to which the user is associated.
type UserTenantLink struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Created at timestamp.
	CreatedAt *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	// Last update timestamp.
	UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"`
	// Tenant ID.
	TenantId string `protobuf:"bytes,3,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"`
	// User is admin within the context of this tenant.
	// There is no need to set the is_device_admin and is_gateway_admin flags.
	IsAdmin bool `protobuf:"varint,4,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,5,opt,name=is_device_admin,json=isDeviceAdmin,proto3" json:"is_device_admin,omitempty"`
	// User is able to modify gateways.
	IsGatewayAdmin bool `protobuf:"varint,6,opt,name=is_gateway_admin,json=isGatewayAdmin,proto3" json:"is_gateway_admin,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*UserTenantLink) ProtoMessage() {}

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

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

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

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

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

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

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

type LoginRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Email of the user.
	Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"`
	// Password of the user.
	Password      string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*LoginRequest) ProtoMessage() {}

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

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

func (x *LoginRequest) GetPassword() string {
	if x != nil {
		return x.Password
	}
	return ""
}

type LoginResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The JWT tag to be used to access chirpstack-application-server interfaces.
	Jwt           string `protobuf:"bytes,1,opt,name=jwt,proto3" json:"jwt,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*LoginResponse) ProtoMessage() {}

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

func (x *LoginResponse) GetJwt() string {
	if x != nil {
		return x.Jwt
	}
	return ""
}

type ProfileResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// User object.
	User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
	// Tenants to which the user is associated.
	Tenants       []*UserTenantLink `protobuf:"bytes,3,rep,name=tenants,proto3" json:"tenants,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ProfileResponse) ProtoMessage() {}

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

func (x *ProfileResponse) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *ProfileResponse) GetTenants() []*UserTenantLink {
	if x != nil {
		return x.Tenants
	}
	return nil
}

type GlobalSearchRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Search query.
	Search string `protobuf:"bytes,1,opt,name=search,proto3" json:"search,omitempty"`
	// Max number of results to return.
	// If not set, it will be treated as 0, and the response will only return the total_count.
	Limit int64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"`
	// Offset offset of the result-set (for pagination).
	Offset        int64 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GlobalSearchRequest) ProtoMessage() {}

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

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

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

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

type GlobalSearchResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        []*GlobalSearchResult  `protobuf:"bytes,1,rep,name=result,proto3" json:"result,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GlobalSearchResponse) ProtoMessage() {}

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

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

type GlobalSearchResult struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Record kind.
	Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
	// Search score.
	Score float32 `protobuf:"fixed32,2,opt,name=score,proto3" json:"score,omitempty"`
	// Organization id.
	TenantId string `protobuf:"bytes,3,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"`
	// Organization name.
	TenantName string `protobuf:"bytes,4,opt,name=tenant_name,json=tenantName,proto3" json:"tenant_name,omitempty"`
	// Application id.
	ApplicationId string `protobuf:"bytes,5,opt,name=application_id,json=applicationId,proto3" json:"application_id,omitempty"`
	// Application name.
	ApplicationName string `protobuf:"bytes,6,opt,name=application_name,json=applicationName,proto3" json:"application_name,omitempty"`
	// Device DevEUI (hex encoded).
	DeviceDevEui string `protobuf:"bytes,7,opt,name=device_dev_eui,json=deviceDevEui,proto3" json:"device_dev_eui,omitempty"`
	// Device name.
	DeviceName string `protobuf:"bytes,8,opt,name=device_name,json=deviceName,proto3" json:"device_name,omitempty"`
	// Gateway MAC (hex encoded).
	GatewayId string `protobuf:"bytes,9,opt,name=gateway_id,json=gatewayId,proto3" json:"gateway_id,omitempty"`
	// Gateway name.
	GatewayName   string `protobuf:"bytes,10,opt,name=gateway_name,json=gatewayName,proto3" json:"gateway_name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GlobalSearchResult) ProtoMessage() {}

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

func (x *GlobalSearchResult) GetKind() string {
	if x != nil {
		return x.Kind
	}
	return ""
}

func (x *GlobalSearchResult) GetScore() float32 {
	if x != nil {
		return x.Score
	}
	return 0
}

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

func (x *GlobalSearchResult) GetTenantName() string {
	if x != nil {
		return x.TenantName
	}
	return ""
}

func (x *GlobalSearchResult) GetApplicationId() string {
	if x != nil {
		return x.ApplicationId
	}
	return ""
}

func (x *GlobalSearchResult) GetApplicationName() string {
	if x != nil {
		return x.ApplicationName
	}
	return ""
}

func (x *GlobalSearchResult) GetDeviceDevEui() string {
	if x != nil {
		return x.DeviceDevEui
	}
	return ""
}

func (x *GlobalSearchResult) GetDeviceName() string {
	if x != nil {
		return x.DeviceName
	}
	return ""
}

func (x *GlobalSearchResult) GetGatewayId() string {
	if x != nil {
		return x.GatewayId
	}
	return ""
}

func (x *GlobalSearchResult) GetGatewayName() string {
	if x != nil {
		return x.GatewayName
	}
	return ""
}

type SettingsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// OpenId Connect settings.
	OpenidConnect *OpenIdConnect `protobuf:"bytes,1,opt,name=openid_connect,json=openidConnect,proto3" json:"openid_connect,omitempty"`
	// OAuth2 settings.
	Oauth2 *OAuth2 `protobuf:"bytes,2,opt,name=oauth2,proto3" json:"oauth2,omitempty"`
	// Tileserver URL.
	TileserverUrl string `protobuf:"bytes,3,opt,name=tileserver_url,json=tileserverUrl,proto3" json:"tileserver_url,omitempty"`
	// Map attribution.
	MapAttribution string `protobuf:"bytes,4,opt,name=map_attribution,json=mapAttribution,proto3" json:"map_attribution,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*SettingsResponse) ProtoMessage() {}

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

func (x *SettingsResponse) GetOpenidConnect() *OpenIdConnect {
	if x != nil {
		return x.OpenidConnect
	}
	return nil
}

func (x *SettingsResponse) GetOauth2() *OAuth2 {
	if x != nil {
		return x.Oauth2
	}
	return nil
}

func (x *SettingsResponse) GetTileserverUrl() string {
	if x != nil {
		return x.TileserverUrl
	}
	return ""
}

func (x *SettingsResponse) GetMapAttribution() string {
	if x != nil {
		return x.MapAttribution
	}
	return ""
}

type OpenIdConnect struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Enable OpenId Connect authentication.
	Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
	// Login url.
	LoginUrl string `protobuf:"bytes,2,opt,name=login_url,json=loginUrl,proto3" json:"login_url,omitempty"`
	// Login label.
	LoginLabel string `protobuf:"bytes,3,opt,name=login_label,json=loginLabel,proto3" json:"login_label,omitempty"`
	// Logout url.
	LogoutUrl string `protobuf:"bytes,4,opt,name=logout_url,json=logoutUrl,proto3" json:"logout_url,omitempty"`
	// Login redirect.
	LoginRedirect bool `protobuf:"varint,5,opt,name=login_redirect,json=loginRedirect,proto3" json:"login_redirect,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*OpenIdConnect) ProtoMessage() {}

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

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

func (x *OpenIdConnect) GetLoginUrl() string {
	if x != nil {
		return x.LoginUrl
	}
	return ""
}

func (x *OpenIdConnect) GetLoginLabel() string {
	if x != nil {
		return x.LoginLabel
	}
	return ""
}

func (x *OpenIdConnect) GetLogoutUrl() string {
	if x != nil {
		return x.LogoutUrl
	}
	return ""
}

func (x *OpenIdConnect) GetLoginRedirect() bool {
	if x != nil {
		return x.LoginRedirect
	}
	return false
}

type OAuth2 struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// OAuth2 is enabled.
	Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"`
	// Login url.
	LoginUrl string `protobuf:"bytes,2,opt,name=login_url,json=loginUrl,proto3" json:"login_url,omitempty"`
	// Login label.
	LoginLabel string `protobuf:"bytes,3,opt,name=login_label,json=loginLabel,proto3" json:"login_label,omitempty"`
	// Logout url.
	LogoutUrl string `protobuf:"bytes,4,opt,name=logout_url,json=logoutUrl,proto3" json:"logout_url,omitempty"`
	// Login redirect.
	LoginRedirect bool `protobuf:"varint,5,opt,name=login_redirect,json=loginRedirect,proto3" json:"login_redirect,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*OAuth2) ProtoMessage() {}

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

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

func (x *OAuth2) GetLoginUrl() string {
	if x != nil {
		return x.LoginUrl
	}
	return ""
}

func (x *OAuth2) GetLoginLabel() string {
	if x != nil {
		return x.LoginLabel
	}
	return ""
}

func (x *OAuth2) GetLogoutUrl() string {
	if x != nil {
		return x.LogoutUrl
	}
	return ""
}

func (x *OAuth2) GetLoginRedirect() bool {
	if x != nil {
		return x.LoginRedirect
	}
	return false
}

type OpenIdConnectLoginRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// OpenId Connect callback code.
	Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
	// OpenId Connect callback state.
	State         string `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*OpenIdConnectLoginRequest) ProtoMessage() {}

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

func (x *OpenIdConnectLoginRequest) GetCode() string {
	if x != nil {
		return x.Code
	}
	return ""
}

func (x *OpenIdConnectLoginRequest) GetState() string {
	if x != nil {
		return x.State
	}
	return ""
}

type OpenIdConnectLoginResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Token to use for authentication.
	Token         string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*OpenIdConnectLoginResponse) ProtoMessage() {}

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

func (x *OpenIdConnectLoginResponse) GetToken() string {
	if x != nil {
		return x.Token
	}
	return ""
}

type OAuth2LoginRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// OAuth2 callback code.
	Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
	// OAuth2 callback state.
	State         string `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*OAuth2LoginRequest) ProtoMessage() {}

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

func (x *OAuth2LoginRequest) GetCode() string {
	if x != nil {
		return x.Code
	}
	return ""
}

func (x *OAuth2LoginRequest) GetState() string {
	if x != nil {
		return x.State
	}
	return ""
}

type OAuth2LoginResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Token to use for authentication.
	Token         string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*OAuth2LoginResponse) ProtoMessage() {}

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

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

func (x *OAuth2LoginResponse) GetToken() string {
	if x != nil {
		return x.Token
	}
	return ""
}

type GetDevicesSummaryRequest 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"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetDevicesSummaryRequest) ProtoMessage() {}

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

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

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

type GetDevicesSummaryResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Active count.
	ActiveCount uint32 `protobuf:"varint,1,opt,name=active_count,json=activeCount,proto3" json:"active_count,omitempty"`
	// Inactive count.
	InactiveCount uint32 `protobuf:"varint,2,opt,name=inactive_count,json=inactiveCount,proto3" json:"inactive_count,omitempty"`
	// per data-rate count.
	// Devices that have never been seen are excluded.
	DrCount map[uint32]uint32 `protobuf:"bytes,3,rep,name=dr_count,json=drCount,proto3" json:"dr_count,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
	// Never seen count.
	NeverSeenCount uint32 `protobuf:"varint,4,opt,name=never_seen_count,json=neverSeenCount,proto3" json:"never_seen_count,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*GetDevicesSummaryResponse) ProtoMessage() {}

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

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

func (x *GetDevicesSummaryResponse) GetActiveCount() uint32 {
	if x != nil {
		return x.ActiveCount
	}
	return 0
}

func (x *GetDevicesSummaryResponse) GetInactiveCount() uint32 {
	if x != nil {
		return x.InactiveCount
	}
	return 0
}

func (x *GetDevicesSummaryResponse) GetDrCount() map[uint32]uint32 {
	if x != nil {
		return x.DrCount
	}
	return nil
}

func (x *GetDevicesSummaryResponse) GetNeverSeenCount() uint32 {
	if x != nil {
		return x.NeverSeenCount
	}
	return 0
}

type GetGatewaysSummaryRequest 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"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetGatewaysSummaryRequest) ProtoMessage() {}

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

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

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

type GetGatewaysSummaryResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Online count.
	OnlineCount uint32 `protobuf:"varint,1,opt,name=online_count,json=onlineCount,proto3" json:"online_count,omitempty"`
	// Offline count.
	OfflineCount uint32 `protobuf:"varint,2,opt,name=offline_count,json=offlineCount,proto3" json:"offline_count,omitempty"`
	// Never seen count.
	NeverSeenCount uint32 `protobuf:"varint,3,opt,name=never_seen_count,json=neverSeenCount,proto3" json:"never_seen_count,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

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

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

func (*GetGatewaysSummaryResponse) ProtoMessage() {}

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

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

func (x *GetGatewaysSummaryResponse) GetOnlineCount() uint32 {
	if x != nil {
		return x.OnlineCount
	}
	return 0
}

func (x *GetGatewaysSummaryResponse) GetOfflineCount() uint32 {
	if x != nil {
		return x.OfflineCount
	}
	return 0
}

func (x *GetGatewaysSummaryResponse) GetNeverSeenCount() uint32 {
	if x != nil {
		return x.NeverSeenCount
	}
	return 0
}

type LogItem struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// ID.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Timestamp.
	Time *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=time,proto3" json:"time,omitempty"`
	// Message.
	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	// Body.
	Body string `protobuf:"bytes,4,opt,name=body,proto3" json:"body,omitempty"`
	// Properties.
	Properties    map[string]string `protobuf:"bytes,5,rep,name=properties,proto3" json:"properties,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*LogItem) ProtoMessage() {}

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

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

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

func (x *LogItem) GetTime() *timestamppb.Timestamp {
	if x != nil {
		return x.Time
	}
	return nil
}

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

func (x *LogItem) GetBody() string {
	if x != nil {
		return x.Body
	}
	return ""
}

func (x *LogItem) GetProperties() map[string]string {
	if x != nil {
		return x.Properties
	}
	return nil
}

type StreamGatewayFramesRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Gateway ID (EUI64).
	GatewayId     string `protobuf:"bytes,1,opt,name=gateway_id,json=gatewayId,proto3" json:"gateway_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*StreamGatewayFramesRequest) ProtoMessage() {}

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

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

func (x *StreamGatewayFramesRequest) GetGatewayId() string {
	if x != nil {
		return x.GatewayId
	}
	return ""
}

type StreamDeviceFramesRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Device EUI.
	DevEui        string `protobuf:"bytes,1,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*StreamDeviceFramesRequest) ProtoMessage() {}

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

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

func (x *StreamDeviceFramesRequest) GetDevEui() string {
	if x != nil {
		return x.DevEui
	}
	return ""
}

type StreamDeviceEventsRequest struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Device EUI.
	DevEui        string `protobuf:"bytes,1,opt,name=dev_eui,json=devEui,proto3" json:"dev_eui,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*StreamDeviceEventsRequest) ProtoMessage() {}

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

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

func (x *StreamDeviceEventsRequest) GetDevEui() string {
	if x != nil {
		return x.DevEui
	}
	return ""
}

type ListRegionsResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Configured regions.
	Regions       []*RegionListItem `protobuf:"bytes,1,rep,name=regions,proto3" json:"regions,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*ListRegionsResponse) ProtoMessage() {}

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

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

func (x *ListRegionsResponse) GetRegions() []*RegionListItem {
	if x != nil {
		return x.Regions
	}
	return nil
}

type RegionListItem struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// ID.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Region.
	Region common.Region `protobuf:"varint,2,opt,name=region,proto3,enum=common.Region" json:"region,omitempty"`
	// Description.
	Description   string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RegionListItem) ProtoMessage() {}

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

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

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

func (x *RegionListItem) GetRegion() common.Region {
	if x != nil {
		return x.Region
	}
	return common.Region(0)
}

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

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

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

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

func (*GetRegionRequest) ProtoMessage() {}

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

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

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

type GetRegionResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// ID.
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// Region.
	Region common.Region `protobuf:"varint,2,opt,name=region,proto3,enum=common.Region" json:"region,omitempty"`
	// User information.
	UserInfo string `protobuf:"bytes,3,opt,name=user_info,json=userInfo,proto3" json:"user_info,omitempty"`
	// Uplink channels.
	UplinkChannels []*RegionChannel `protobuf:"bytes,4,rep,name=uplink_channels,json=uplinkChannels,proto3" json:"uplink_channels,omitempty"`
	// RX1 delay.
	Rx1Delay uint32 `protobuf:"varint,5,opt,name=rx1_delay,json=rx1Delay,proto3" json:"rx1_delay,omitempty"`
	// RX1 data-rate offset.
	Rx1DrOffset uint32 `protobuf:"varint,6,opt,name=rx1_dr_offset,json=rx1DrOffset,proto3" json:"rx1_dr_offset,omitempty"`
	// RX2 DR.
	Rx2Dr uint32 `protobuf:"varint,7,opt,name=rx2_dr,json=rx2Dr,proto3" json:"rx2_dr,omitempty"`
	// RX2 frequency.
	Rx2Frequency uint32 `protobuf:"varint,8,opt,name=rx2_frequency,json=rx2Frequency,proto3" json:"rx2_frequency,omitempty"`
	// Class-B ping-slot DR.
	ClassBPingSlotDr uint32 `protobuf:"varint,9,opt,name=class_b_ping_slot_dr,json=classBPingSlotDr,proto3" json:"class_b_ping_slot_dr,omitempty"`
	// Class-B ping-slot frequency.
	ClassBPingSlotFrequency uint32 `protobuf:"varint,10,opt,name=class_b_ping_slot_frequency,json=classBPingSlotFrequency,proto3" json:"class_b_ping_slot_frequency,omitempty"`
	// Region description.
	Description   string `protobuf:"bytes,11,opt,name=description,proto3" json:"description,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetRegionResponse) ProtoMessage() {}

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

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

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

func (x *GetRegionResponse) GetRegion() common.Region {
	if x != nil {
		return x.Region
	}
	return common.Region(0)
}

func (x *GetRegionResponse) GetUserInfo() string {
	if x != nil {
		return x.UserInfo
	}
	return ""
}

func (x *GetRegionResponse) GetUplinkChannels() []*RegionChannel {
	if x != nil {
		return x.UplinkChannels
	}
	return nil
}

func (x *GetRegionResponse) GetRx1Delay() uint32 {
	if x != nil {
		return x.Rx1Delay
	}
	return 0
}

func (x *GetRegionResponse) GetRx1DrOffset() uint32 {
	if x != nil {
		return x.Rx1DrOffset
	}
	return 0
}

func (x *GetRegionResponse) GetRx2Dr() uint32 {
	if x != nil {
		return x.Rx2Dr
	}
	return 0
}

func (x *GetRegionResponse) GetRx2Frequency() uint32 {
	if x != nil {
		return x.Rx2Frequency
	}
	return 0
}

func (x *GetRegionResponse) GetClassBPingSlotDr() uint32 {
	if x != nil {
		return x.ClassBPingSlotDr
	}
	return 0
}

func (x *GetRegionResponse) GetClassBPingSlotFrequency() uint32 {
	if x != nil {
		return x.ClassBPingSlotFrequency
	}
	return 0
}

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

type RegionChannel struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Frequency (Hz).
	Frequency uint32 `protobuf:"varint,1,opt,name=frequency,proto3" json:"frequency,omitempty"`
	// Min DR.
	DrMin uint32 `protobuf:"varint,2,opt,name=dr_min,json=drMin,proto3" json:"dr_min,omitempty"`
	// Max DR.
	DrMax         uint32 `protobuf:"varint,3,opt,name=dr_max,json=drMax,proto3" json:"dr_max,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*RegionChannel) ProtoMessage() {}

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

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

func (x *RegionChannel) GetFrequency() uint32 {
	if x != nil {
		return x.Frequency
	}
	return 0
}

func (x *RegionChannel) GetDrMin() uint32 {
	if x != nil {
		return x.DrMin
	}
	return 0
}

func (x *RegionChannel) GetDrMax() uint32 {
	if x != nil {
		return x.DrMax
	}
	return 0
}

type GetVersionResponse struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// version
	Version       string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetVersionResponse) ProtoMessage() {}

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

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

func (x *GetVersionResponse) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

var File_api_internal_proto protoreflect.FileDescriptor

const file_api_internal_proto_rawDesc = "" +
	"\n" +
	"\x12api/internal.proto\x12\x03api\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x13common/common.proto\x1a\x0eapi/user.proto\"d\n" +
	"\x06ApiKey\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x19\n" +
	"\bis_admin\x18\x03 \x01(\bR\aisAdmin\x12\x1b\n" +
	"\ttenant_id\x18\x04 \x01(\tR\btenantId\";\n" +
	"\x13CreateApiKeyRequest\x12$\n" +
	"\aapi_key\x18\x01 \x01(\v2\v.api.ApiKeyR\x06apiKey\"<\n" +
	"\x14CreateApiKeyResponse\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n" +
	"\x05token\x18\x02 \x01(\tR\x05token\"%\n" +
	"\x13DeleteApiKeyRequest\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\"z\n" +
	"\x12ListApiKeysRequest\x12\x14\n" +
	"\x05limit\x18\x01 \x01(\rR\x05limit\x12\x16\n" +
	"\x06offset\x18\x02 \x01(\rR\x06offset\x12\x19\n" +
	"\bis_admin\x18\x03 \x01(\bR\aisAdmin\x12\x1b\n" +
	"\ttenant_id\x18\x04 \x01(\tR\btenantId\"[\n" +
	"\x13ListApiKeysResponse\x12\x1f\n" +
	"\vtotal_count\x18\x01 \x01(\rR\n" +
	"totalCount\x12#\n" +
	"\x06result\x18\x02 \x03(\v2\v.api.ApiKeyR\x06result\"\x90\x02\n" +
	"\x0eUserTenantLink\x129\n" +
	"\n" +
	"created_at\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\tcreatedAt\x129\n" +
	"\n" +
	"updated_at\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x1b\n" +
	"\ttenant_id\x18\x03 \x01(\tR\btenantId\x12\x19\n" +
	"\bis_admin\x18\x04 \x01(\bR\aisAdmin\x12&\n" +
	"\x0fis_device_admin\x18\x05 \x01(\bR\risDeviceAdmin\x12(\n" +
	"\x10is_gateway_admin\x18\x06 \x01(\bR\x0eisGatewayAdmin\"@\n" +
	"\fLoginRequest\x12\x14\n" +
	"\x05email\x18\x01 \x01(\tR\x05email\x12\x1a\n" +
	"\bpassword\x18\x02 \x01(\tR\bpassword\"!\n" +
	"\rLoginResponse\x12\x10\n" +
	"\x03jwt\x18\x01 \x01(\tR\x03jwt\"_\n" +
	"\x0fProfileResponse\x12\x1d\n" +
	"\x04user\x18\x01 \x01(\v2\t.api.UserR\x04user\x12-\n" +
	"\atenants\x18\x03 \x03(\v2\x13.api.UserTenantLinkR\atenants\"[\n" +
	"\x13GlobalSearchRequest\x12\x16\n" +
	"\x06search\x18\x01 \x01(\tR\x06search\x12\x14\n" +
	"\x05limit\x18\x02 \x01(\x03R\x05limit\x12\x16\n" +
	"\x06offset\x18\x03 \x01(\x03R\x06offset\"G\n" +
	"\x14GlobalSearchResponse\x12/\n" +
	"\x06result\x18\x01 \x03(\v2\x17.api.GlobalSearchResultR\x06result\"\xd7\x02\n" +
	"\x12GlobalSearchResult\x12\x12\n" +
	"\x04kind\x18\x01 \x01(\tR\x04kind\x12\x14\n" +
	"\x05score\x18\x02 \x01(\x02R\x05score\x12\x1b\n" +
	"\ttenant_id\x18\x03 \x01(\tR\btenantId\x12\x1f\n" +
	"\vtenant_name\x18\x04 \x01(\tR\n" +
	"tenantName\x12%\n" +
	"\x0eapplication_id\x18\x05 \x01(\tR\rapplicationId\x12)\n" +
	"\x10application_name\x18\x06 \x01(\tR\x0fapplicationName\x12$\n" +
	"\x0edevice_dev_eui\x18\a \x01(\tR\fdeviceDevEui\x12\x1f\n" +
	"\vdevice_name\x18\b \x01(\tR\n" +
	"deviceName\x12\x1d\n" +
	"\n" +
	"gateway_id\x18\t \x01(\tR\tgatewayId\x12!\n" +
	"\fgateway_name\x18\n" +
	" \x01(\tR\vgatewayName\"\xc2\x01\n" +
	"\x10SettingsResponse\x129\n" +
	"\x0eopenid_connect\x18\x01 \x01(\v2\x12.api.OpenIdConnectR\ropenidConnect\x12#\n" +
	"\x06oauth2\x18\x02 \x01(\v2\v.api.OAuth2R\x06oauth2\x12%\n" +
	"\x0etileserver_url\x18\x03 \x01(\tR\rtileserverUrl\x12'\n" +
	"\x0fmap_attribution\x18\x04 \x01(\tR\x0emapAttribution\"\xad\x01\n" +
	"\rOpenIdConnect\x12\x18\n" +
	"\aenabled\x18\x01 \x01(\bR\aenabled\x12\x1b\n" +
	"\tlogin_url\x18\x02 \x01(\tR\bloginUrl\x12\x1f\n" +
	"\vlogin_label\x18\x03 \x01(\tR\n" +
	"loginLabel\x12\x1d\n" +
	"\n" +
	"logout_url\x18\x04 \x01(\tR\tlogoutUrl\x12%\n" +
	"\x0elogin_redirect\x18\x05 \x01(\bR\rloginRedirect\"\xa6\x01\n" +
	"\x06OAuth2\x12\x18\n" +
	"\aenabled\x18\x01 \x01(\bR\aenabled\x12\x1b\n" +
	"\tlogin_url\x18\x02 \x01(\tR\bloginUrl\x12\x1f\n" +
	"\vlogin_label\x18\x03 \x01(\tR\n" +
	"loginLabel\x12\x1d\n" +
	"\n" +
	"logout_url\x18\x04 \x01(\tR\tlogoutUrl\x12%\n" +
	"\x0elogin_redirect\x18\x05 \x01(\bR\rloginRedirect\"E\n" +
	"\x19OpenIdConnectLoginRequest\x12\x12\n" +
	"\x04code\x18\x01 \x01(\tR\x04code\x12\x14\n" +
	"\x05state\x18\x02 \x01(\tR\x05state\"2\n" +
	"\x1aOpenIdConnectLoginResponse\x12\x14\n" +
	"\x05token\x18\x01 \x01(\tR\x05token\">\n" +
	"\x12OAuth2LoginRequest\x12\x12\n" +
	"\x04code\x18\x01 \x01(\tR\x04code\x12\x14\n" +
	"\x05state\x18\x02 \x01(\tR\x05state\"+\n" +
	"\x13OAuth2LoginResponse\x12\x14\n" +
	"\x05token\x18\x01 \x01(\tR\x05token\"7\n" +
	"\x18GetDevicesSummaryRequest\x12\x1b\n" +
	"\ttenant_id\x18\x01 \x01(\tR\btenantId\"\x93\x02\n" +
	"\x19GetDevicesSummaryResponse\x12!\n" +
	"\factive_count\x18\x01 \x01(\rR\vactiveCount\x12%\n" +
	"\x0einactive_count\x18\x02 \x01(\rR\rinactiveCount\x12F\n" +
	"\bdr_count\x18\x03 \x03(\v2+.api.GetDevicesSummaryResponse.DrCountEntryR\adrCount\x12(\n" +
	"\x10never_seen_count\x18\x04 \x01(\rR\x0eneverSeenCount\x1a:\n" +
	"\fDrCountEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\rR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\rR\x05value:\x028\x01\"8\n" +
	"\x19GetGatewaysSummaryRequest\x12\x1b\n" +
	"\ttenant_id\x18\x01 \x01(\tR\btenantId\"\x8e\x01\n" +
	"\x1aGetGatewaysSummaryResponse\x12!\n" +
	"\fonline_count\x18\x01 \x01(\rR\vonlineCount\x12#\n" +
	"\roffline_count\x18\x02 \x01(\rR\fofflineCount\x12(\n" +
	"\x10never_seen_count\x18\x03 \x01(\rR\x0eneverSeenCount\"\xfc\x01\n" +
	"\aLogItem\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12.\n" +
	"\x04time\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x04time\x12 \n" +
	"\vdescription\x18\x03 \x01(\tR\vdescription\x12\x12\n" +
	"\x04body\x18\x04 \x01(\tR\x04body\x12<\n" +
	"\n" +
	"properties\x18\x05 \x03(\v2\x1c.api.LogItem.PropertiesEntryR\n" +
	"properties\x1a=\n" +
	"\x0fPropertiesEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\";\n" +
	"\x1aStreamGatewayFramesRequest\x12\x1d\n" +
	"\n" +
	"gateway_id\x18\x01 \x01(\tR\tgatewayId\"4\n" +
	"\x19StreamDeviceFramesRequest\x12\x17\n" +
	"\adev_eui\x18\x01 \x01(\tR\x06devEui\"4\n" +
	"\x19StreamDeviceEventsRequest\x12\x17\n" +
	"\adev_eui\x18\x01 \x01(\tR\x06devEui\"D\n" +
	"\x13ListRegionsResponse\x12-\n" +
	"\aregions\x18\x01 \x03(\v2\x13.api.RegionListItemR\aregions\"j\n" +
	"\x0eRegionListItem\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12&\n" +
	"\x06region\x18\x02 \x01(\x0e2\x0e.common.RegionR\x06region\x12 \n" +
	"\vdescription\x18\x03 \x01(\tR\vdescription\"\"\n" +
	"\x10GetRegionRequest\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\"\xb2\x03\n" +
	"\x11GetRegionResponse\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12&\n" +
	"\x06region\x18\x02 \x01(\x0e2\x0e.common.RegionR\x06region\x12\x1b\n" +
	"\tuser_info\x18\x03 \x01(\tR\buserInfo\x12;\n" +
	"\x0fuplink_channels\x18\x04 \x03(\v2\x12.api.RegionChannelR\x0euplinkChannels\x12\x1b\n" +
	"\trx1_delay\x18\x05 \x01(\rR\brx1Delay\x12\"\n" +
	"\rrx1_dr_offset\x18\x06 \x01(\rR\vrx1DrOffset\x12\x15\n" +
	"\x06rx2_dr\x18\a \x01(\rR\x05rx2Dr\x12#\n" +
	"\rrx2_frequency\x18\b \x01(\rR\frx2Frequency\x12.\n" +
	"\x14class_b_ping_slot_dr\x18\t \x01(\rR\x10classBPingSlotDr\x12<\n" +
	"\x1bclass_b_ping_slot_frequency\x18\n" +
	" \x01(\rR\x17classBPingSlotFrequency\x12 \n" +
	"\vdescription\x18\v \x01(\tR\vdescription\"[\n" +
	"\rRegionChannel\x12\x1c\n" +
	"\tfrequency\x18\x01 \x01(\rR\tfrequency\x12\x15\n" +
	"\x06dr_min\x18\x02 \x01(\rR\x05drMin\x12\x15\n" +
	"\x06dr_max\x18\x03 \x01(\rR\x05drMax\".\n" +
	"\x12GetVersionResponse\x12\x18\n" +
	"\aversion\x18\x01 \x01(\tR\aversion2\xb9\t\n" +
	"\x0fInternalService\x120\n" +
	"\x05Login\x12\x11.api.LoginRequest\x1a\x12.api.LoginResponse\"\x00\x129\n" +
	"\aProfile\x12\x16.google.protobuf.Empty\x1a\x14.api.ProfileResponse\"\x00\x12E\n" +
	"\fGlobalSearch\x12\x18.api.GlobalSearchRequest\x1a\x19.api.GlobalSearchResponse\"\x00\x12E\n" +
	"\fCreateApiKey\x12\x18.api.CreateApiKeyRequest\x1a\x19.api.CreateApiKeyResponse\"\x00\x12B\n" +
	"\fDeleteApiKey\x12\x18.api.DeleteApiKeyRequest\x1a\x16.google.protobuf.Empty\"\x00\x12B\n" +
	"\vListApiKeys\x12\x17.api.ListApiKeysRequest\x1a\x18.api.ListApiKeysResponse\"\x00\x12;\n" +
	"\bSettings\x12\x16.google.protobuf.Empty\x1a\x15.api.SettingsResponse\"\x00\x12W\n" +
	"\x12OpenIdConnectLogin\x12\x1e.api.OpenIdConnectLoginRequest\x1a\x1f.api.OpenIdConnectLoginResponse\"\x00\x12B\n" +
	"\vOAuth2Login\x12\x17.api.OAuth2LoginRequest\x1a\x18.api.OAuth2LoginResponse\"\x00\x12T\n" +
	"\x11GetDevicesSummary\x12\x1d.api.GetDevicesSummaryRequest\x1a\x1e.api.GetDevicesSummaryResponse\"\x00\x12W\n" +
	"\x12GetGatewaysSummary\x12\x1e.api.GetGatewaysSummaryRequest\x1a\x1f.api.GetGatewaysSummaryResponse\"\x00\x12H\n" +
	"\x13StreamGatewayFrames\x12\x1f.api.StreamGatewayFramesRequest\x1a\f.api.LogItem\"\x000\x01\x12F\n" +
	"\x12StreamDeviceFrames\x12\x1e.api.StreamDeviceFramesRequest\x1a\f.api.LogItem\"\x000\x01\x12F\n" +
	"\x12StreamDeviceEvents\x12\x1e.api.StreamDeviceEventsRequest\x1a\f.api.LogItem\"\x000\x01\x12A\n" +
	"\vListRegions\x12\x16.google.protobuf.Empty\x1a\x18.api.ListRegionsResponse\"\x00\x12<\n" +
	"\tGetRegion\x12\x15.api.GetRegionRequest\x1a\x16.api.GetRegionResponse\"\x00\x12?\n" +
	"\n" +
	"GetVersion\x12\x16.google.protobuf.Empty\x1a\x17.api.GetVersionResponse\"\x00B\x93\x01\n" +
	"\x11io.chirpstack.apiB\rInternalProtoP\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_internal_proto_rawDescOnce sync.Once
	file_api_internal_proto_rawDescData []byte
)

func file_api_internal_proto_rawDescGZIP() []byte {
	file_api_internal_proto_rawDescOnce.Do(func() {
		file_api_internal_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_internal_proto_rawDesc), len(file_api_internal_proto_rawDesc)))
	})
	return file_api_internal_proto_rawDescData
}

var file_api_internal_proto_msgTypes = make([]protoimpl.MessageInfo, 36)
var file_api_internal_proto_goTypes = []any{
	(*ApiKey)(nil),                     // 0: api.ApiKey
	(*CreateApiKeyRequest)(nil),        // 1: api.CreateApiKeyRequest
	(*CreateApiKeyResponse)(nil),       // 2: api.CreateApiKeyResponse
	(*DeleteApiKeyRequest)(nil),        // 3: api.DeleteApiKeyRequest
	(*ListApiKeysRequest)(nil),         // 4: api.ListApiKeysRequest
	(*ListApiKeysResponse)(nil),        // 5: api.ListApiKeysResponse
	(*UserTenantLink)(nil),             // 6: api.UserTenantLink
	(*LoginRequest)(nil),               // 7: api.LoginRequest
	(*LoginResponse)(nil),              // 8: api.LoginResponse
	(*ProfileResponse)(nil),            // 9: api.ProfileResponse
	(*GlobalSearchRequest)(nil),        // 10: api.GlobalSearchRequest
	(*GlobalSearchResponse)(nil),       // 11: api.GlobalSearchResponse
	(*GlobalSearchResult)(nil),         // 12: api.GlobalSearchResult
	(*SettingsResponse)(nil),           // 13: api.SettingsResponse
	(*OpenIdConnect)(nil),              // 14: api.OpenIdConnect
	(*OAuth2)(nil),                     // 15: api.OAuth2
	(*OpenIdConnectLoginRequest)(nil),  // 16: api.OpenIdConnectLoginRequest
	(*OpenIdConnectLoginResponse)(nil), // 17: api.OpenIdConnectLoginResponse
	(*OAuth2LoginRequest)(nil),         // 18: api.OAuth2LoginRequest
	(*OAuth2LoginResponse)(nil),        // 19: api.OAuth2LoginResponse
	(*GetDevicesSummaryRequest)(nil),   // 20: api.GetDevicesSummaryRequest
	(*GetDevicesSummaryResponse)(nil),  // 21: api.GetDevicesSummaryResponse
	(*GetGatewaysSummaryRequest)(nil),  // 22: api.GetGatewaysSummaryRequest
	(*GetGatewaysSummaryResponse)(nil), // 23: api.GetGatewaysSummaryResponse
	(*LogItem)(nil),                    // 24: api.LogItem
	(*StreamGatewayFramesRequest)(nil), // 25: api.StreamGatewayFramesRequest
	(*StreamDeviceFramesRequest)(nil),  // 26: api.StreamDeviceFramesRequest
	(*StreamDeviceEventsRequest)(nil),  // 27: api.StreamDeviceEventsRequest
	(*ListRegionsResponse)(nil),        // 28: api.ListRegionsResponse
	(*RegionListItem)(nil),             // 29: api.RegionListItem
	(*GetRegionRequest)(nil),           // 30: api.GetRegionRequest
	(*GetRegionResponse)(nil),          // 31: api.GetRegionResponse
	(*RegionChannel)(nil),              // 32: api.RegionChannel
	(*GetVersionResponse)(nil),         // 33: api.GetVersionResponse
	nil,                                // 34: api.GetDevicesSummaryResponse.DrCountEntry
	nil,                                // 35: api.LogItem.PropertiesEntry
	(*timestamppb.Timestamp)(nil),      // 36: google.protobuf.Timestamp
	(*User)(nil),                       // 37: api.User
	(common.Region)(0),                 // 38: common.Region
	(*emptypb.Empty)(nil),              // 39: google.protobuf.Empty
}
var file_api_internal_proto_depIdxs = []int32{
	0,  // 0: api.CreateApiKeyRequest.api_key:type_name -> api.ApiKey
	0,  // 1: api.ListApiKeysResponse.result:type_name -> api.ApiKey
	36, // 2: api.UserTenantLink.created_at:type_name -> google.protobuf.Timestamp
	36, // 3: api.UserTenantLink.updated_at:type_name -> google.protobuf.Timestamp
	37, // 4: api.ProfileResponse.user:type_name -> api.User
	6,  // 5: api.ProfileResponse.tenants:type_name -> api.UserTenantLink
	12, // 6: api.GlobalSearchResponse.result:type_name -> api.GlobalSearchResult
	14, // 7: api.SettingsResponse.openid_connect:type_name -> api.OpenIdConnect
	15, // 8: api.SettingsResponse.oauth2:type_name -> api.OAuth2
	34, // 9: api.GetDevicesSummaryResponse.dr_count:type_name -> api.GetDevicesSummaryResponse.DrCountEntry
	36, // 10: api.LogItem.time:type_name -> google.protobuf.Timestamp
	35, // 11: api.LogItem.properties:type_name -> api.LogItem.PropertiesEntry
	29, // 12: api.ListRegionsResponse.regions:type_name -> api.RegionListItem
	38, // 13: api.RegionListItem.region:type_name -> common.Region
	38, // 14: api.GetRegionResponse.region:type_name -> common.Region
	32, // 15: api.GetRegionResponse.uplink_channels:type_name -> api.RegionChannel
	7,  // 16: api.InternalService.Login:input_type -> api.LoginRequest
	39, // 17: api.InternalService.Profile:input_type -> google.protobuf.Empty
	10, // 18: api.InternalService.GlobalSearch:input_type -> api.GlobalSearchRequest
	1,  // 19: api.InternalService.CreateApiKey:input_type -> api.CreateApiKeyRequest
	3,  // 20: api.InternalService.DeleteApiKey:input_type -> api.DeleteApiKeyRequest
	4,  // 21: api.InternalService.ListApiKeys:input_type -> api.ListApiKeysRequest
	39, // 22: api.InternalService.Settings:input_type -> google.protobuf.Empty
	16, // 23: api.InternalService.OpenIdConnectLogin:input_type -> api.OpenIdConnectLoginRequest
	18, // 24: api.InternalService.OAuth2Login:input_type -> api.OAuth2LoginRequest
	20, // 25: api.InternalService.GetDevicesSummary:input_type -> api.GetDevicesSummaryRequest
	22, // 26: api.InternalService.GetGatewaysSummary:input_type -> api.GetGatewaysSummaryRequest
	25, // 27: api.InternalService.StreamGatewayFrames:input_type -> api.StreamGatewayFramesRequest
	26, // 28: api.InternalService.StreamDeviceFrames:input_type -> api.StreamDeviceFramesRequest
	27, // 29: api.InternalService.StreamDeviceEvents:input_type -> api.StreamDeviceEventsRequest
	39, // 30: api.InternalService.ListRegions:input_type -> google.protobuf.Empty
	30, // 31: api.InternalService.GetRegion:input_type -> api.GetRegionRequest
	39, // 32: api.InternalService.GetVersion:input_type -> google.protobuf.Empty
	8,  // 33: api.InternalService.Login:output_type -> api.LoginResponse
	9,  // 34: api.InternalService.Profile:output_type -> api.ProfileResponse
	11, // 35: api.InternalService.GlobalSearch:output_type -> api.GlobalSearchResponse
	2,  // 36: api.InternalService.CreateApiKey:output_type -> api.CreateApiKeyResponse
	39, // 37: api.InternalService.DeleteApiKey:output_type -> google.protobuf.Empty
	5,  // 38: api.InternalService.ListApiKeys:output_type -> api.ListApiKeysResponse
	13, // 39: api.InternalService.Settings:output_type -> api.SettingsResponse
	17, // 40: api.InternalService.OpenIdConnectLogin:output_type -> api.OpenIdConnectLoginResponse
	19, // 41: api.InternalService.OAuth2Login:output_type -> api.OAuth2LoginResponse
	21, // 42: api.InternalService.GetDevicesSummary:output_type -> api.GetDevicesSummaryResponse
	23, // 43: api.InternalService.GetGatewaysSummary:output_type -> api.GetGatewaysSummaryResponse
	24, // 44: api.InternalService.StreamGatewayFrames:output_type -> api.LogItem
	24, // 45: api.InternalService.StreamDeviceFrames:output_type -> api.LogItem
	24, // 46: api.InternalService.StreamDeviceEvents:output_type -> api.LogItem
	28, // 47: api.InternalService.ListRegions:output_type -> api.ListRegionsResponse
	31, // 48: api.InternalService.GetRegion:output_type -> api.GetRegionResponse
	33, // 49: api.InternalService.GetVersion:output_type -> api.GetVersionResponse
	33, // [33:50] is the sub-list for method output_type
	16, // [16:33] is the sub-list for method input_type
	16, // [16:16] is the sub-list for extension type_name
	16, // [16:16] is the sub-list for extension extendee
	0,  // [0:16] is the sub-list for field type_name
}

func init() { file_api_internal_proto_init() }
func file_api_internal_proto_init() {
	if File_api_internal_proto != nil {
		return
	}
	file_api_user_proto_init()
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_internal_proto_rawDesc), len(file_api_internal_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   36,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_api_internal_proto_goTypes,
		DependencyIndexes: file_api_internal_proto_depIdxs,
		MessageInfos:      file_api_internal_proto_msgTypes,
	}.Build()
	File_api_internal_proto = out.File
	file_api_internal_proto_goTypes = nil
	file_api_internal_proto_depIdxs = nil
}
