Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Previous revision
Last revision Both sides next revision
playground:playground [2019/01/06 10:29]
playground:playground [2023/11/14 08:26]
m.chlupac
Line 1: Line 1:
 +====== PlayGround ======
  
 +
 +<code proto>
 +//*************************************************************************************************
 +// 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;
 +}
 +
 +
 +</code>
  • © Energocentrum Plus, s.r.o. 2017 - 2024