210 lines
4.1 KiB
Protocol Buffer
210 lines
4.1 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package camino;
|
|
|
|
import "camino/schema.proto";
|
|
import "quixos/refs.proto";
|
|
|
|
service CaminoService {
|
|
rpc RegisterSchema(RegisterSchemaRequest) returns (RegisterSchemaResponse);
|
|
rpc ListClasses(ListClassesRequest) returns (ListClassesResponse);
|
|
rpc CreateObject(CreateObjectRequest) returns (CreateObjectResponse);
|
|
rpc GetObject(GetObjectRequest) returns (GetObjectResponse);
|
|
rpc ListObjects(ListObjectsRequest) returns (ListObjectsResponse);
|
|
rpc SetField(SetFieldRequest) returns (SetFieldResponse);
|
|
rpc AddEdge(AddEdgeRequest) returns (AddEdgeResponse);
|
|
rpc ListEdges(ListEdgesRequest) returns (ListEdgesResponse);
|
|
rpc RemoveEdge(RemoveEdgeRequest) returns (RemoveEdgeResponse);
|
|
rpc ListOps(ListOpsRequest) returns (ListOpsResponse);
|
|
rpc WatchObject(WatchObjectRequest) returns (stream WatchObjectEvent);
|
|
}
|
|
|
|
message RegisterSchemaRequest {
|
|
string source_file = 1;
|
|
}
|
|
|
|
message RegisterSchemaResponse {
|
|
repeated string class_ids = 1;
|
|
repeated ClassSchema classes = 2;
|
|
}
|
|
|
|
message ListClassesRequest {}
|
|
|
|
message RegisteredClass {
|
|
string id = 1;
|
|
ClassSchema schema = 2;
|
|
}
|
|
|
|
message ListClassesResponse {
|
|
repeated RegisteredClass classes = 1;
|
|
}
|
|
|
|
message NullValue {}
|
|
|
|
message ObjectValue {
|
|
map<string, Value> fields = 1;
|
|
}
|
|
|
|
message ListValue {
|
|
repeated Value values = 1;
|
|
}
|
|
|
|
message RefValue {
|
|
string object_id = 1;
|
|
}
|
|
|
|
message CrdtValue {
|
|
string type = 1;
|
|
string encoding = 2;
|
|
bytes payload = 3;
|
|
}
|
|
|
|
message FieldValueSource {
|
|
string object_id = 1;
|
|
string field_name = 2;
|
|
string field_type = 3;
|
|
string field_storage = 4;
|
|
string conflict_strategy = 5;
|
|
uint64 revision = 6;
|
|
}
|
|
|
|
message ValueSource {
|
|
FieldValueSource field = 1;
|
|
}
|
|
|
|
message Value {
|
|
oneof kind {
|
|
NullValue null_value = 1;
|
|
bool bool_value = 2;
|
|
double number_value = 3;
|
|
string string_value = 4;
|
|
string integer_value = 5;
|
|
bytes bytes_value = 6;
|
|
ObjectValue object_value = 7;
|
|
ListValue list_value = 8;
|
|
RefValue ref_value = 9;
|
|
CrdtValue crdt_value = 10;
|
|
}
|
|
ValueSource source = 11;
|
|
}
|
|
|
|
message CreateObjectRequest {
|
|
string class_id = 1;
|
|
map<string, Value> fields = 2;
|
|
}
|
|
|
|
message CreateObjectResponse {
|
|
CaminoObject object = 1;
|
|
}
|
|
|
|
message GetObjectRequest {
|
|
string object_id = 1;
|
|
}
|
|
|
|
message GetObjectResponse {
|
|
CaminoObject object = 1;
|
|
}
|
|
|
|
message ListObjectsRequest {
|
|
string class_id = 1;
|
|
}
|
|
|
|
message ListObjectsResponse {
|
|
repeated CaminoObject objects = 1;
|
|
}
|
|
|
|
message SetFieldRequest {
|
|
string object_id = 1;
|
|
string field_name = 2;
|
|
Value value = 3;
|
|
string client_mutation_id = 4;
|
|
}
|
|
|
|
message SetFieldResponse {
|
|
CaminoObject object = 1;
|
|
}
|
|
|
|
message AddEdgeRequest {
|
|
string from_object_id = 1;
|
|
string source_field = 2;
|
|
string to_object_id = 3;
|
|
map<string, Value> fields = 4;
|
|
optional int32 ordinal = 5;
|
|
}
|
|
|
|
message AddEdgeResponse {
|
|
CaminoEdge edge = 1;
|
|
}
|
|
|
|
message ListEdgesRequest {
|
|
string object_id = 1;
|
|
}
|
|
|
|
message ListEdgesResponse {
|
|
repeated CaminoEdge edges = 1;
|
|
}
|
|
|
|
message RemoveEdgeRequest {
|
|
string edge_id = 1;
|
|
}
|
|
|
|
message RemoveEdgeResponse {
|
|
string edge_id = 1;
|
|
}
|
|
|
|
message ListOpsRequest {
|
|
string object_id = 1;
|
|
}
|
|
|
|
message ListOpsResponse {
|
|
repeated CaminoOp ops = 1;
|
|
}
|
|
|
|
message WatchObjectRequest {
|
|
string object_id = 1;
|
|
string after_op_id = 2;
|
|
bool include_snapshot = 3;
|
|
}
|
|
|
|
message WatchObjectEvent {
|
|
string object_id = 1;
|
|
CaminoObject snapshot = 2;
|
|
CaminoOp op = 3;
|
|
}
|
|
|
|
message CaminoObject {
|
|
string id = 1;
|
|
string class_id = 2;
|
|
uint32 schema_version = 3;
|
|
string created_at = 4;
|
|
string updated_at = 5;
|
|
map<string, Value> fields = 6;
|
|
map<string, uint64> field_revisions = 7;
|
|
map<string, string> field_conflicts = 8;
|
|
}
|
|
|
|
message CaminoEdge {
|
|
string id = 1;
|
|
string edge_type_id = 2;
|
|
string from_object_id = 3;
|
|
string to_object_id = 4;
|
|
string source_field = 5;
|
|
string cardinality = 6;
|
|
string inverse = 7;
|
|
map<string, Value> fields = 8;
|
|
optional int32 ordinal = 9;
|
|
string created_at = 10;
|
|
string updated_at = 11;
|
|
}
|
|
|
|
message CaminoOp {
|
|
string id = 1;
|
|
string object_id = 2;
|
|
string op_kind = 3;
|
|
Value payload = 4;
|
|
string actor = 5;
|
|
quixos.FunctionRef function_ref = 6;
|
|
string created_at = 7;
|
|
string client_mutation_id = 8;
|
|
}
|