Files
quixos/quixos-protocol/proto/camino/api.proto
T
2026-07-15 07:52:07 -07:00

230 lines
4.7 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 ResolveEdge(ResolveEdgeRequest) returns (ResolveEdgeResponse);
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 source_ordinal = 5;
optional int32 target_ordinal = 6;
}
message AddEdgeResponse {
CaminoEdge edge = 1;
}
message ListEdgesRequest {
string object_id = 1;
}
message ListEdgesResponse {
repeated CaminoEdge edges = 1;
}
message ResolveEdgeRequest {
string object_id = 1;
string projection = 2;
}
message ResolveEdgeResponse {
repeated CaminoEdge edges = 1;
CaminoObject materialized_object = 2;
bool created = 3;
}
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;
// Legacy canonical source-side projection fields. Prefer endpoint fields.
string source_field = 5;
string cardinality = 6;
string inverse = 7;
map<string, Value> fields = 8;
optional int32 from_ordinal = 9;
string created_at = 10;
string updated_at = 11;
string from_projection = 12;
string to_projection = 13;
string from_cardinality = 14;
string to_cardinality = 15;
optional int32 to_ordinal = 16;
string directionality = 17;
}
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;
}