syntax = "proto3";
option go_package = "./pb";

package pb;

import "models/rpc_messages.proto";
import "models/model_authority_key.proto";

// 版本认证
service AuthorityKeyService {
	// 设置Key
	rpc updateAuthorityKey (UpdateAuthorityKeyRequest) returns (RPCSuccess);

	// 读取Key
	rpc readAuthorityKey (ReadAuthorityKeyRequest) returns (ReadAuthorityKeyResponse);

	// 重置Key
	rpc resetAuthorityKey (ResetAuthorityKeyRequest) returns (RPCSuccess);

	// 校验Key
	rpc validateAuthorityKey(ValidateAuthorityKeyRequest) returns (ValidateAuthorityKeyResponse);

	// 检查版本信息
	rpc checkAuthority(CheckAuthorityRequest) returns (CheckAuthorityResponse);

	// 查询授权容量
	rpc findAuthorityQuota(FindAuthorityQuotaRequest) returns (FindAuthorityQuotaResponse);
}

// 设置Key
message UpdateAuthorityKeyRequest {
	string value = 1;
	string dayFrom = 2;
	string dayTo = 3;
	string hostname = 4;
	repeated string macAddresses = 5;
	string company = 6;
	string requestCode = 7;
}

// 读取Key
message ReadAuthorityKeyRequest {

}

message ReadAuthorityKeyResponse {
	AuthorityKey authorityKey = 1;
}

// 重置Key
message ResetAuthorityKeyRequest {

}

// 校验Key
message ValidateAuthorityKeyRequest {
	string key = 1;
	string requestCode = 2;
}

message ValidateAuthorityKeyResponse {
	bool isOk = 1;
	string error = 2;
}

// 检查版本信息
message CheckAuthorityRequest {

}

message CheckAuthorityResponse {
	bool isPlus = 1;
	string edition = 2;
}

// 查询授权容量
message FindAuthorityQuotaRequest {

}

message FindAuthorityQuotaResponse {
	int32 maxNodes = 1; // 节点数限制
	int32 countNodes = 2; // 已占用节点数
}