syntax = "proto3"; package verigraph; option java_multiple_files = true; option java_package = "io.grpc.verigraph"; option java_outer_classname = "VerigraphProto"; // The service definition. service Verigraph { // Obtains a list of graphs rpc GetGraphs (GetRequest) returns (stream GraphGrpc) {} // Obtains a graph rpc GetGraph (RequestID) returns (GraphGrpc) {} // Obtains a list of Nodes rpc GetNodes (RequestID) returns (stream NodeGrpc) {} // Obtains a node rpc GetNode (RequestID) returns (NodeGrpc) {} // Obtains a list of Neighbours rpc GetNeighbours (RequestID) returns (stream NeighbourGrpc) {} // Obtains a Neighbour rpc GetNeighbour (RequestID) returns (NeighbourGrpc) {} // Creates a graph rpc CreateGraph (GraphGrpc) returns (NewGraph) {} // Delete a graph rpc DeleteGraph (RequestID) returns (Status) {} // Updates a graph rpc UpdateGraph (GraphGrpc) returns (NewGraph) {} // Verify a policy rpc VerifyPolicy (Policy) returns (VerificationGrpc) {} // Creates a Node rpc CreateNode (NodeGrpc) returns (NewNode) {} // Delete a Node rpc DeleteNode (RequestID) returns (Status) {} // Updates a Node rpc UpdateNode (NodeGrpc) returns (NewNode) {} // Configures a Node rpc ConfigureNode (ConfigurationGrpc) returns (Status) {} // Creates a neighbour rpc CreateNeighbour (NeighbourGrpc) returns (NewNeighbour) {} // Delete a neighbour rpc DeleteNeighbour (RequestID) returns (Status) {} // Updates a neighbour rpc UpdateNeighbour (NeighbourGrpc) returns (NewNeighbour) {} } message GetRequest { } message RequestID { int64 idGraph = 1; int64 idNode = 2; int64 idNeighbour = 3; } message Policy{ int64 idGraph = 1; string source = 2; string destination = 3; enum PolicyType { reachability = 0; isolation = 1; traversal = 2; } PolicyType type = 4; string middlebox = 5; } message ConfigurationGrpc{ int64 idGraph = 1; int64 idNode = 2; string description = 3; string configuration = 4; string id = 5; } message NodeGrpc{ int64 idGraph = 1; string name = 2; int64 id = 3; //long enum FunctionalType { antispam = 0; cache = 1; dpi = 2; endhost = 3; endpoint = 4; fieldmodifier = 5; firewall = 6; mailclient = 7; mailserver = 8; nat = 9; vpnaccess = 10; vpnexit = 11; webclient = 12; webserver = 13; } FunctionalType functional_type = 4; repeated NeighbourGrpc neighbour = 5; ConfigurationGrpc configuration = 6; string errorMessage = 7; } message GraphGrpc{ int64 id = 1; //long repeated NodeGrpc node = 2; string errorMessage = 3; } message NeighbourGrpc{ int64 idGraph = 1; int64 idNode = 2; string name = 3; int64 id = 4; //long string errorMessage = 5; } message NewGraph{ bool success = 1; GraphGrpc graph = 2; string errorMessage = 3; } message NewNode{ bool success = 1; NodeGrpc node = 2; string errorMessage = 3; } message NewNeighbour{ bool success = 1; NeighbourGrpc neighbour = 2; string errorMessage = 3; } message TestGrpc { repeated NodeGrpc node = 1; string result = 2; } message VerificationGrpc{ bool successOfOperation = 1; string result = 2; string comment = 3; repeated TestGrpc test = 4; string errorMessage = 5; } message Status{ bool success = 1; string errorMessage = 2; }