syntax = "proto3"; package quartermaster.v1; import "google/protobuf/timestamp.proto"; import "google/protobuf/struct.proto"; service QuartermasterRegistry { rpc RegisterCluster (RegisterClusterRequest) returns (RegisterClusterResponse); rpc GetCluster (GetClusterRequest) returns (GetClusterResponse); rpc ListClusters (ListClustersRequest) returns (ListClustersResponse); rpc UpdateClusterMetadata (UpdateClusterMetadataRequest) returns (UpdateClusterMetadataResponse); } message RegisterClusterRequest { string cluster_name = 1; string trust_domain = 2; string role = 3; // "authority", "delegate", "peer" string provisioned_by = 4; // optional cluster_id } message RegisterClusterResponse { string cluster_id = 1; string cluster_name = 2; string trust_domain = 3; string role = 4; google.protobuf.Timestamp provisioned_at = 5; } message GetClusterRequest { string cluster_id = 1; } message GetClusterResponse { string cluster_id = 1; string cluster_name = 2; string trust_domain = 3; string role = 4; string provisioned_by = 5; google.protobuf.Timestamp provisioned_at = 6; string rmm_endpoint = 7; google.protobuf.Struct metadata = 8; } message ListClustersRequest {} message ListClustersResponse { repeated GetClusterResponse clusters = 1; } message UpdateClusterMetadataRequest { string cluster_id = 1; google.protobuf.Struct metadata = 2; } message UpdateClusterMetadataResponse { string cluster_id = 1; google.protobuf.Struct metadata = 2; }