gRPC-Streamer Plugin REST API
The following authentication types are supported:
- basic (/ufmRest) 
- token (/ufmRestV3) 
Description: Creates a session to receive REST API results from the gRPC server. After a stream or submitting a call once, the session is deleted so that the authorizations are not saved by the server.
- Call: CreateSession in the gRPC 
- Request Content Type: message SessionAuth 
- Request Data: - message SessionAuth{ string job_id= - 1; string username =- 2; string password =- 3; optional string token =- 4; }- Job_id - A unique identifier for the client 
- Username - Basic authentication username 
- Password – Basic authentication password 
- Token – The authentication token 
 
- Response content type: - message SessionRespond{ string respond= - 1; }
- Respond types: - Success – Ok. 
- ConnectionError – UFM connection error (bad parameters or UFM is down). 
- Other exceptions – Details sent in the response. 
 
- Console command: - client session --server_ip=server_ip --id=client_id --auth=username,password --token=token 
- Description: Only after the server has an established session for this gRPC client, the server adds all the requested REST APIs with intervals and delta requests. 
- Call: AddSubscriber 
- Request Content Type – Message SubscriberParams 
- Request Data: - message SubscriberParams{ message APIParams { string ufm_api_name = - 1; int32 interval =- 2; optional bool only_delta =- 3; } string job_id =- 1; repeated APIParams apiParams =- 2; }- Job_id – A unique identifier of this subscriber 
- apiParams – A list of apiParams from the message above 
- ufm_api_name – A name from the supported REST API list of names 
- interval – The interval (in seconds) between messages that the server sends in a stream run 
- only_delta – Receive the difference between the previous messages in a stream run 
 
- Response content type: - message SessionRespond{ string respond= - 1; }
- Response types: - Created user with session and added a new IP address – Ok. 
- Cannot add subscriber without an established session – need to create a session before creating a subscriber. 
- The server already has the ID – need to create a new session and a new subscriber with a unique ID. 
 
- Console command: - client create --server_ip=localhost --id=client_id --apis=events; - 40;True,links,alarms;- 10- The list of APIs is separated by commas, and the modifiers of each REST API is separated by a semi comma. 
- If the modifiers are not provided, the server uses default ones (where only_delta is False and interval is based on the API). 
 
- Description: Changes a known IP address, even if the IP address exists on the server or not. 
- Call: AddSubscriber 
- Request Content Type: Message SubscriberParams 
- Request Data: - message SubscriberParams{ message APIParams { string ufm_api_name = - 1; int32 interval =- 2; optional bool only_delta =- 3; } string job_id =- 1;- //unique identifier for this jobrepeated APIParams apiParams =- 2; }- Job_id – A unique identifier of this subscriber. 
- apiParams – The list of apiParams from the above message 
- ufm_api_name – A name from the supported REST API list of names 
- interval – The interval in seconds between messages that the server sends in a stream run 
- only_delta – Receives only the difference between the previous messages in a stream run 
 
- Response content type: - message SessionRespond{ string respond= - 1; }
- Response Types: - Created a user with a session and added a new IP address – Ok. 
- Cannot add subscriber that does not have a session – need to create a session before creating a subscriber. 
- Cannot add subscriber illegal APIs – cannot create subscriber with empty API list, call again with correct API list. 
 
- Description: Gets a list of subscribers including the requested API lists. 
- Call: ListSubscribers 
- Request Content Type: google.protobuf.Empty 
- Response: - message ListSubscriberParams{ repeated SubscriberParams subscribers = - 1; }
- Console command: server subscribes –-server_ip=server_ip 
- Description: Deletes the subscriber and session (if existing). 
- Call: DeleteSubscriber 
- Request Content Type: Message gRPCStreamerID 
- Request Data: - message gRPCStreamerID{ string job_id = - 1; }
- Response: google.protobuf.Empty 
- Description: Runs the Rest API list once for a known subscriber and returns the result in message runOnceRespond, and then deletes the subscriber session. 
- Call: RunOnceJob 
- Request Content Type: Message gRPCStreamerID 
- Request Data: - message gRPCStreamerID{ string job_id = - 1; }
- Response content type: - message runOnceRespond{ string job_id= - 1; repeated gRPCStreamerParams results =- 2; }- Job_id- A unique identifier of the first message. 
- Results – A list of gRPCStreamerParams contains the results from each REST API list. 
 
- Respond: - Job id - Cannot run a client without an established session. Empty results – no session for this client, and the client is not known to the server. 
- Job id - Cannot run a client without creating a subscriber. Empty results – a session was created for this client, but not a subscription. 
- Job_id - Could not connect to the UFM. Empty results – the gRPC server cannot connect to the UFM machine and receive empty results, because it cannot create a subscriber with an empty API list. This means that the UFM machine has a problem or is shut down. 
- Job_id - The first unique identifier of the messages, and not empty results – Ok. 
 
- Console command: - client once_id --server_ip=server_ip --id=client_id 
- Description: Runs a stream of results from the Rest API list for a known subscriber and returns the result as an iterator, where each item type is a message gRPCStreamerParams. At the end, the server deletes the session. 
- Call: RunStreamJob. 
- Request Content Type: Message gRPCStreamerID. 
- Request Data: - message gRPCStreamerID{ string job_id = - 1; }
- Response content type: iterator of messages gRPCStreamerParams: - message gRPCStreamerParams{ string message_id = - 1;- // unique identifier for messagesstring ufm_api_name =- 2;- // what rest api receive the data fromgoogle.protobuf.Timestamp timestamp =- 3;- //what time we created the message, can be converted to Datetimestring data =- 4;- // data of rest api call}
- Response: - Only one message with data – no session. 
- No message – no session and/or no subscriber with this ID. 
- Messages with interval between with the modifiers – Ok. 
 
- Console command: - client stream_id --server_ip=server_ip --id=client_id 
- Description: After the server checks it has a session for this job ID, it runs the Rest API list for a new subscriber once and returns the result in message runOnceRespond. It does not save the subscriber ID or the session in the server. 
- Call: RunOnce 
- Request Content Type: Message SubscriberParams 
- Request Data: - message SubscriberParams{ message APIParams { string ufm_api_name = - 1; int32 interval =- 2; optional bool only_delta =- 3; } string job_id =- 1;- //unique identifier for this jobrepeated APIParams apiParams =- 2; }
- Response content type: - message runOnceRespond{ string job_id= - 1; repeated gRPCStreamerParams results =- 2; }
- Response: - Job id - Cannot run a client without an established session. Empty results – no session for this client. 
- Job_id - 0 – The gRPC server cannot connect to the UFM machine and receive empty results, or it cannot create a subscriber with an empty API list. 
- Job_id - The first unique identifier of the messages. Not empty results – Ok. 
 
- Console command: - client once --server_ip=server_ip --id=client_id --auth=username,password -–token=token --apis=events; - 40;True,links;- 20;False,alarms;- 10
- The console command also creates a session for this client. 
- Either a token or basic authorization is needed. 
- Description: After the server checks it has a session for this job ID, it runs a stream of results from the Rest API list for a new subscriber and returns the result as an iterator, where each item is a message gRPCStreamerParams. At the end, it deletes the session. 
- Call: RunPeriodically 
- Request Content Type: Message SubscriberParams 
- Request Data: - message SubscriberParams{ message APIParams { string ufm_api_name = - 1; int32 interval =- 2; optional bool only_delta =- 3; } string job_id =- 1;- //unique identifier for this jobrepeated APIParams apiParams =- 2; }
- Response content type: iterator of messages gRPCStreamerParams 
- Response: - Only one message with data - Cannot run client without an established session - No session 
- Messages with intervals between with the modifiers – Ok 
 
- Console command: - client stream --server_ip=server_ip --id=client_id --auth=username,password -–token=token --apis=events; - 40;True,links;- 20;False,alarms;- 10- The console command also creates a session for the client. 
- Either a token or a basic authorization is needed. 
 
- Description: Runs a serialization for each running stream. The serialization returns results from the REST API list to each of the machines. 
- Call: Serialization 
- Request Content Type: protobuf.Empty 
- Response: google.protobuf.Empty 
- Description: Cancels running streams using the client's stream ID and stops it from outside. 
- Call: StopStream 
- Request Content Type: Message gRPCStreamerID 
- Request Data: - message gRPCStreamerID{ string job_id = - 1; }
- Response: google.protobuf.Empty 
- Description: Creates a subscription to a client identifier. All new messages that go to that client, will be copied and also sent to this stream. 
- Call: Serialization SubscribeToStream 
- Request Content Type: message gRPCStreamerID 
- Response: iterator of messages gRPCStreamerParams - message gRPCStreamerParams{ string message_id = - 1;- // unique identifier for messagesstring ufm_api_name =- 2;- // what rest api receive the data fromgoogle.protobuf.Timestamp timestamp =- 3;- //what time we created the message, can be converted to Datetimestring data =- 4;- // data of rest api call}
- The identifier may or may not be in the gRPC server. 
- Streams cannot be stopped using StopStream. 
- Console command: - client subscribe --server_ip=server_ip --id=client_id 
- Description: Get the variables of known subscriber (if found), else return empty variables. 
- Call: GetJobParams 
- Request Content Type: message gRPCStreamerID 
- Response: - message SubscriberParams{ message APIParams { string ufm_api_name = - 1;- //currently the list of api from ufm that are supported are [Jobs, Events, Links, Alarms]int32 interval =- 2; optional bool only_delta =- 3; } string job_id =- 1;- //unique identifier for this jobrepeated APIParams apiParams =- 2; }
- Description: Get help, plugin version, and information on how to interact with the server. What stages need to be done to extract the REST APIs (Session>run once/stream or Session>AddSubscriber>once_id/stream_id) 
- Call: Help or Version 
- Request Content Type: google.protobuf.Empty 
- Response: - message SessionRespond{ string respond= - 1; }