This is an old revision of the document!


PlayGround

//*************************************************************************************************
// Mervis Data API
// Definition of the communication contract
//
// (c) Energocentrum Plus - all rights reserved
//
// Code style guide: https://developers.google.com/protocol-buffers/docs/style
//*************************************************************************************************
 
syntax = "proto3";
 
package esg.mervis_data_api.shared;
 
option csharp_namespace = "ESG.MervisDataApi.Shared";
 
import "Protos/mda_types.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/duration.proto";
 
service MervisDataApiService
{
    // List of all variables that comply with request parameters.
	rpc EnumerateValueDescriptions (EnumerateValueDescriptionsRequest) returns (EnumerateValueDescriptionsResponse);
 
	// Gets values identified by ID.
	rpc GetValuesById (GetValuesByIdRequest) returns (GetValuesByIdResponse);
 
	// Gets values identified by path.
	rpc GetValuesByPath (GetValuesByPathRequest) returns (GetValuesByPathResponse);
 
	// Stream request for variable values identified by IDs.
	rpc SubscribeValuesById (SubscribeValuesByIdRequest) returns (stream Value);
 
	// Stream request for variable values identified by paths.
	rpc SubscribeValuesByPath (SubscribeValuesByPathRequest) returns (stream Value);
 
	// Sets values identified by ID.
	rpc SetValuesById (SetValuesByIdRequest) returns (SetValuesByIdResponse);
 
	// Stream request for setting values identified by ID.
	rpc StreamSetValuesById (stream StreamSetValuesByIdRequest) returns (StreamSetValuesByIdResponse);
}
 
// Name/password credentials.
message UserNameCredentials
{
	string domain_id = 1;
	string user_name = 2;
	string password = 3;
}
 
// Token credentials.
message TokenCredentials
{
	string token = 1;
}
 
// Request credentials.
message Credentials
{
	oneof identity
	{
		UserNameCredentials user_name_and_password = 1;
		TokenCredentials token = 2;
	}
}
 
// Explicit definition of path to a variable.
message Path
{
	repeated string segments = 1;
}
 
// Value of a metadata item.
message MetadataValue
{
	oneof value
	{
		bool boolean			= 10;
		sfixed64 signed_int		= 11;
		fixed64 unsigned_int	= 12;
		double float64			= 14;
		string text				= 17;
	}
}
 
// Tag item used for detailed description of a variable.
message Tag
{
	string key = 1;
	string value = 2;
}
 
// Description of a variable.
message ValueDescription
{
	string id = 1;							// ID
	MdaValueType type = 2;					// Value type, can be "unspecified". It means that the value is polymorphic
	MdaAccess access = 3;					// Kinda of access to a variable
	repeated Path paths = 5;				// All available paths where the can be found
	map<int32, MetadataValue> metadata = 6;	// Metadata. Key corresponds to MdaMetadataKey but cannot be used directly https://protobuf.dev/programming-guides/proto3/#maps
	repeated Tag tags = 7;					// Variable tags
}
 
// Definition of a variable. Requesters can assign their own IDs and the server must be able to provide values based on this ID.
message OptimizedIdDefinition
{
	string native_id = 1;			// ID as given by the server
	optional int32 numerical = 2;	// Requester defined ID
}
 
// Numericals ID is used in case of requester custom ID.
message OptimizedId
{
	oneof id
	{
		string native = 1;		// ID as given by the server
		int32 numerical = 2;	// Requester defined ID
	}
}
 
// Variable value.
message Value
{
	OptimizedId id = 1;	// ID of the value
	oneof value			// Strongly typed value
	{
		bool boolean							= 10;
		sfixed64 signed_int						= 11;
		fixed64 unsigned_int					= 12;
		float float32							= 13;
		double float64							= 14;
		google.protobuf.Timestamp date_time_utc = 15;
		google.protobuf.Duration timespan		= 16;
		string text								= 17;
	}
}
 
// Request parameters for enumerating variables.
message EnumerateValueDescriptionsRequest
{
	Credentials credentials = 1;	// Credentials
	repeated Path path_filters = 2;	// List of paths where are variables located. If the list is empty the method returns all available variables.
}
 
// Response of enumerating variables.
message EnumerateValueDescriptionsResponse
{
	MdaResponseReturnResult result = 1;			// General result
	repeated ValueDescription descriptions = 2;	// Available variables
}
 
// Request parameters for reading values of variables specified by IDs.
message GetValuesByIdRequest
{
	Credentials credentials = 1;	// Credentials
	repeated string ids = 2;		// Requested IDs
}
 
// Response of reading values of variables specified by IDs.
message GetValuesByIdResponse
{
	MdaResponseReturnResult result = 1;	// General result
	repeated Value values = 2;			// Values
}
 
// Request parameters for reading values of variables specified by paths.
message GetValuesByPathRequest
{
	Credentials credentials = 1;	// Credentials
	repeated Path paths = 2;		// Paths
}
 
// Response of reading values of variables specified by paths.
message GetValuesByPathResponse
{
	MdaResponseReturnResult result = 1;	// General result
	repeated Value values = 2;			// Values
}
 
// Request parameters for stream-reading values of variables specified by IDs.
message SubscribeValuesByIdRequest
{
	Credentials credentials = 1;			// Credentials
	repeated OptimizedIdDefinition ids = 2; // IDs
}
 
// Request parameters for stream-reading values of variables specified by Paths.
message SubscribeValuesByPathRequest
{
	Credentials credentials = 1;	// Credentials
	repeated Path paths = 2;		// Paths
}
 
// Request parameters for writing values of variables specified by IDs.
message SetValuesByIdRequest
{
	Credentials credentials = 1;	// Credentials
	repeated Value values = 2;		// Values
}
 
// Response result for individual variables. Only problematic variables are reported.
message SetValueIssue
{
	string id = 1;						// Variable ID
	SetValueErrorCode error_code = 2;	// Error code
	optional string error_message = 3;	// Error message
}
 
// Response of writing values of variables specified by IDs.
message SetValuesByIdResponse
{
	MdaResponseReturnResult result = 1;	// General result
	repeated SetValueIssue issues = 2;	// Issues
}
 
// Request parameters for stream-writing values of variables specified by IDs.
message StreamSetValuesByIdRequest
{
	optional Credentials credentials = 1;						// Last credentials are taken int account
	optional OptimizedIdDefinition optimized_id_definition = 2;	// Possible definition of custom IDs
	Value value = 3;											// Value
}
 
// Response of stream-writing values of variables specified by IDs.
message StreamSetValuesByIdResponse
{
	MdaResponseReturnResult result = 1;
}
  • © Energocentrum Plus, s.r.o. 2017 - 2024